Annotation of parser3/src/types/pa_vstateless_object.h, revision 1.6
1.5 paf 1: /** @file
2: Parser: stateless object decl.
3:
1.1 paf 4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.5 paf 5:
1.1 paf 6: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
7:
1.6 ! paf 8: $Id: pa_vstateless_object.h,v 1.5 2001/03/19 21:39:37 paf Exp $
1.1 paf 9: */
10:
11: #ifndef PA_VSTATELESS_OBJECT_H
12: #define PA_VSTATELESS_OBJECT_H
13:
14: #include "pa_valiased.h"
15: #include "pa_vjunction.h"
16: #include "pa_vclass.h"
17:
1.6 ! paf 18: /** the object of some class.
1.5 paf 19:
1.6 ! paf 20: "of some class" means "with some set of methods".
1.5 paf 21: */
1.1 paf 22: class VStateless_object : public VAliased {
23: public: // Value
24:
1.4 paf 25: /// VStateless_object: fclass_real
26: VStateless_class *get_class() { return &fclass_real; }
27:
28: /// VStateless_object: (CLASS)=vclass;(BASE)=base;(method)=method_ref
1.1 paf 29: Value *get_element(const String& name) {
30: // $CLASS=my class
31: if(name==CLASS_NAME)
32: return fclass_alias;
33: // $BASE=my parent
34: if(name==BASE_NAME)
35: return fclass_alias->base();
36: // $method=junction(self+class+method)
37: if(Junction *junction=fclass_real.get_junction(*this, name))
1.3 paf 38: return NEW VJunction(*junction);
1.1 paf 39: return 0;
40: }
41:
42: public: // creation
43:
1.2 paf 44: VStateless_object(Pool& apool, VStateless_class& aclass_real) :
45: VAliased(apool, aclass_real),
46:
1.1 paf 47: fclass_real(aclass_real) {
48: }
49:
50: private:
51:
1.2 paf 52: VStateless_class& fclass_real;
1.1 paf 53: };
54:
55: #endif
E-mail: