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

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.8! paf        11: static const char* IDENT_VXNODE_H="$Date: 2003/04/02 09:32:12 $";
1.1       parser     12: 
                     13: #include "classes.h"
                     14: #include "pa_common.h"
                     15: #include "pa_vstateless_object.h"
                     16: 
1.22.2.6.2.6  paf        17: extern "C" {
                     18: #include "gdomecore/gdome-xml-node.h"
                     19: #include "gdomecore/gdome-xml-document.h"
                     20: };
                     21: 
1.4       parser     22: // defines
                     23: 
                     24: #define VXNODE_TYPE "xnode"
                     25: 
1.22.2.6.2.6  paf        26: // helper defines
                     27: 
1.22.2.6.2.8! paf        28: #define gdome_xml_doc_get_xmlDoc(dome_doc) (((_Gdome_xml_Document *)dome_doc)->n)
1.22.2.6.2.6  paf        29: 
1.4       parser     30: // externals
                     31: 
1.22.2.6.2.3  paf        32: extern Methoded* xnode_class;
1.1       parser     33: 
1.9       paf        34: /// value of type 'xnode'. implemented with GdomeNode
1.22.2.6.2.5  paf        35: class VXnode: public VStateless_object, PA_Cleaned {
1.1       parser     36: public: // Value
                     37: 
1.22.2.4  paf        38:        override const char* type() const { return VXNODE_TYPE; }
1.22.2.6.2.3  paf        39:        override VStateless_class* get_class() { return xnode_class; }
1.2       parser     40: 
                     41:        /// VXnode: true
1.22.2.4  paf        42:        override bool as_bool() const { return true; }
1.2       parser     43: 
                     44:        /// VXnode: true
1.22.2.6.2.7  paf        45:        override Value& as_expr_result(bool return_string_as_is=false) { return *new VBool(as_bool()); }
1.1       parser     46: 
                     47:        /// VXnode: $CLASS,$method, fields
1.22.2.6.2.3  paf        48:        override Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.1       parser     49: 
                     50: public: // usage
                     51: 
1.22.2.6.2.4  paf        52:        VXnode(Request_charsets* acharsets, GdomeNode* anode) : 
1.22.2.6  paf        53:                fcharsets(acharsets),
1.10      paf        54:                fnode(anode/*not adding ref, owning a node*/) {
1.1       parser     55:        }
1.22.2.4  paf        56: 
                     57:        override ~VXnode() {
1.9       paf        58:                GdomeException exc;
                     59:                if(fnode)                       
                     60:                        gdome_n_unref(fnode, &exc);
1.7       parser     61:        }
1.1       parser     62: 
1.22.2.4  paf        63: public: // VXnode
                     64: 
1.22.2.6.2.6  paf        65:        /// @todo register disappearing link to parent object?
1.22.2.6.2.4  paf        66:        void set_node(Request_charsets* acharsets, GdomeNode* anode, bool aowns_node) { 
1.22.2.4  paf        67:                fcharsets=acharsets;
                     68: 
1.9       paf        69:                GdomeException exc;
                     70:                if(fnode)                       
                     71:                        gdome_n_unref(fnode, &exc);
1.7       parser     72: 
1.9       paf        73:                gdome_n_ref(fnode=anode, &exc);
1.7       parser     74:        }
1.1       parser     75: 
1.22.2.6.2.5  paf        76:        virtual GdomeNode* get_node() { 
1.1       parser     77:                if(!fnode)
1.22.2.6.2.2  paf        78:                        throw Exception(0,
1.22.2.6.2.5  paf        79:                                0,
1.1       parser     80:                                "can not be applied to uninitialized instance");
1.5       parser     81: 
1.9       paf        82:                return fnode; 
1.1       parser     83:        }
                     84: 
1.22.2.6  paf        85: protected:
1.1       parser     86: 
1.22.2.4  paf        87:        Request_charsets* fcharsets;
1.22.2.6  paf        88: 
                     89: private:
                     90: 
                     91:        GdomeNode* fnode;
1.1       parser     92: };
                     93: 
                     94: #endif

E-mail: