Annotation of parser3/src/types/pa_vtable.h, revision 1.4
1.1 paf 1: /*
2: Parser
3: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
4: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
5:
1.4 ! paf 6: $Id: pa_vtable.h,v 1.3 2001/03/12 21:54:21 paf Exp $
1.1 paf 7: */
8:
9: #ifndef PA_VTABLE_H
10: #define PA_VTABLE_H
11:
12: #include "pa_vstateless_object.h"
13: #include "pa_table.h"
14: #include "_table.h"
15: #include "pa_vunknown.h"
16:
17: class VTable : public VStateless_object {
18: public: // Value
19:
20: // all: for error reporting after fail(), etc
21: const char *type() const { return "table"; }
1.4 ! paf 22: // table: ftable
! 23: // const Table *get_table() { return &ftable; };
1.1 paf 24: // table: itself
25: VTable *get_vtable() { return this; }
26: // table: column
27: Value *get_element(const String& name) {
1.3 paf 28: // methods
1.2 paf 29: if(Value *result=VStateless_object::get_element(name))
30: return result;
31:
1.4 ! paf 32: if(ftable)
! 33: if(const String *string=ftable->item(name))
1.1 paf 34: return NEW VString(*string);
35:
36: return NEW VUnknown(pool());
37: }
38:
39: public: // usage
40:
41: VTable(Pool& apool) : VStateless_object(apool, *table_class),
1.4 ! paf 42: ftable(0) {
1.1 paf 43: }
1.4 ! paf 44: void set_table(Table& avalue) { ftable=&avalue; }
1.1 paf 45: Table& table() {
1.4 ! paf 46: if(!ftable)
1.1 paf 47: bark("getting unset vtable value");
48:
1.4 ! paf 49: return *ftable;
1.1 paf 50: }
51:
52: private:
53:
1.4 ! paf 54: Table *ftable;
1.1 paf 55:
56: };
57:
58: #endif
E-mail: