Annotation of parser3/src/types/pa_vxnode.h, revision 1.36
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.36 ! paf 11: static const char * const IDENT_VXNODE_H="$Date: 2005/08/09 08:14:56 $";
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:
43: /// VXnode: true
1.26 paf 44: override Value& as_expr_result(bool /*return_string_as_is=false*/) { return *new VBool(as_bool()); }
1.1 parser 45:
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() :
! 55: fnode(0) {}
1.9 paf 56:
1.36 ! paf 57: VXnode(xmlNode& anode) :
! 58: fnode(&anode) {}
1.1 parser 59:
1.23 paf 60: public: // VXnode
1.7 parser 61:
1.36 ! paf 62: virtual xmlNode& get_xmlnode() {
1.1 parser 63: if(!fnode)
1.13 paf 64: throw Exception(0,
1.23 paf 65: 0,
1.1 parser 66: "can not be applied to uninitialized instance");
1.5 parser 67:
1.36 ! paf 68: return *fnode;
1.1 parser 69: }
70:
1.36 ! paf 71: virtual VXdoc& get_vxdoc() {
! 72: return get_internal_vxdoc();
1.30 paf 73: }
74:
1.36 ! paf 75: Request_charsets& charsets();
! 76:
! 77: private:
1.23 paf 78:
1.36 ! paf 79: VXdoc& get_internal_vxdoc() {
! 80: throw Exception(0,0,"todo: VXdoc(fnode->doc->_private)");
! 81: //return *(VXdoc*)0;
! 82: }
1.23 paf 83:
1.1 parser 84: private:
85:
1.36 ! paf 86: xmlNode* fnode;
1.1 parser 87: };
88:
89: #endif
E-mail: