Annotation of parser3/src/include/pa_context.h, revision 1.3
1.1 paf 1: /*
1.3 ! paf 2: $Id: pa_context.h,v 1.2 2001/02/12 11:34:11 paf Exp $
1.1 paf 3: */
4:
5: /*
6: data core
7: */
8:
9: #ifndef PA_CONTEXT_H
10: #define PA_CONTEXT_H
11:
12: #include "pa_value.h"
13:
14: typedef Value RContext;
15:
16: class WContext : public Value {
17: public:
18:
19: // appends a string to result
20: // until Value written, ignores afterwards
21: void write(String& astring);
22: // if value.string!=0 writes just string, not Value
23: // raises an error if already
24: void write(Value& avalue);
25:
26: // retrives the resulting value
27: // that can be Text if value==0 or the Value object
28: Value *value() const {
29: return value?value:new Text(string);
30: }
31:
32: public: //implement by replicating to value->calls
33:
34: virtual String *get_string() const { return &string };
35: virtual void put_string(const String *astring) { check(value)->put_string(astring); };
36:
1.3 ! paf 37: virtual Method_ref *get_method_ref() const { return check(value)->get_method_ref(); }
! 38:
1.1 paf 39: virtual Value *get_element(const String& name) const { return check(value)->get_element(name); }
40: virtual void put_element(const String& name, const Value *avalue){ check(value)->put_element(name, avalue); }
41:
1.2 paf 42: virtual Method *get_method(const String& name) const { return check(value)->get_method(name); }
1.1 paf 43:
44: private:
45: String& string;
46: Value *value;
47:
48: private:
49: // raises an exception on 0 value
50: Value *check(const Value *value);
51: };
52:
53: #endif
E-mail: