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

1.1       parser      1: /** @file
1.3       parser      2:        Parser: @b xnode parser class decl.
1.1       parser      3: 
1.22.2.1  paf         4:        Copyright (c) 2001-2003 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.22.2.6.2.2! paf        11: static const char* IDENT_VXNODE_H="$Date: 2003/03/18 15:14:22 $";
1.1       parser     12: 
                     13: #include "classes.h"
                     14: #include "pa_common.h"
                     15: #include "pa_vstateless_object.h"
                     16: 
1.4       parser     17: // defines
                     18: 
                     19: #define VXNODE_TYPE "xnode"
                     20: 
                     21: // externals
                     22: 
1.22.2.5  paf        23: extern MethodedPtr xnode_class;
1.1       parser     24: 
1.9       paf        25: /// value of type 'xnode'. implemented with GdomeNode
1.22.2.3  paf        26: class VXnode: public VStateless_object {
1.1       parser     27: public: // Value
                     28: 
1.22.2.4  paf        29:        override const char* type() const { return VXNODE_TYPE; }
1.22.2.5  paf        30:        override VStateless_class* get_class() { return xnode_class.get(); }
1.2       parser     31: 
                     32:        /// VXnode: true
1.22.2.4  paf        33:        override bool as_bool() const { return true; }
1.2       parser     34: 
                     35:        /// VXnode: true
1.22.2.4  paf        36:        override ValuePtr as_expr_result(bool return_string_as_is=false) { return ValuePtr(new VBool(as_bool())); }
1.1       parser     37: 
                     38:        /// VXnode: $CLASS,$method, fields
1.22.2.6.2.1  paf        39:        override ValuePtr get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1       parser     40: 
                     41: public: // usage
                     42: 
1.22.2.6.2.1  paf        43:        VXnode( Request_charsets* acharsets, GdomeNode* anode) : 
                     44:                fpool(),
1.22.2.6  paf        45:                fcharsets(acharsets),
1.10      paf        46:                fnode(anode/*not adding ref, owning a node*/) {
1.1       parser     47:        }
1.22.2.4  paf        48: 
                     49:        override ~VXnode() {
1.9       paf        50:                GdomeException exc;
                     51:                if(fnode)                       
                     52:                        gdome_n_unref(fnode, &exc);
1.7       parser     53:        }
1.1       parser     54: 
1.22.2.4  paf        55: public: // VXnode
                     56: 
1.22.2.6.2.1  paf        57:        void set_node( Request_charsets* acharsets, GdomeNode* anode, bool aowns_node) { 
1.22.2.4  paf        58:                fpool=apool;
                     59:                fcharsets=acharsets;
                     60: 
1.9       paf        61:                GdomeException exc;
                     62:                if(fnode)                       
                     63:                        gdome_n_unref(fnode, &exc);
1.7       parser     64: 
1.9       paf        65:                gdome_n_ref(fnode=anode, &exc);
1.7       parser     66:        }
1.1       parser     67: 
1.22.2.6.2.1  paf        68:        virtual GdomeNode* get_node(const String* source) { 
1.1       parser     69:                if(!fnode)
1.22.2.6.2.2! paf        70:                        throw Exception(0,
1.1       parser     71:                                source,
                     72:                                "can not be applied to uninitialized instance");
1.5       parser     73: 
1.9       paf        74:                return fnode; 
1.1       parser     75:        }
                     76: 
1.22.2.6  paf        77: protected:
1.1       parser     78: 
1.22.2.4  paf        79:        Pool* fpool;
                     80:        Request_charsets* fcharsets;
1.22.2.6  paf        81: 
                     82: private:
                     83: 
                     84:        GdomeNode* fnode;
1.1       parser     85: };
                     86: 
                     87: #endif

E-mail: