--- parser3/src/include/Attic/pa_value.h 2001/02/25 08:50:12 1.29 +++ parser3/src/include/Attic/pa_value.h 2001/03/06 14:09:35 1.38 @@ -1,5 +1,5 @@ /* - $Id: pa_value.h,v 1.29 2001/02/25 08:50:12 paf Exp $ + $Id: pa_value.h,v 1.38 2001/03/06 14:09:35 paf Exp $ */ /* @@ -15,15 +15,13 @@ //#include "pa_voperator.h" #define NAME_NAME "NAME" -#define PARENTS_NAME "PARENTS" -#define STATIC_NAME "STATIC" -#define STATICS_NAME "STATICS" class Value; class VClass; //class VOperator; class Junction; class WContext; +class VAliased; class Method : public Pooled { public: @@ -59,14 +57,14 @@ public: Junction(Pool& apool, Value& aself, - Method *amethod, + VClass *avclass, Method *amethod, Value *aroot, Value *arcontext, WContext *awcontext, const Array *acode) : Pooled(apool), self(aself), - method(amethod), + vclass(avclass), method(amethod), root(aroot), rcontext(arcontext), wcontext(awcontext), @@ -74,7 +72,7 @@ public: } Value& self; - Method *method; + VClass *vclass; Method *method; Value *root; Value *rcontext; WContext *wcontext; @@ -86,16 +84,21 @@ public: // Value // all: for error reporting after fail(), etc virtual const char *type() const =0; - /*const*/ String *name() const { return fname; } + /*const*/ String& name() const { return *fname; } // string: value // unknown: "" + // double: value // others: 0 virtual String *get_string() { return 0; } // string: value virtual void put_string(String *astring) { failed("storing string to '%s'"); } + // string: value + // double: value + virtual double get_double() { failed("getting numerical value of '%s'"); return 0; } + // junction: auto_calc,root,self,rcontext,wcontext, code virtual Junction *get_junction() { return 0; } @@ -103,25 +106,26 @@ public: // Value // object_class: (field)=STATIC.value;(STATIC)=hash;(method)=method_ref with self=object_class // object_instance: (field)=value;(CLASS)=vclass;(method)=method_ref // operator_class: (field)=value - static values only - // wcontext: transparent - // frame: my or self_transparent // codeframe: wcontext_transparent + // methodframe: my or self_transparent virtual Value *get_element(const String& name) { failed("type is '%s', can not get element from it"); return 0; } // hash: (key)=value // object_class, operator_class: (field)=value - static values only // object_instance: (field)=value - // wcontext: transparent - // frame: my or self_transparent // codeframe: wcontext_transparent + // methodframe: my or self_transparent virtual void put_element(const String& name, Value *value) { failed("type is '%s', can not put element to it"); } // object_class, object_instance: object_class - // frame: transparent - // wcontext: transparent - // codeframe: wcontext_transparent + // wcontext: none yet | transparent virtual VClass *get_class() { return 0; } + // valiased: this + // wcontext: transparent + // methodframe: self_transparent + virtual VAliased *get_aliased() { return 0; } + public: // usage Value(Pool& apool) : Pooled(apool), fname(new(apool) String(apool)) {