Annotation of parser3/src/types/pa_vstateless_object.h, revision 1.5
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.5 ! paf 8: $Id: pa_vstateless_object.h,v 1.4 2001/03/19 19:17:47 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.5 ! paf 18: /**
! 19: the object of some class.
! 20:
! 21: "of some class" means "with some methods".
! 22: */
1.1 paf 23: class VStateless_object : public VAliased {
24: public: // Value
25:
1.4 paf 26: /// VStateless_object: fclass_real
27: VStateless_class *get_class() { return &fclass_real; }
28:
29: /// VStateless_object: (CLASS)=vclass;(BASE)=base;(method)=method_ref
1.1 paf 30: Value *get_element(const String& name) {
31: // $CLASS=my class
32: if(name==CLASS_NAME)
33: return fclass_alias;
34: // $BASE=my parent
35: if(name==BASE_NAME)
36: return fclass_alias->base();
37: // $method=junction(self+class+method)
38: if(Junction *junction=fclass_real.get_junction(*this, name))
1.3 paf 39: return NEW VJunction(*junction);
1.1 paf 40: return 0;
41: }
42:
43: public: // creation
44:
1.2 paf 45: VStateless_object(Pool& apool, VStateless_class& aclass_real) :
46: VAliased(apool, aclass_real),
47:
1.1 paf 48: fclass_real(aclass_real) {
49: }
50:
51: private:
52:
1.2 paf 53: VStateless_class& fclass_real;
1.1 paf 54: };
55:
56: #endif
E-mail: