Objective Systems, Inc.  
Home
About ASN.1
Products
Free Software
Documents
Services
Resources
Resellers
Customers
Careers
About Us
Contact Us
 

Google


Objective Systems, Inc.

rtSaxCppParser.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2003-2006 Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00024 
00025 #ifndef __RTSAXCPPPARSER_H_
00026 #define __RTSAXCPPPARSER_H_
00027 
00030 #include <string.h>
00031 #include <stdlib.h>
00032 
00033 #include "rtxsrc/rtxErrCodes.h"
00034 #include "rtxsrc/rtxCppContext.h"
00035 #include "rtxmlsrc/rtSaxCppParserIF.h"
00036 #include "rtxmlsrc/osrtxml.h"
00037 #include "rtxmlsrc/rtSaxDefs.h"
00038 
00039 class EXTERNXML OSXMLBasePtr {
00040    OSXMLBase* mPtr;
00041  public:
00042    OSXMLBasePtr ():mPtr (0) {}
00043    OSXMLBasePtr (OSXMLBase* ptr):mPtr (ptr) {}
00044    ~OSXMLBasePtr () { if (mPtr) mPtr->release (); }
00045 
00046    operator OSXMLBase* () const  { return mPtr; }
00047 
00048    OSXMLBase* operator= (OSXMLBase* ptr) {
00049       if (mPtr) mPtr->release ();
00050       mPtr = ptr;
00051       return mPtr;
00052    }
00053 };
00054 
00062 class EXTERNXML OSXMLDefaultHandler : public OSXMLDefaultHandlerIF 
00063 {
00064  protected:
00065    OSCtxtPtr mpContext;
00066    const OSUTF8CHAR* mpElemName;
00067    OSINT16 mLevel;
00068    OSINT16 mStartLevel;
00069    OSINT16 mReqElemCnt;
00070    OSINT16 mCurrElemIdx;
00071    OSINT16 mState;
00072 
00073    struct EXTERNXML ErrorInfo {
00074       int stat;
00075       const char* file;
00076       int line;
00077 
00078       inline ErrorInfo ():stat (0),file (0), line (0) {}
00079    } errorInfo;
00080 
00081  public:
00082 
00086    inline OSXMLDefaultHandler (OSContext* pContext) :
00087       mpContext (pContext),
00088       mpElemName(0), mLevel(0), 
00089       mStartLevel (0), mReqElemCnt (0), mCurrElemIdx(0), mState (0)
00090    { }
00091 
00092    virtual ~OSXMLDefaultHandler () {}
00093 
00094    virtual int startElement 
00095       (const OSUTF8CHAR* const uri, 
00096        const OSUTF8CHAR* const localname, 
00097        const OSUTF8CHAR* const qname, 
00098        const OSUTF8CHAR* const* attrs);
00099 
00100    virtual int characters 
00101       (const OSUTF8CHAR* const chars, unsigned int length);
00102 
00103    virtual int endElement
00104       (const OSUTF8CHAR* const uri,
00105        const OSUTF8CHAR* const localname,
00106        const OSUTF8CHAR* const qname);
00107 
00108    virtual void startDocument();
00109    virtual void endDocument ();
00110 
00111    virtual int finalize ();
00112 
00113    // SAX Error Info handlers
00114    virtual void resetErrorInfo ();
00115    virtual void setErrorInfo (int status, const char* file = 0, int line = 0);
00116    virtual int  getErrorInfo (int* status, const char** file, int* line);
00117 
00118    // SAX ErrorHandler interface
00119 
00120    // void warning (const SAXParseException& exception);
00121    // void error (const SAXParseException& exception);
00122    // void fatalError (const SAXParseException& exception);
00123    // void resetErrors ();
00124 
00131    inline OSINT16 getState() { return mState; }
00132 
00133    virtual void init (int level = 0) {
00134       mState = 0; mLevel = (OSINT16)level;
00135    }
00136 
00137    void setElemName (const OSUTF8CHAR* elemName) {
00138       mpElemName = elemName;
00139    }
00140 
00141    inline OSBOOL isComplete () { return (mLevel <= mStartLevel); }
00142 
00143 #ifndef _COMPACT
00144    void traceStartElement (const char* funcName, const OSUTF8CHAR* localName);
00145    void traceEndElement (const char* funcName, const OSUTF8CHAR* localName);
00146 #else
00147    inline void traceStartElement 
00148       (const char* funcName, const OSUTF8CHAR* localName) {}
00149    inline void traceEndElement 
00150       (const char* funcName, const OSUTF8CHAR* localName) {}
00151 #endif
00152 } ;
00153 
00154 class EXTERNXML OSXMLDefaultHandlerPtr {
00155    OSXMLDefaultHandler* mPtr;
00156  public:
00157    inline OSXMLDefaultHandlerPtr ():mPtr (0) {}
00158    inline OSXMLDefaultHandlerPtr (OSXMLDefaultHandler* ptr):mPtr (ptr) {}
00159    inline ~OSXMLDefaultHandlerPtr () { delete mPtr; }
00160 
00161    inline operator OSXMLDefaultHandler* () { return mPtr; }
00162    inline operator const OSXMLDefaultHandler* () const { return mPtr; }
00163    inline OSXMLDefaultHandler* operator-> () const { return mPtr; }
00164 
00165    inline OSXMLDefaultHandler* operator= (OSXMLDefaultHandler* ptr) {
00166       delete mPtr;
00167       mPtr = ptr;
00168       return mPtr;
00169    }
00170    inline int operator == (const OSXMLDefaultHandler* ptr) const
00171       { return ptr == mPtr; }
00172    inline int operator != (const OSXMLDefaultHandler* ptr) const
00173       { return ptr != mPtr; }
00174    inline int operator ! () const { return mPtr == 0; }
00175 
00176    friend int operator != (const void* ptr, const OSXMLDefaultHandlerPtr& ptr2);
00177    friend int operator == (const void* ptr, const OSXMLDefaultHandlerPtr& ptr2);
00178 } ;
00179 
00180 inline int operator != (const void* ptr, const OSXMLDefaultHandlerPtr& ptr2)
00181   { return ptr != (const void*)ptr2.mPtr; }
00182 
00183 inline int operator == (const void* ptr, const OSXMLDefaultHandlerPtr& ptr2)
00184   { return ptr == (const void*)ptr2.mPtr; }
00185 
00186 class EXTERNXML OSXMLParserCtxt : public OSXMLParserCtxtIF {
00187    OSCtxtPtr mpContext;
00188  public:
00189    OSXMLParserCtxt (OSContext *pContext);
00190 
00191    virtual OSInputStreamIF* createInputStream ();
00192    virtual OSInputStreamIF* createFileInputStream 
00193       (const char* const filename);
00194    virtual OSInputStreamIF* createMemoryInputStream 
00195       (OSOCTET* pMemBuf, size_t bufSize);
00196    virtual OSCTXT* getContext ();
00197    virtual const OSUTF8CHAR* parseQName (const OSUTF8CHAR* const qname);
00198 } ;
00199 
00200 #ifndef _COMPACT
00201 #define OSCPPSAXDIAGSTART(funcName,localName) \
00202 traceStartElement (funcName, localName)
00203 
00204 #define OSCPPSAXDIAGEND(funcName,localName) \
00205 traceEndElement (funcName, localName)
00206 
00207 #else /* COMPACT */
00208 #define OSCPPSAXDIAGSTART(funcName,localName)
00209 #define OSCPPSAXDIAGEND(funcName,localName)
00210 #endif
00211 
00212 #endif /* __RTSAXCPPPARSER_H_ */

This file was last modified on 8 Jan 2007.
XBinder, Version 1.1.9