--- parser3/src/include/Attic/pa_value.h 2001/03/08 16:54:25 1.46 +++ parser3/src/include/Attic/pa_value.h 2001/03/10 11:44:31 1.49 @@ -1,5 +1,6 @@ + /* - $Id: pa_value.h,v 1.46 2001/03/08 16:54:25 paf Exp $ + $Id: pa_value.h,v 1.49 2001/03/10 11:44:31 paf Exp $ */ /* @@ -12,6 +13,8 @@ #include "pa_pool.h" #include "pa_string.h" #include "pa_array.h" +#include "pa_exception.h" +#include "core.h" #define NAME_NAME "NAME" @@ -22,13 +25,13 @@ class WContext; class VAliased; class Request; -typedef void (*Native_code_ptr)(Request& request, Array& params); +typedef void (*Native_code_ptr)(Request& request, Array *params); class Method : public Pooled { public: const String& name; // either numbered params // for native-code methods = operators - int numbered_params_count; + int min_numbered_params_count, max_numbered_params_count; // or named params&locals // for parser-code methods Array *params_names; Array *locals_names; // the Code @@ -37,16 +40,27 @@ public: Method( Pool& apool, const String& aname, - int anumbered_params_count, + int amin_numbered_params_count, int amax_numbered_params_count, Array *aparams_names, Array *alocals_names, const Array *aparser_code, Native_code_ptr anative_code) : Pooled(apool), name(aname), - numbered_params_count(anumbered_params_count), + min_numbered_params_count(amin_numbered_params_count), + max_numbered_params_count(amax_numbered_params_count), params_names(aparams_names), locals_names(alocals_names), parser_code(aparser_code), native_code(anative_code) { } + + void check_actual_numbered_params(Array *actual_numbered_params) { + int actual_count=actual_numbered_params?actual_numbered_params->size():0; + if(actual_count2) it would'nt become "FALSE" string which is 'true' // others: 0 - virtual String *get_string() { return 0; } + virtual const String *get_string() { return 0; } // string: value // double: value + // integer: finteger // bool: value virtual double get_double() { failed("getting numerical value of '%s'"); return 0; } @@ -141,14 +160,13 @@ public: // Value public: // usage - Value(Pool& apool) : Pooled(apool), fname(new(apool) String(apool)) { - fname->APPEND_CONST("unnamed"); + Value(Pool& apool) : Pooled(apool), fname(unnamed_name) { } - void set_name(String& aname) { fname=&aname; } + void set_name(const String& aname) { fname=&aname; } - String& as_string() { - String *result=get_string(); + const String& as_string() { + const String *result=get_string(); if(!result) failed("getting string of '%s'"); return *result; @@ -156,7 +174,7 @@ public: // usage private: - String *fname; + const String *fname; private: