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

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.46    ! moko       11: #define IDENT_PA_VXNODE_H "$Id: pa_vxnode.h,v 1.45 2015/05/30 22:55:29 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: