Annotation of parser3/src/types/pa_value.C, revision 1.9

1.1       paf         1: /** @file
                      2:        Parser: Value class.
                      3: 
1.9     ! paf         4:        Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com)
1.1       paf         5:        Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.2       paf         6: */
1.1       paf         7: 
1.9     ! paf         8: static const char* IDENT_VALUE_C="$Date: 2002/09/17 16:46:25 $";
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.8       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.8       paf        23:                                self.get_class()->name_cstr(),
                     24:                                self.type(),
1.1       paf        25:                                min_numbered_params_count,
                     26:                                actual_count);
                     27: 
                     28: }
1.4       paf        29: 
                     30: Junction::Junction(Pool& apool,
1.8       paf        31:        Value& aself,
1.7       paf        32:        const Method *amethod,
1.4       paf        33:        VMethodFrame *amethod_frame,
                     34:        Value *arcontext,
                     35:        WContext *awcontext,
                     36:        const Array *acode) : Pooled(apool),
                     37:        
                     38:        self(aself),
1.7       paf        39:        method(amethod),
1.4       paf        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: