00001 #if !defined(_XMLFLOWBUILDER_HPP) 00002 #define _XMLFLOWBUILDER_HPP 00003 //============================================================================= 00004 // 00005 // XDFLengine library 00006 // 00007 //----------------------------------------------------------------------------- 00008 // XMLFLOWBUILDER.HPP 00009 //----------------------------------------------------------------------------- 00015 //_____________________________________________________________________________ 00016 // 00017 // Copyright (C) 2003 Guillaume Baurand. All Rights Reserved. 00018 // 00019 // This file is part of the XDFLengine project. 00020 // 00021 // The XDFLengine is free software; you can redistribute it and/or modify 00022 // it under the terms of the GNU General Public License as published by 00023 // the Free Software Foundation; either version 2 of the License, or 00024 // (at your option) any later version. 00025 // 00026 // This program is distributed in the hope that it will be useful, 00027 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00028 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00029 // GNU General Public License for more details. 00030 // 00031 // You should have received a copy of the GNU General Public License 00032 // along with this program; if not, write to the Free Software 00033 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00034 // USA. 00035 // 00036 // For more information, 00037 // contact : guillaume@baurand.net 00038 // or visit : http://xdflengine.sourceforge.net 00039 // 00040 //============================================================================= 00041 00042 # include "config/commonincs.hpp" 00043 # include "processor/xmlflow.hpp" 00044 # include "flow/buffers/xmlbuffers.hpp" 00045 # include "utils/sax2formatter.hpp" 00046 00047 BEGIN_XDFLENGINE_NS 00048 00049 class XMLProcessor; 00050 class xmlstreamerfactory; 00051 00052 //============================================================================= 00053 // CLASS XMLFlowBuilder 00054 //----------------------------------------------------------------------------- 00059 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00060 class XDFLENGINE_EXPORT XMLFlowBuilder : public SAX2Formatter 00061 { 00062 00063 private: //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00064 00065 unsigned int m_uiErrorNumber ; 00066 unsigned int m_uiCurDepth; 00067 bool m_fTopStreamerPassive; 00068 char* m_pszActiveURI; 00069 const XMLProcessor* m_pXMLProcessor; 00070 VAarray<XMLFlowNode*> m_vaStackStreamNodes; 00071 00072 public: //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00073 00074 // CONSTRUCTOR & DESTRUCTOR 00075 00076 //_____________________________________________________________________ 00077 // XMLFlowBuilder 00078 //--------------------------------------------------------------------- 00081 //_____________________________________________________________________ 00082 XMLFlowBuilder( const XMLProcessor* p_pXMLProcessor, RootStreamNode* p_pStreamRoot, const char* p_pszActiveURI); 00083 00084 //_____________________________________________________________________ 00085 // ~XMLFlowBuilder 00086 //--------------------------------------------------------------------- 00089 //_____________________________________________________________________ 00090 ~XMLFlowBuilder(); 00091 00092 // ERROR 00093 00094 //_____________________________________________________________________ 00095 // GETERROR 00096 //--------------------------------------------------------------------- 00099 //--------------------------------------------------------------------- 00100 unsigned int getError (); 00101 00102 // CONTENTHANDLER ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00103 00104 //____________________________________________________________________ 00105 // STARTELEMENT 00106 //-------------------------------------------------------------------- 00107 void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); 00108 00109 //____________________________________________________________________ 00110 // CHARACTERS 00111 //-------------------------------------------------------------------- 00112 void characters( const XMLCh* const chars, const unsigned int length); 00113 00114 //____________________________________________________________________ 00115 // ENDELEMENT 00116 //-------------------------------------------------------------------- 00117 void endElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); 00118 00119 //____________________________________________________________________ 00120 // WRITECHARS 00121 //-------------------------------------------------------------------- 00122 void writeChars(const XMLByte* const toWrite, const unsigned int count, XMLFormatter* const formatter); 00123 00124 }; 00125 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00126 //============================================================================= 00127 00128 END_XDFLENGINE_NS 00129 00130 #endif 00131 00132