Annotation of parser3/src/types/pa_vxdoc.h, revision 1.21
1.1 parser 1: /** @file
1.5 parser 2: Parser: @b xdoc parser class decl.
1.1 parser 3:
1.18 paf 4: Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
1.19 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 parser 6:
1.21 ! paf 7: $Id: pa_vxdoc.h,v 1.20 2002/03/27 15:30:39 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.16 paf 24: //#include "libxslt/xsltInternals.h"
1.1 parser 25:
1.17 paf 26: // defines
27:
28: #define VXDOC_TYPE "xdoc"
29:
30: // externals
31:
1.1 parser 32: extern Methoded *Xdoc_class;
33:
34: void VXdoc_cleanup(void *);
35:
1.5 parser 36: /// value of type 'xdoc'. implemented with XalanDocument & co
1.1 parser 37: class VXdoc : public VXnode {
1.13 paf 38: friend void VXdoc_destructor(void *);
1.1 parser 39: public: // Value
1.4 parser 40:
1.17 paf 41: const char *type() const { return VXDOC_TYPE; }
1.21 ! paf 42: VStateless_class *get_class() { return Xdoc_class; }
1.6 parser 43:
1.4 parser 44: /// VXdoc: true
45: bool as_bool() const { return true; }
46:
47: /// VXdoc: true
48: Value *as_expr_result(bool return_string_as_is=false) { return NEW VBool(pool(), as_bool()); }
1.1 parser 49:
1.6 parser 50: /// VXnode: $CLASS,$method, fields
51: Value *get_element(const String& name);
52:
1.1 parser 53: protected: // VAliased
54:
55: /// disable .CLASS element. @see VAliased::get_element
56: bool hide_class() { return true; }
57:
58: public: // VDNode
59:
1.14 paf 60: /// @test conv validity
1.15 paf 61: virtual GdomeNode *get_node(const String *source) {
62: return (GdomeNode *)get_document(source);
1.1 parser 63: }
64:
65: public: // usage
66:
1.15 paf 67: VXdoc(Pool& apool, GdomeDocument *adocument) :
1.21 ! paf 68: VXnode(apool, 0),
1.15 paf 69: fdocument(adocument/*not adding ref, owning a doc*/) {
1.14 paf 70: // ftransformer(0)
71:
1.13 paf 72: register_cleanup(VXdoc_destructor, this);
1.14 paf 73: // ftransformer=new XalanTransformer2;
1.16 paf 74: memset(&output_options, 0, sizeof(output_options));
1.1 parser 75: }
1.14 paf 76: protected:
1.13 paf 77: ~VXdoc() {
1.14 paf 78: GdomeException exc;
79: if(fdocument)
80: gdome_doc_unref(fdocument, &exc);
1.8 parser 81:
1.14 paf 82: // delete ftransformer;
1.1 parser 83: }
84: public:
85:
1.14 paf 86: //XalanTransformer2& transformer() {return *ftransformer; }
87: void set_document(GdomeDocument *adocument) {
88: GdomeException exc;
89: if(fdocument)
90: gdome_doc_unref(fdocument, &exc);
1.8 parser 91:
1.14 paf 92: gdome_doc_ref(fdocument=adocument, &exc);
1.8 parser 93: }
1.15 paf 94: GdomeDocument *get_document(const String *source) {
1.1 parser 95: if(!fdocument)
1.20 paf 96: throw Exception(0,
1.1 parser 97: source,
98: "can not be applied to uninitialized instance");
1.14 paf 99: return fdocument;
1.1 parser 100: }
1.13 paf 101:
102: public:
103: struct Output_options {
1.16 paf 104: const String *method; /* the output method */
105: const String *encoding; /* encoding string */
106: const String *mediaType; /* media-type string */
107: const String *doctypeSystem; /* doctype-system string */
108: const String *doctypePublic; /* doctype-public string */
109: bool indent; /* should output being indented */
110: const String *version; /* version string */
111: bool standalone; /* standalone = "yes" | "no" */
112: bool omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */
1.13 paf 113: } output_options;
1.1 parser 114: private:
115:
1.14 paf 116: GdomeDocument *fdocument;
1.1 parser 117: };
118:
119: #endif
E-mail: