Annotation of parser3/src/types/pa_vxnode.h, revision 1.43
1.1 parser 1: /** @file
1.3 parser 2: Parser: @b xnode parser class decl.
1.1 parser 3:
1.41 moko 4: Copyright (c) 2001-2012 Art. Lebedev Studio (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.43 ! moko 11: #define IDENT_PA_VXNODE_H "$Id: pa_vxnode.h,v 1.42 2012/05/23 16:26:41 moko Exp $"
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
1.42 moko 44: override Value& as_expr_result();
1.39 misha 45:
1.1 parser 46: /// VXnode: $CLASS,$method, fields
1.40 misha 47: override Value* get_element(const String& aname);
1.1 parser 48:
1.28 paf 49: /// VXnode: $nodeValue
1.43 ! moko 50: override const VJunction* put_element(const String& aname, Value* avalue);
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: