Annotation of parser3/src/types/pa_vxnode.h, revision 1.22.2.6.2.8
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.8! paf 11: static const char* IDENT_VXNODE_H="$Date: 2003/04/02 09:32:12 $";
1.1 parser 12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16:
1.22.2.6.2.6 paf 17: extern "C" {
18: #include "gdomecore/gdome-xml-node.h"
19: #include "gdomecore/gdome-xml-document.h"
20: };
21:
1.4 parser 22: // defines
23:
24: #define VXNODE_TYPE "xnode"
25:
1.22.2.6.2.6 paf 26: // helper defines
27:
1.22.2.6.2.8! paf 28: #define gdome_xml_doc_get_xmlDoc(dome_doc) (((_Gdome_xml_Document *)dome_doc)->n)
1.22.2.6.2.6 paf 29:
1.4 parser 30: // externals
31:
1.22.2.6.2.3 paf 32: extern Methoded* xnode_class;
1.1 parser 33:
1.9 paf 34: /// value of type 'xnode'. implemented with GdomeNode
1.22.2.6.2.5 paf 35: class VXnode: public VStateless_object, PA_Cleaned {
1.1 parser 36: public: // Value
37:
1.22.2.4 paf 38: override const char* type() const { return VXNODE_TYPE; }
1.22.2.6.2.3 paf 39: override VStateless_class* get_class() { return xnode_class; }
1.2 parser 40:
41: /// VXnode: true
1.22.2.4 paf 42: override bool as_bool() const { return true; }
1.2 parser 43:
44: /// VXnode: true
1.22.2.6.2.7 paf 45: override Value& as_expr_result(bool return_string_as_is=false) { return *new VBool(as_bool()); }
1.1 parser 46:
47: /// VXnode: $CLASS,$method, fields
1.22.2.6.2.3 paf 48: override Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1 parser 49:
50: public: // usage
51:
1.22.2.6.2.4 paf 52: VXnode(Request_charsets* acharsets, GdomeNode* anode) :
1.22.2.6 paf 53: fcharsets(acharsets),
1.10 paf 54: fnode(anode/*not adding ref, owning a node*/) {
1.1 parser 55: }
1.22.2.4 paf 56:
57: override ~VXnode() {
1.9 paf 58: GdomeException exc;
59: if(fnode)
60: gdome_n_unref(fnode, &exc);
1.7 parser 61: }
1.1 parser 62:
1.22.2.4 paf 63: public: // VXnode
64:
1.22.2.6.2.6 paf 65: /// @todo register disappearing link to parent object?
1.22.2.6.2.4 paf 66: void set_node(Request_charsets* acharsets, GdomeNode* anode, bool aowns_node) {
1.22.2.4 paf 67: fcharsets=acharsets;
68:
1.9 paf 69: GdomeException exc;
70: if(fnode)
71: gdome_n_unref(fnode, &exc);
1.7 parser 72:
1.9 paf 73: gdome_n_ref(fnode=anode, &exc);
1.7 parser 74: }
1.1 parser 75:
1.22.2.6.2.5 paf 76: virtual GdomeNode* get_node() {
1.1 parser 77: if(!fnode)
1.22.2.6.2.2 paf 78: throw Exception(0,
1.22.2.6.2.5 paf 79: 0,
1.1 parser 80: "can not be applied to uninitialized instance");
1.5 parser 81:
1.9 paf 82: return fnode;
1.1 parser 83: }
84:
1.22.2.6 paf 85: protected:
1.1 parser 86:
1.22.2.4 paf 87: Request_charsets* fcharsets;
1.22.2.6 paf 88:
89: private:
90:
91: GdomeNode* fnode;
1.1 parser 92: };
93:
94: #endif
E-mail: