Annotation of parser3/src/types/pa_vxdoc.h, revision 1.31.2.9.2.10
1.1 parser 1: /** @file
1.5 parser 2: Parser: @b xdoc parser class decl.
1.1 parser 3:
1.31.2.1 paf 4: Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
1.19 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 parser 6: */
7:
8: #ifndef PA_VXDOC_H
9: #define PA_VXDOC_H
10:
1.31.2.9.2.10! (paf 11:: static const char* IDENT_VXDOC_H="$Date: 2003/04/02 09:32:12 $";
1.22 paf 12:
1.1 parser 13: #include "classes.h"
14: #include "pa_common.h"
15: #include "pa_vstateless_object.h"
16: #include "pa_vxnode.h"
17:
1.17 paf 18: // defines
19:
20: #define VXDOC_TYPE "xdoc"
21:
22: // externals
23:
1.31.2.9.2.4 paf 24: extern Methoded* xdoc_class;
1.1 parser 25:
1.25 paf 26: /// value of type 'xdoc'. implemented with libxml & co
1.31.2.3 paf 27: class VXdoc: public VXnode {
1.1 parser 28: public: // Value
1.4 parser 29:
1.31.2.5 paf 30: override const char* type() const { return VXDOC_TYPE; }
31: override Value* as(const char* atype, bool looking_up);
1.24 paf 32:
1.31.2.9.2.4 paf 33: override VStateless_class* get_class() { return xdoc_class; }
1.6 parser 34:
1.4 parser 35: /// VXdoc: true
1.31.2.5 paf 36: override bool as_bool() const { return true; }
1.4 parser 37:
38: /// VXdoc: true
1.31.2.9.2.9 paf 39: override Value& as_expr_result(bool return_string_as_is=false) { return *new VBool(as_bool()); }
1.1 parser 40:
1.6 parser 41: /// VXnode: $CLASS,$method, fields
1.31.2.9.2.4 paf 42: override Value* get_element(const String& aname, Value& aself, bool /*looking_up*/);
1.6 parser 43:
1.25 paf 44: public: // VXNode
1.1 parser 45:
1.31.2.9.2.6 paf 46: override GdomeNode* get_node() {
1.31.2.9.2.5 paf 47: return (GdomeNode*)get_document();
1.1 parser 48: }
49:
50: public: // usage
51:
1.31.2.9.2.10! (paf 52:: VXdoc(Request_charsets* acharsets, GdomeDocument *adocument) :
1.31.2.9.2.3 paf 53: VXnode(acharsets, 0),
1.15 paf 54: fdocument(adocument/*not adding ref, owning a doc*/) {
1.16 paf 55: memset(&output_options, 0, sizeof(output_options));
1.1 parser 56: }
1.31.2.5 paf 57:
58: override ~VXdoc() {
1.14 paf 59: GdomeException exc;
60: if(fdocument)
61: gdome_doc_unref(fdocument, &exc);
1.1 parser 62: }
63:
1.31.2.5 paf 64: public: // VXdoc
65:
1.31.2.9.2.10! (paf 66:: void set_document(Request_charsets* acharsets, GdomeDocument *adocument) {
1.31.2.9 paf 67: fcharsets=acharsets;
1.31.2.5 paf 68:
1.14 paf 69: GdomeException exc;
70: if(fdocument)
71: gdome_doc_unref(fdocument, &exc);
1.8 parser 72:
1.14 paf 73: gdome_doc_ref(fdocument=adocument, &exc);
1.31.2.9.2.8 paf 74:
75: // hold reference to prevent premature collecting
76: gcref_doc=gdome_xml_doc_get_xmlDoc(fdocument);
1.8 parser 77: }
1.31.2.9.2.5 paf 78: GdomeDocument* get_document() {
1.31.2.9.2.10! (paf 79:: assert(fdocument);
1.14 paf 80: return fdocument;
1.1 parser 81: }
1.13 paf 82:
83: public:
1.31.2.5 paf 84:
1.13 paf 85: struct Output_options {
1.31.2.9.2.5 paf 86: const String* method; /* the output method */
87: const String* encoding; /* encoding string */
88: const String* mediaType; /* media-type string */
89: const String* doctypeSystem; /* doctype-system string */
90: const String* doctypePublic; /* doctype-public string */
1.16 paf 91: bool indent; /* should output being indented */
1.31.2.9.2.5 paf 92: const String* version; /* version string */
1.16 paf 93: bool standalone; /* standalone = "yes" | "no" */
94: bool omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */
1.13 paf 95: } output_options;
1.31.2.5 paf 96:
1.1 parser 97: private:
98:
1.31.2.5 paf 99: GdomeDocument* fdocument;
1.31.2.9.2.8 paf 100: xmlDoc *gcref_doc;
1.1 parser 101: };
102:
103: #endif
E-mail: