Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef FEDM_XMLPARSER_BASE_H
00032 #define FEDM_XMLPARSER_BASE_H
00033
00034
00035
00036
00037
00038 #include "FedmIscCore.h"
00039 #include "FEDM_XmlParser_Types.h"
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
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
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
00074 int SerializeHeaderIn(FEDM_XML_TREEITEM* parent, const char* szVendor="");
00075 int SerializeHeaderOut(FEDM_XML_TREEITEM* parent, const char* szVendor="");
00076
00077
00078
00079 int OpenDoc(char* sFileName, char* sMode);
00080 int CloseDoc();
00081 int LoadDoc();
00082 int LoadDoc(const char* szOemRootTag);
00083 int WriteDoc();
00084 wstring WriteStream();
00085 int LoadStream(wstring sXmlStream);
00086
00087
00088
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
00107
00108 void DeleteXmlTree();
00109 void SetComment(wstring sComment);
00110
00111
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;
00132 bool m_bWriteMode;
00133
00134
00135 char m_szAccessCode[FEDM_MAX_NAME_SIZE];
00136 unsigned int m_uiAccessCodeLen;
00137
00138
00139 FEDM_XmlParser_Reader* m_pXmlReader;
00140 FEDM_XmlParser_Writer* m_pXmlWriter;
00141 };
00142
00143 #endif // #ifndef FEDM_XMLPARSER_BASE_H
00144