00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef XMLREADER_H
00025 #define XMLREADER_H
00026
00027 #include "Task.h"
00028 #include "parsifal.h"
00029
00030
00031 int StartElement(void *UserData, const XMLCH *uri, const XMLCH *localName, const XMLCH *qName, LPXMLVECTOR atts);
00032 int EndElement(void *UserData, const XMLCH *uri, const XMLCH *localName, const XMLCH *qName);
00033 int Characters(void *UserData, const XMLCH *Chars, int cbChars);
00034 void ErrorHandler(LPXMLPARSER parser);
00035 int cstream(BYTE *buf, int cBytes, int *cBytesActual, void *inputData);
00036
00037 #define STACK_PUSH(stack,item) (XMLVector_Append((stack), (item)))
00038 #define STACK_PEEK(stack) (XMLVector_Get((stack),(stack)->length-1))
00039 #define STACK_REMOVE(stack) (XMLVector_Remove((stack), (stack)->length-1))
00040 #define STACK_POP(stack,item) \
00041 ( ((stack)->length) ? (memcpy((item), STACK_PEEK((stack)), (stack)->itemSize), \
00042 STACK_REMOVE((stack)), (item)) : NULL)
00043
00044 #define ASSERT_MEM_ABORT(p) if (!(p)) { printf("Out of memory! Line: %d\n", __LINE__); return XML_ABORT; }
00045
00046
00047
00048
00049
00050 enum tagSTATES {
00051 NONE,
00052 DESCRIPTOR,
00053 GEN_INFO,
00054 GEN_INFO_UID,
00055 GEN_INFO_CREATION_DATE,
00056 GEN_INFO_EXPIRATION,
00057 GEN_INFO_PRIORITY,
00058 GEN_INFO_TASK_NAME,
00059 GEN_INFO_USER_NAME,
00060 GEN_INFO_USER_MAIL,
00061 TARGET_FILTERS,
00062 TARGET_FILTER,
00063 TARGET_FILTER_TYPE,
00064 TARGET_FILTER_OPERATOR,
00065 TARGET_FILTER_VALUE,
00066 TASK_INFO,
00067 BIN,
00068 BIN_SOURCE_PATH,
00069 BIN_COMMAND,
00070 DATAS,
00071 DATA,
00072 DATA_SHARED,
00073 DATA_SOURCE_PATH,
00074 DATA_LOCAL_PATH,
00075 RESULT,
00076 RESULT_LOCAL_PATH,
00077 RESULT_STORAGE_PATH
00078 } STATES;
00079
00080
00081
00082
00083
00084
00085
00086
00087 typedef struct tagK10PARSER {
00088 LPXMLPARSER parser;
00089 XMLSTRINGBUF textBuf;
00090 LPXMLVECTOR stateStack;
00091 int state;
00092 int inContent;
00093 int inMixedContent;
00094
00095 Task *curDesc;
00096 TaskDataInfo *curDataInfo;
00097 TaskFilterInfo *curFilterInfo;
00098 } K10PARSER;
00099
00100
00101 #endif