Annotation of parser3/src/types/pa_value.C, revision 1.5
1.1 paf 1: /** @file
2: Parser: Value class.
3:
4: Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.2 paf 6: */
1.1 paf 7:
1.5 ! paf 8: static const char* IDENT_VALUE_C="$Date: 2002/08/29 12:22:48 $";
1.1 paf 9:
10: #include "pa_value.h"
11: #include "pa_vstateless_class.h"
1.4 paf 12: #include "pa_vmethod_frame.h"
1.1 paf 13:
14: /// call this before invoking to ensure proper actual numbered params count
15: void Method::check_actual_numbered_params(
16: Value& self, const String& actual_name, Array *actual_numbered_params) const {
17:
18: int actual_count=actual_numbered_params?actual_numbered_params->size():0;
19: if(actual_count<min_numbered_params_count) // not proper count? bark
20: throw Exception("parser.runtime",
21: &actual_name,
22: "native method of %s (%s) accepts minimum %d parameter(s) (%d present)",
23: self.get_class()->name_cstr(),
24: self.type(),
25: min_numbered_params_count,
26: actual_count);
27:
28: }
1.4 paf 29:
30: Junction::Junction(Pool& apool,
31: Value& aself,
32: VStateless_class *avclass, const Method *amethod,
33: VMethodFrame *amethod_frame,
34: Value *arcontext,
35: WContext *awcontext,
36: const Array *acode) : Pooled(apool),
37:
38: self(aself),
39: vclass(avclass), method(amethod),
40: method_frame(amethod_frame),
41: rcontext(arcontext),
42: wcontext(awcontext),
43: code(acode) {
1.5 ! paf 44: if(wcontext)
! 45: wcontext->attach_junction(*this);
1.4 paf 46: }
47:
1.5 ! paf 48: void Junction::reattach(WContext *new_wcontext) {
! 49: if(new_wcontext)
! 50: wcontext=new_wcontext;
! 51: else {
! 52: method_frame=0;
! 53: rcontext=0;
! 54: wcontext=0;
! 55: }
1.4 paf 56: }
57:
58: /*
59: void Junction::change_context(Junction *source) {
60: if(source) {
61: method_frame=source->method_frame;
62: rcontext=source->rcontext;
63: wcontext=source->wcontext;
64: } else {
65: method_frame=rcontext=0;
66: wcontext=0;
67: }
68: }
69: */
70:
E-mail: