Annotation of parser3/src/types/pa_vxnode.h, revision 1.37

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.37    ! paf        11: static const char * const IDENT_VXNODE_H="$Date: 2005/12/16 10:15:12 $";
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(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: