Annotation of parser3/src/types/pa_vxnode.h, revision 1.3
1.1 parser 1: /** @file
1.3 ! parser 2: Parser: @b xnode parser class decl.
1.1 parser 3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
5: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
6:
1.3 ! parser 7: $Id: pa_vxnode.h,v 1.2 2001/10/09 08:13:04 parser Exp $
1.1 parser 8: */
9:
10: #ifndef PA_VXNODE_H
11: #define PA_VXNODE_H
12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16:
17: #include <XalanDOM/XalanNode.hpp>
18: #include <PlatformSupport/XSLException.hpp>
19:
20: extern Methoded *Xnode_class;
21:
22: //void VXnode_cleanup(void *);
23:
1.3 ! parser 24: /// value of type 'xnode'. implemented with XalanNode
1.1 parser 25: class VXnode : public VStateless_object {
26: //friend void VXnode_cleanup(void *);
27: public: // Value
28:
29: const char *type() const { return "xnode"; }
1.2 parser 30:
31: /// VXnode: true
32: bool as_bool() const { return true; }
33:
34: /// VXnode: true
35: Value *as_expr_result(bool return_string_as_is=false) { return NEW VBool(pool(), as_bool()); }
1.1 parser 36:
37: /// VXnode: $CLASS,$method, fields
38: Value *get_element(const String& aname);
39:
40: protected: // VAliased
41:
42: /// disable .CLASS element. @see VAliased::get_element
43: bool hide_class() { return true; }
44:
45: public: // usage
46:
47: VXnode(Pool& apool, XalanNode *anode=0, VStateless_class& abase=*Xnode_class) :
48: VStateless_object(apool, abase),
49: fnode(anode) {
50: //register_cleanup(VXnode_cleanup, this);
51: }
52: private:
53: //void cleanup() {}
54: public:
55:
56: void set_node(XalanNode& anode) { fnode=&anode; }
57:
58: public: // VXnode
59: virtual XalanNode &get_node(Pool& pool, const String *source) {
60: if(!fnode)
61: PTHROW(0, 0,
62: source,
63: "can not be applied to uninitialized instance");
64: return *fnode;
65: }
66:
67: private:
68:
69: XalanNode *fnode;
70:
71: };
72:
73: #endif
E-mail: