Annotation of parser3/src/types/pa_wcontext.h, revision 1.8
1.1 paf 1: /*
2: Parser
3: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.2 paf 4: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
1.1 paf 5:
1.8 ! paf 6: $Id: pa_wcontext.h,v 1.7 2001/03/16 11:10:21 paf Exp $
1.1 paf 7: */
8:
9: #ifndef PA_WCONTEXT_H
10: #define PA_WCONTEXT_H
11:
12: #include "pa_value.h"
13: #include "pa_vstring.h"
14: #include "pa_vhash.h"
15:
16: class Request;
17:
18: class WContext : public Value {
19: friend Request;
20: public: // Value
21:
22: // all: for error reporting after fail(), etc
23: const char *type() const { return "wcontext"; }
24: // WContext: accumulated fstring
25: const String *get_string() { return &fstring; };
26:
27: // WContext: none yet | transparent
1.5 paf 28: VStateless_class *get_class() { return fvalue?fvalue->get_class():0; }
1.1 paf 29: // wcontext: transparent
30: VAliased *get_aliased() { return fvalue?fvalue->get_aliased():0; }
31:
32: public: // WContext
33:
34: // appends a fstring to result
35: virtual void write(const String& astring, String::Untaint_lang lang);
1.6 paf 36:
37: // writes Value; raises an error if already
38: virtual void write(Value& avalue);
1.1 paf 39:
40: // if value is VString writes fstring,
41: // else writes Value; raises an error if already
42: virtual void write(Value& avalue, String::Untaint_lang lang);
43:
1.7 paf 44: // retrives the resulting value
45: // that can be VString if value==0 or the Value object
46: // wmethod_frame first checks for $result and if there is one, returns it instead
47: virtual Value *result() const {
48: return fvalue?fvalue:NEW VString(fstring);
49: }
50:
1.1 paf 51: public: // usage
52:
53: WContext(Pool& apool, Value *avalue, bool aconstructing) : Value(apool),
1.7 paf 54: fstring(*new(apool) String(apool)),
55: fconstructing(aconstructing), fvalue(avalue),
1.8 ! paf 56: fsomebody_entered_some_class(false),
! 57: fsomebody_entered_some_object(0){
1.1 paf 58: }
59:
60: bool constructing() { return fconstructing; }
1.4 paf 61: void set_somebody_entered_some_class() { fsomebody_entered_some_class=true; }
62: bool somebody_entered_some_class() { return fsomebody_entered_some_class; }
1.1 paf 63:
1.8 ! paf 64: void inc_somebody_entered_some_object() { fsomebody_entered_some_object++; }
! 65: int somebody_entered_some_object() { return fsomebody_entered_some_object; }
! 66:
1.1 paf 67: protected:
1.7 paf 68: String& fstring;
69: bool fconstructing; Value *fvalue;
1.1 paf 70: private:
1.4 paf 71: bool fsomebody_entered_some_class;
1.8 ! paf 72: int fsomebody_entered_some_object;
1.1 paf 73: };
74:
75: #endif
E-mail: