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: