Annotation of parser3/src/types/pa_vxnode.h, revision 1.38
1.1 parser 1: /** @file
1.3 parser 2: Parser: @b xnode parser class decl.
1.1 parser 3:
1.35 paf 4: Copyright (c) 2001-2005 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.38 ! misha 11: static const char * const IDENT_VXNODE_H="$Date: 2005/12/16 14:48:22 $";
1.1 parser 12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16:
1.23 paf 17: extern "C" {
1.24 paf 18: #include "libxml/tree.h"
1.23 paf 19: };
20:
1.4 parser 21: // defines
22:
23: #define VXNODE_TYPE "xnode"
24:
25: // externals
26:
1.23 paf 27: extern Methoded* xnode_class;
1.1 parser 28:
1.30 paf 29: // forwards
30:
31: class VXdoc;
32:
1.36 paf 33: /// value of type 'xnode'. implemented with xmlNode
34: class VXnode: public VStateless_object {
1.1 parser 35: public: // Value
36:
1.23 paf 37: override const char* type() const { return VXNODE_TYPE; }
38: override VStateless_class* get_class() { return xnode_class; }
1.2 parser 39:
40: /// VXnode: true
1.23 paf 41: override bool as_bool() const { return true; }
1.2 parser 42:
1.1 parser 43: /// VXnode: $CLASS,$method, fields
1.23 paf 44: override Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1 parser 45:
1.28 paf 46: /// VXnode: $nodeValue
1.34 paf 47: override const VJunction* put_element(Value& self, const String& aname, Value* avalue, bool replace);
1.28 paf 48:
1.1 parser 49: public: // usage
50:
1.36 paf 51: VXnode(xmlNode& anode) :
1.37 paf 52: fnode(anode) {}
1.1 parser 53:
1.23 paf 54: public: // VXnode
1.7 parser 55:
1.36 paf 56: virtual xmlNode& get_xmlnode() {
1.37 paf 57: return fnode;
1.1 parser 58: }
59:
1.36 paf 60: virtual VXdoc& get_vxdoc() {
1.37 paf 61: assert(fnode.doc);
62: VXdoc* result=static_cast<VXdoc*>(fnode.doc->_private);
63: assert(result);
64: return *result;
1.30 paf 65: }
66:
1.36 paf 67: Request_charsets& charsets();
68:
69: private:
1.23 paf 70:
1.37 paf 71: xmlNode& fnode;
1.1 parser 72: };
73:
74: #endif
E-mail: