--- parser3/src/include/Attic/pa_vclass.h 2001/02/21 16:11:49 1.1 +++ parser3/src/include/Attic/pa_vclass.h 2001/02/24 08:28:35 1.9 @@ -1,61 +1,42 @@ /* - $Id: pa_vclass.h,v 1.1 2001/02/21 16:11:49 paf Exp $ -*/ - -/* - data core + $Id: pa_vclass.h,v 1.9 2001/02/24 08:28:35 paf Exp $ */ #ifndef PA_VCLASS_H #define PA_VCLASS_H #include "pa_value.h" -///#include "pa_vhash.h" -class VHash { -public: - VHash(Pool& apool, Hash& hash) {} -}; +#include "pa_vhash.h" +#include "pa_vjunction.h" class VClass : public Value { public: // Value // all: for error reporting after fail(), etc - const char *get_type() const { return "Class"; } - - // object_class: [class classname] - virtual String *get_string() const { - String *result=new(pool()) String(pool()); - result->APPEND("[class ", 0, 0, 0); - result->APPEND(name().cstr(), 0, 0, 0); - result->APPEND("]", 0, 0, 0); - return result; - } + const char *type() const { return "Class"; } // object_class: (field)=STATIC.value;(STATIC)=hash;(method)=method_ref with self=object_class - virtual Value *get_element(const String& name) const { + Value *get_element(const String& name) { // $STATIC=STATIC hash if(name==STATIC_NAME) - return 0;//new(pool()) VHash(pool(), STATIC); + return &STATIC; - // $field=STATIC.field - Value *result=static_cast(STATIC.get(name)); - if(!result) { - // $method=VMethod_ref - if(Method *method=get_method(name)) - result=0;///new(pool()) VMethod_ref(this, method); + // $method=junction(this+method) + if(Method *method=static_cast(methods.get(name))) { + Junction& j=*NEW Junction(pool(), + method, + this,0,0,0); + + return NEW VJunction(j); } - return result; + // $field=STATIC.field + return STATIC.get_element(name); } // object_class, operator_class: (field)=value - static values only - virtual void put_element(const String& name, Value *value) { - STATIC.put(name, value); - } - - // object_instance, object_class: method - Method *get_method(const String& name) const { - return static_cast(methods.get(name)); + void put_element(const String& name, Value *value) { + STATIC.put_element(name, value); } // object_class, object_instance: object_class @@ -82,7 +63,7 @@ public: // creation methods(apool), parents(apool), parents_hash(apool) { - // monkey immediate_parents + // TODO: monkey immediate_parents // fill parents & parents_hash } @@ -99,21 +80,9 @@ public: // creation private: String *fname; - Hash STATIC; + VHash STATIC; Hash methods; Array parents; Hash parents_hash; }; -/* -descendants: - text:+ value:String - hash:+ keys&values:Hash - table:+ columns_order:Array, columns:Hash, rows:Array - object_class:+ STATIC:Hash, methods:Hash - object_instance:+ object_class, fields:Hash - 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] - junction:+ self:Value, code:String -*/ - #endif