Annotation of parser3/src/types/pa_vxnode.h, revision 1.52
1.1 parser 1: /** @file
1.3 parser 2: Parser: @b xnode parser class decl.
1.1 parser 3:
1.52 ! moko 4: Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com)
1.50 moko 5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.1 parser 6: */
7:
8: #ifndef PA_VXNODE_H
9: #define PA_VXNODE_H
1.15 paf 10:
1.52 ! moko 11: #define IDENT_PA_VXNODE_H "$Id: pa_vxnode.h,v 1.51 2024/11/04 03:53:26 moko Exp $"
1.1 parser 12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16:
1.24 paf 17: #include "libxml/tree.h"
1.23 paf 18:
1.4 parser 19: // defines
20:
21: #define VXNODE_TYPE "xnode"
22:
23: // externals
24:
1.23 paf 25: extern Methoded* xnode_class;
1.1 parser 26:
1.30 paf 27: // forwards
28:
29: class VXdoc;
30:
1.36 paf 31: /// value of type 'xnode'. implemented with xmlNode
32: class VXnode: public VStateless_object {
1.1 parser 33: public: // Value
34:
1.23 paf 35: override const char* type() const { return VXNODE_TYPE; }
36: override VStateless_class* get_class() { return xnode_class; }
1.2 parser 37:
38: /// VXnode: true
1.23 paf 39: override bool as_bool() const { return true; }
1.2 parser 40:
1.39 misha 41: /// VXnode: true
1.42 moko 42: override Value& as_expr_result();
1.39 misha 43:
1.44 misha 44: /// VXnode: $method, fields
1.40 misha 45: override Value* get_element(const String& aname);
1.1 parser 46:
1.28 paf 47: /// VXnode: $nodeValue
1.43 moko 48: override const VJunction* put_element(const String& aname, Value* avalue);
1.28 paf 49:
1.1 parser 50: public: // usage
51:
1.36 paf 52: VXnode(xmlNode& anode) :
1.37 paf 53: fnode(anode) {}
1.1 parser 54:
1.23 paf 55: public: // VXnode
1.7 parser 56:
1.36 paf 57: virtual xmlNode& get_xmlnode() {
1.37 paf 58: return fnode;
1.1 parser 59: }
60:
1.36 paf 61: virtual VXdoc& get_vxdoc() {
1.37 paf 62: assert(fnode.doc);
63: VXdoc* result=static_cast<VXdoc*>(fnode.doc->_private);
64: assert(result);
65: return *result;
1.30 paf 66: }
67:
1.36 paf 68: Request_charsets& charsets();
69:
70: private:
1.23 paf 71:
1.37 paf 72: xmlNode& fnode;
1.1 parser 73: };
74:
75: #endif
E-mail: