Annotation of parser3/src/types/pa_vxnode.h, revision 1.39
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.39 ! misha 11: static const char * const IDENT_VXNODE_H="$Date: 2007/02/03 18:08:39 $";
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.39 ! misha 43: /// VXnode: true
! 44: override Value& as_expr_result(bool /*return_string_as_is=false*/);
! 45:
1.1 parser 46: /// VXnode: $CLASS,$method, fields
1.23 paf 47: override Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1 parser 48:
1.28 paf 49: /// VXnode: $nodeValue
1.34 paf 50: override const VJunction* put_element(Value& self, const String& aname, Value* avalue, bool replace);
1.28 paf 51:
1.1 parser 52: public: // usage
53:
1.36 paf 54: VXnode(xmlNode& anode) :
1.37 paf 55: fnode(anode) {}
1.1 parser 56:
1.23 paf 57: public: // VXnode
1.7 parser 58:
1.36 paf 59: virtual xmlNode& get_xmlnode() {
1.37 paf 60: return fnode;
1.1 parser 61: }
62:
1.36 paf 63: virtual VXdoc& get_vxdoc() {
1.37 paf 64: assert(fnode.doc);
65: VXdoc* result=static_cast<VXdoc*>(fnode.doc->_private);
66: assert(result);
67: return *result;
1.30 paf 68: }
69:
1.36 paf 70: Request_charsets& charsets();
71:
72: private:
1.23 paf 73:
1.37 paf 74: xmlNode& fnode;
1.1 parser 75: };
76:
77: #endif
E-mail: