Annotation of parser3/src/types/pa_vjunction.h, revision 1.25
1.3 paf 1: /** @file
1.4 paf 2: Parser: @b junction class decl.
1.3 paf 3:
1.24 paf 4: Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com)
1.12 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 paf 6: */
7:
8: #ifndef PA_VJUNCTION_H
9: #define PA_VJUNCTION_H
1.14 paf 10:
1.25 ! misha 11: static const char * const IDENT_VJUNCTION_H="$Date: 2005/08/09 08:14:54 $";
1.20 paf 12:
13: // include
1.1 paf 14:
15: #include "pa_value.h"
1.20 paf 16: #include "pa_junction.h"
1.1 paf 17:
1.4 paf 18: /// junction is method+self+context, implemented with Junction
1.20 paf 19: class VJunction: public Value {
1.1 paf 20: public: // VJunction
21:
1.20 paf 22: override const char* type() const { return "junction"; }
1.13 paf 23:
24: /// VJunction: 0
1.20 paf 25: override VStateless_class *get_class() { return 0; }
1.8 parser 26:
1.18 paf 27: /// VJunction: false
1.20 paf 28: override bool is_defined() const { return false; }
1.8 parser 29:
1.18 paf 30: /// VJunction: false
1.20 paf 31: override bool as_bool() const { return is_defined(); }
1.18 paf 32:
33: /// VJunction: false
1.25 ! misha 34: override Value& as_expr_result(bool);
1.1 paf 35:
1.5 paf 36: /// VJunction: method, root,self,rcontext, code
1.23 paf 37: override Junction* get_junction() { return &fjunction; }
1.1 paf 38:
39: public: // usage
40:
1.23 paf 41: /// Code-Junction constructor
42: VJunction(Value& aself,
43: const Method* amethod,
44: VMethodFrame* amethod_frame,
45: Value* arcontext,
46: WContext* awcontext,
47: ArrayOperation* acode): fjunction(aself, amethod, amethod_frame, arcontext, awcontext, acode) {}
48:
49: /// Method-Junction or Getter-Junction constructor
50: VJunction(Value& aself,
51: const Method* amethod,
52: bool ais_getter=false): fjunction(aself, amethod, ais_getter) {}
53:
54: const Junction& junction() const { return fjunction; }
1.1 paf 55:
56: private:
57:
1.23 paf 58: Junction fjunction;
1.1 paf 59: };
60:
61:
62: #endif
E-mail: