--- parser3/src/include/Attic/pa_value.h 2001/02/11 19:35:38 1.1 +++ parser3/src/include/Attic/pa_value.h 2001/02/14 14:15:36 1.7 @@ -1,5 +1,5 @@ /* - $Id: pa_value.h,v 1.1 2001/02/11 19:35:38 paf Exp $ + $Id: pa_value.h,v 1.7 2001/02/14 14:15:36 paf Exp $ */ /* @@ -14,26 +14,45 @@ class Method { public: Array param_names; + Array local_names; String code; }; +class Operator : public Method { + // operator module static vars stored in there + Operator_class *self; +}; + +class Method_ref { +public: + Value *self; + Method& method; +}; + class Value { public: // text: value virtual String *get_string() const =0; virtual String *put_string(const String *astring)=0; + // method_ref: "self" part, method + virtual Method_ref *get_method_ref() const =0; + // hash: (key)=value - // object_class: (field)=STATIC.value;(STATIC)=hash;(method)=method_ref with this=object_class + // object_class: (field)=STATIC.value;(STATIC)=hash;(method)=method_ref with self=object_class // object_instance: (field)=value;(STATIC)=hash;(method)=method_ref + // operator_class: (field)=value - static values only virtual Value *get_element(const String& name) const =0; virtual Value *put_element(const String& name, const Value *avalue)=0; // object_instance, object_class: method - virtual Method* get_method(const String& name) const =0; + virtual Method *get_method(const String& name) const =0; - // method_ref: "self" part, method - virtual Value *get_self&method() const =0; + // object_class, object_instance: object_class + virtual Class *get_class() const =0; + + // object_class: true when this class is derived from 'parent' + virtual bool has_parent(Class *aparent) const =0; }; /* @@ -43,8 +62,8 @@ descendants: table:+ columns_order:Array, columns:Hash, rows:Array object_class:+ STATIC:Hash, methods:Hash object_instance:+ object_class, fields:Hash - method_ref:+ this:Value/object_class, method:String - method_this_n_params:+ this:Value/object_class[1st try], params&values:Hash[2nd try] + method_ref:+ self:Value/object_class, method:String + method_self_n_params_n_locals:+ self:Value/object_class[1st try], params_locals&values:Hash[2nd try] */