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
00032
00033
00034
00035 #pragma once
00036
00037
00038 #include <libCMMLTags/libCMMLTags.h>
00039 #include <libCMMLParse/libCMMLParse.h>
00040 #include <libCMMLParse/xtag.h>
00041 #include <libilliCore/StringHelper.h>
00042
00043 #include <fstream>
00044 #include <string>
00045
00046 using namespace std;
00047
00048
00049 class LIBCMMLPARSE_API C_CMMLError
00050 {
00051 public:
00052 C_CMMLError()
00053 {
00054
00055 this->LineNumber = 0;
00056 }
00057
00058 void SetLineNumber(int lLineNumber)
00059 {
00060 LineNumber = lLineNumber;
00061 }
00062
00063 int GetLineNumber()
00064 {
00065 return LineNumber;
00066 }
00067
00068 private:
00069 int LineNumber;
00070 };
00071
00072 class LIBCMMLPARSE_API CMMLParser
00073 {
00074 public:
00075 CMMLParser(void);
00076 ~CMMLParser(void);
00077
00079 bool parseClipTag(wstring inClipText, C_ClipTag* outClip);
00080
00082 bool parseHeadTag(wstring inHeadText, C_HeadTag* outHead);
00083
00085 bool parseCMMLRootTag(wstring inCMMLRootText, C_CMMLRootTag* outCMMLRoot, C_CMMLError* outCMMLError=NULL);
00086
00088 bool parseDocFromFile(wstring inFilename, C_CMMLDoc* outCMMLDoc, C_CMMLError* outCMMLError=NULL);
00089
00091 bool parseDocFromBuffer(wstring inBuffer, C_CMMLDoc* outCMMLDoc, C_CMMLError* outCMMLError=NULL);
00092
00093 protected:
00095 bool parseRootTag(XTag* inCMMLRootParser, C_CMMLRootTag* outCMMLRoot);
00096
00098 bool parseStreamTag(XTag* inStreamParser, C_StreamTag* outStream);
00099
00101 bool parseHeadTag(XTag* inHeadParser, C_HeadTag* outHead);
00102
00104 bool parseClipTag(XTag* inClipParser, C_ClipTag* outClip);
00105
00107 bool parseImportTag(XTag* inImportParser, C_ImportTag* outImport);
00108
00110 bool parseBaseTag(XTag* inBaseParser, C_BaseTag* outBase);
00111
00113 bool parseTitleTag(XTag* inTitleParser, C_TitleTag* outTitle);
00114
00116 bool parseMetaTag(XTag* inMetaParser, C_MetaTag* outMeta);
00117
00119 bool parseAnchorTag(XTag* inAnchorParser, C_AnchorTag* outAnchor);
00120
00122 bool parseImageTag(XTag* inImageParser, C_ImageTag* outImage);
00123
00125 bool parseDescTag(XTag* inDescParser, C_DescTag* outDesc);
00126
00128 bool parseParamTag(XTag* inParamParser, C_ParamTag* outParam);
00129
00130 };