Annotation of parser3/src/types/pa_vxdoc.h, revision 1.1
1.1 ! parser 1: /** @file
! 2: Parser: @b DOM parser class decl.
! 3:
! 4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
! 5: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
! 6:
! 7: $Id: pa_vdom.h,v 1.14 2001/09/26 10:32:26 parser Exp $
! 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:
! 18: #include <XercesParserLiaison/XercesParserLiaison.hpp>
! 19: #include <XalanTransformer/XalanTransformer.hpp>
! 20: #include <XalanTransformer/XalanParsedSource.hpp>
! 21: #include <XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
! 22:
! 23: extern Methoded *Xdoc_class;
! 24:
! 25: void VXdoc_cleanup(void *);
! 26:
! 27: /// value of type 'dom'. implemented with XalanDocument & co
! 28: class VXdoc : public VXnode {
! 29: friend void VXdoc_cleanup(void *);
! 30: public: // Value
! 31:
! 32: const char *type() const { return "xdoc"; }
! 33: /*
! 34: /// VXdoc: CLASS,method
! 35: Value *get_element(const String& aname) {
! 36: // VStateless_object $CLASS,$method
! 37: if(Value *result=VStateless_object::get_element(aname))
! 38: return result;
! 39: }
! 40: */
! 41: protected: // VAliased
! 42:
! 43: /// disable .CLASS element. @see VAliased::get_element
! 44: bool hide_class() { return true; }
! 45:
! 46: public: // VDNode
! 47:
! 48: XalanNode &get_node(Pool& pool, const String *source) {
! 49: return get_document(pool, source);
! 50: }
! 51:
! 52: public: // usage
! 53:
! 54: VXdoc(Pool& apool, XalanDocument *adocument=0) : VXnode(apool, 0, *Xdoc_class),
! 55: ftransformer(0),
! 56: fparser_liaison(0),
! 57: fparsed_source(0),
! 58: fdocument(adocument) {
! 59: register_cleanup(VXdoc_cleanup, this);
! 60: ftransformer=new XalanTransformer;
! 61: fparser_liaison=new XercesParserLiaison;
! 62: }
! 63: private:
! 64: void cleanup() {
! 65: delete ftransformer;
! 66: delete fparser_liaison;
! 67: }
! 68: public:
! 69:
! 70: XalanTransformer& transformer() {return *ftransformer; }
! 71: XercesParserLiaison& parser_liaison() { return *fparser_liaison; }
! 72:
! 73: void set_parsed_source(const XalanParsedSource& aparsed_source) { fparsed_source=&aparsed_source; }
! 74: const XalanParsedSource& get_parsed_source(Pool& pool, const String *source) {
! 75: if(!fparsed_source)
! 76: PTHROW(0, 0,
! 77: source,
! 78: "can not be performed on this instance (xslt[xslt] not supported, use save+xslt[load])");
! 79: return *fparsed_source;
! 80: }
! 81:
! 82: void set_document(XalanDocument& adocument) { fdocument=&adocument; }
! 83: XalanDocument &get_document(Pool& pool, const String *source) {
! 84: if(fparsed_source)
! 85: return *fparsed_source->getDocument();
! 86: if(!fdocument)
! 87: PTHROW(0, 0,
! 88: source,
! 89: "can not be applied to uninitialized instance");
! 90: return *fdocument;
! 91: }
! 92:
! 93: private:
! 94:
! 95: XalanTransformer *ftransformer;
! 96: XercesParserLiaison *fparser_liaison;
! 97:
! 98: const XalanParsedSource *fparsed_source;
! 99: XalanDocument *fdocument;
! 100:
! 101: };
! 102:
! 103: #endif
E-mail: