Annotation of parser3/src/types/pa_vxnode.h, revision 1.22.2.6.2.2
1.1 parser 1: /** @file
1.3 parser 2: Parser: @b xnode parser class decl.
1.1 parser 3:
1.22.2.1 paf 4: Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
1.12 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 parser 6: */
7:
8: #ifndef PA_VXNODE_H
9: #define PA_VXNODE_H
1.15 paf 10:
1.22.2.6.2.2! paf 11: static const char* IDENT_VXNODE_H="$Date: 2003/03/18 15:14:22 $";
1.1 parser 12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16:
1.4 parser 17: // defines
18:
19: #define VXNODE_TYPE "xnode"
20:
21: // externals
22:
1.22.2.5 paf 23: extern MethodedPtr xnode_class;
1.1 parser 24:
1.9 paf 25: /// value of type 'xnode'. implemented with GdomeNode
1.22.2.3 paf 26: class VXnode: public VStateless_object {
1.1 parser 27: public: // Value
28:
1.22.2.4 paf 29: override const char* type() const { return VXNODE_TYPE; }
1.22.2.5 paf 30: override VStateless_class* get_class() { return xnode_class.get(); }
1.2 parser 31:
32: /// VXnode: true
1.22.2.4 paf 33: override bool as_bool() const { return true; }
1.2 parser 34:
35: /// VXnode: true
1.22.2.4 paf 36: override ValuePtr as_expr_result(bool return_string_as_is=false) { return ValuePtr(new VBool(as_bool())); }
1.1 parser 37:
38: /// VXnode: $CLASS,$method, fields
1.22.2.6.2.1 paf 39: override ValuePtr get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1 parser 40:
41: public: // usage
42:
1.22.2.6.2.1 paf 43: VXnode( Request_charsets* acharsets, GdomeNode* anode) :
44: fpool(),
1.22.2.6 paf 45: fcharsets(acharsets),
1.10 paf 46: fnode(anode/*not adding ref, owning a node*/) {
1.1 parser 47: }
1.22.2.4 paf 48:
49: override ~VXnode() {
1.9 paf 50: GdomeException exc;
51: if(fnode)
52: gdome_n_unref(fnode, &exc);
1.7 parser 53: }
1.1 parser 54:
1.22.2.4 paf 55: public: // VXnode
56:
1.22.2.6.2.1 paf 57: void set_node( Request_charsets* acharsets, GdomeNode* anode, bool aowns_node) {
1.22.2.4 paf 58: fpool=apool;
59: fcharsets=acharsets;
60:
1.9 paf 61: GdomeException exc;
62: if(fnode)
63: gdome_n_unref(fnode, &exc);
1.7 parser 64:
1.9 paf 65: gdome_n_ref(fnode=anode, &exc);
1.7 parser 66: }
1.1 parser 67:
1.22.2.6.2.1 paf 68: virtual GdomeNode* get_node(const String* source) {
1.1 parser 69: if(!fnode)
1.22.2.6.2.2! paf 70: throw Exception(0,
1.1 parser 71: source,
72: "can not be applied to uninitialized instance");
1.5 parser 73:
1.9 paf 74: return fnode;
1.1 parser 75: }
76:
1.22.2.6 paf 77: protected:
1.1 parser 78:
1.22.2.4 paf 79: Pool* fpool;
80: Request_charsets* fcharsets;
1.22.2.6 paf 81:
82: private:
83:
84: GdomeNode* fnode;
1.1 parser 85: };
86:
87: #endif
E-mail: