Annotation of parser3/src/types/pa_value.C, revision 1.6
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.6 ! paf 8: static const char* IDENT_VALUE_C="$Date: 2002/09/10 12:02:24 $";
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(
1.6 ! paf 16: Value *self, const String& actual_name, Array *actual_numbered_params) const {
1.1 paf 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)",
1.6 ! paf 23: self?self->get_class()->name_cstr():"<unknown class>",
! 24: self?self->type():"<unknown type>",
1.1 paf 25: min_numbered_params_count,
26: actual_count);
27:
28: }
1.4 paf 29:
30: Junction::Junction(Pool& apool,
1.6 ! paf 31: Value *aself,
1.4 paf 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: