FEDM_XmlParser_Base.h
Go to the documentation of this file.
00001 /*-------------------------------------------------------
00002 |                                                       |
00003 |       FEDM_XmlParser_Base.h                                           |
00004 |                                                       |
00005 ---------------------------------------------------------
00006 
00007 Copyright © 2008                FEIG ELECTRONIC GmbH, All Rights Reserved.
00008                                                 Lange Strasse 4
00009                                                 D-35781 Weilburg
00010                                                 Federal Republic of Germany
00011                                                 phone    : +49 6471 31090
00012                                                 fax      : +49 6471 310999
00013                                                 e-mail   : obid-support@feig.de
00014                                                 Internet : http://www.feig.de
00015                                         
00016 Author                  :       Markus Hultsch
00017 Begin                   :       23.01.2008
00018 Version                 :       03.00.00 / 06.02.2008 / M. Hultsch
00019 Operation Systems       :       independent
00020 Function                        :       abstract class for basic parser API
00021 
00022 OBID® and OBID i-scan® are registered Trademarks of FEIG ELECTRONIC GmbH.
00023 Linux® is a registered trademark of Linus Torvalds.
00024 Microsoft® and Windows® are registered trademarks of Microsoft Corporation.
00025 */
00026 
00027 
00028 //###########################
00029 //      D E F I N E S
00030 //###########################
00031 #ifndef FEDM_XMLPARSER_BASE_H
00032 #define FEDM_XMLPARSER_BASE_H
00033 
00034 
00035 //#############################
00036 //      I N C L U D E S
00037 //#############################
00038 #include "FedmIscCore.h"
00039 #include "FEDM_XmlParser_Types.h"       // public include file of library
00040 
00041 class FEDM_XmlParser_Reader;
00042 class FEDM_XmlParser_Writer;
00043 
00044 #define FEDM_CRC16_PRESET               0xFEDB
00045 #define FEDM_CRC16_POLYNOM              0x8408  // x^16 + x^12 + x^5 + 1
00046 
00047 #define FEDM_XML_PARSER_TYPE_FEDM       1
00048 #define FEDM_XML_PARSER_TYPE_TINY       2
00049 
00050 
00051 //#######################################################################################
00052 //      class FEDM_XmlParser_Base
00053 //#######################################################################################
00054 class FEDM_XmlParser_Base
00055 {
00056 public:
00057         FEDM_XmlParser_Base(unsigned int uiReaderType=FEDM_XML_PARSER_TYPE_TINY,
00058                                                 unsigned int uiWriterType=FEDM_XML_PARSER_TYPE_FEDM);
00059 
00060         virtual ~FEDM_XmlParser_Base(void);
00061 
00062         void SetLastError(int iError)   { m_iLastError = iError; }
00063         int  GetLastError()                             { return m_iLastError; }
00064 
00065         bool IsParsed()                                 { return m_bIsParsed; }
00066 
00067         void SetWriteMode(bool bMode)   { m_bWriteMode = bMode; }
00068 
00069         // main serialization functions
00070         virtual int SerializeIn(char* szXmlFileName, const char* szVendor, const char* szOemRootTag, char* szAccessCode, unsigned int uiAccessCodeLen)=0;
00071         virtual int SerializeOut(char* szXmlFileName, const char* szVendor, const char* szOemRootTag, char* szAccessCode, unsigned int uiAccessCodeLen)=0;
00072 
00073         // serialization helper functions for file-header
00074         int SerializeHeaderIn(FEDM_XML_TREEITEM* parent, const char* szVendor="");
00075         int SerializeHeaderOut(FEDM_XML_TREEITEM* parent, const char* szVendor="");
00076 
00077 
00078         // document management
00079         int OpenDoc(char* sFileName, char* sMode);      // open a xml document
00080         int CloseDoc();                                                         // close xml document
00081         int LoadDoc();                                                          // reads the xml text
00082         int LoadDoc(const char* szOemRootTag);          // reads the xml text
00083         int WriteDoc();                                                         // write the xml text into file
00084         wstring WriteStream();                                          // build and return xml string
00085         int LoadStream(wstring sXmlStream);                     // load xml string
00086 
00087         // ##################################################################################
00088         // interface for reader class
00089         // ##################################################################################
00090         FEDM_XML_TREEITEM* FindTag(     wstring sTag,
00091                                                                 unsigned int uiTagLevel,
00092                                                                 bool bNext=false);
00093 
00094         FEDM_XML_TREEITEM* FindTag(     wstring sTag,
00095                                                                 wstring sAttribute,
00096                                                                 unsigned int uiTagLevel,
00097                                                                 bool bNext=false);
00098 
00099         int     GetTagAttrib(   FEDM_XML_TREEITEM* item,
00100                                                 int iIndex, 
00101                                                 string& sAttrib, 
00102                                                 string& sValue );
00103 
00104 
00105         // ##################################################################################
00106         // interface for writer class
00107         // ##################################################################################
00108         void DeleteXmlTree();                                           // clears temporary tree
00109         void SetComment(wstring sComment);
00110         
00111         // functions to build tree before writing into file
00112         FEDM_XML_TREEITEM* BuildTag(wstring sTag, bool bNewLine=true, bool bEmpty=false);
00113         int AddTagValue(FEDM_XML_TREEITEM* item, wstring sValue);
00114         int AddTagAttrib(FEDM_XML_TREEITEM* item, wstring sAttrib, wstring sValue);
00115         int AddTagItem(FEDM_XML_TREEITEM* pParent, FEDM_XML_TREEITEM* pChild);
00116 
00117 protected:
00118         unsigned int CalcCRC16CheckSum( unsigned int uiCrcPreset,
00119                                                                         unsigned int uiData );
00120 
00121         unsigned int CalcCRC16CheckSum( unsigned int uiCrcPreset,
00122                                                                         unsigned char* ucBuffer, 
00123                                                                         unsigned int uiBufLen );
00124 
00125 
00126 public:
00127         FEDM_XML_HEADER m_XmlHeader;
00128 
00129 protected:
00130         bool    m_bIsParsed;
00131         int             m_iLastError;                   // last error code
00132         bool    m_bWriteMode;
00133 
00134         // access code for calculating a CRC16-checksum
00135         char                    m_szAccessCode[FEDM_MAX_NAME_SIZE];
00136         unsigned int    m_uiAccessCodeLen;
00137 
00138         // helper classes, which implements the parser
00139         FEDM_XmlParser_Reader* m_pXmlReader;
00140         FEDM_XmlParser_Writer* m_pXmlWriter;
00141 };
00142 
00143 #endif // #ifndef FEDM_XMLPARSER_BASE_H
00144 


rfid_drivers
Author(s): Raul Perula-Martinez
autogenerated on Thu Apr 2 2015 03:06:13