Annotation of parser3/src/types/pa_vxdoc.h, revision 1.14
1.1 parser 1: /** @file
1.5 parser 2: Parser: @b xdoc parser class decl.
1.1 parser 3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.12 paf 5: Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
1.1 parser 6:
1.14 ! paf 7: $Id: pa_vxdoc.h,v 1.13 2001/11/21 14:00:28 paf Exp $
1.1 parser 8: */
9:
10: #ifndef PA_VXDOC_H
11: #define PA_VXDOC_H
12:
13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16: #include "pa_vxnode.h"
17:
1.14 ! paf 18: //#include "libxml/xmlmemory.h"
! 19: //#include "libxml/parser.h"
! 20: //#include "libxslt/xslt.h"
! 21: //#include "libxslt/libxslt.h"
! 22: //#include "libxslt/extensions.h"
! 23: //#include "libexslt/exslt.h"
1.1 parser 24:
25: extern Methoded *Xdoc_class;
26:
27: void VXdoc_cleanup(void *);
28:
1.5 parser 29: /// value of type 'xdoc'. implemented with XalanDocument & co
1.1 parser 30: class VXdoc : public VXnode {
1.13 paf 31: friend void VXdoc_destructor(void *);
1.1 parser 32: public: // Value
1.4 parser 33:
1.6 parser 34: const char *type() const { return "xdoc"; }
35:
1.4 parser 36: /// VXdoc: true
37: bool as_bool() const { return true; }
38:
39: /// VXdoc: true
40: Value *as_expr_result(bool return_string_as_is=false) { return NEW VBool(pool(), as_bool()); }
1.1 parser 41:
1.6 parser 42: /// VXnode: $CLASS,$method, fields
43: Value *get_element(const String& name);
44:
1.1 parser 45: protected: // VAliased
46:
47: /// disable .CLASS element. @see VAliased::get_element
48: bool hide_class() { return true; }
49:
50: public: // VDNode
51:
1.14 ! paf 52: /// @test conv validity
! 53: GdomeNode *get_node(Pool& pool, const String *source) {
! 54: return (GdomeNode *)get_document(pool, source);
1.1 parser 55: }
56:
57: public: // usage
58:
1.14 ! paf 59: VXdoc(Pool& apool, GdomeDocument *adocument) : VXnode(apool, 0, *Xdoc_class) {
! 60: // ftransformer(0)
! 61: GdomeException exc;
! 62: if(fdocument=adocument)
! 63: gdome_doc_ref(fdocument, &exc);
! 64:
1.13 paf 65: register_cleanup(VXdoc_destructor, this);
1.14 ! paf 66: // ftransformer=new XalanTransformer2;
! 67: // memset(&output_options, 0, sizeof(output_options));
1.1 parser 68: }
1.14 ! paf 69: protected:
1.13 paf 70: ~VXdoc() {
1.14 ! paf 71: GdomeException exc;
! 72: if(fdocument)
! 73: gdome_doc_unref(fdocument, &exc);
1.8 parser 74:
1.14 ! paf 75: // delete ftransformer;
1.1 parser 76: }
77: public:
78:
1.14 ! paf 79: //XalanTransformer2& transformer() {return *ftransformer; }
! 80: void set_document(GdomeDocument *adocument) {
! 81: GdomeException exc;
! 82: if(fdocument)
! 83: gdome_doc_unref(fdocument, &exc);
1.8 parser 84:
1.14 ! paf 85: gdome_doc_ref(fdocument=adocument, &exc);
1.8 parser 86: }
1.14 ! paf 87: GdomeDocument *get_document(Pool& pool, const String *source) {
1.1 parser 88: if(!fdocument)
1.9 parser 89: throw Exception(0, 0,
1.1 parser 90: source,
91: "can not be applied to uninitialized instance");
1.14 ! paf 92: return fdocument;
1.1 parser 93: }
1.13 paf 94:
95: public:
1.14 ! paf 96: /*
1.13 paf 97: struct Output_options {
98: const char *method;
99: XalanDOMString encoding;
100: XalanDOMString mediaType;
101: XalanDOMString doctypeSystem;
102: XalanDOMString doctypePublic;
103: bool doIndent;
104: XalanDOMString version;
105: XalanDOMString standalone;
106: bool xmlDecl;
107: Output_options() : method(0), doIndent(false), xmlDecl(false) {
108: }
109: } output_options;
1.14 ! paf 110: */
1.1 parser 111: private:
112:
1.14 ! paf 113: GdomeDocument *fdocument;
1.1 parser 114: };
115:
116: #endif
E-mail: