00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00031 #include <string.h>
00032 #include <libxml/parser.h>
00033 #include <libxml/tree.h>
00034 #include <libxml/encoding.h>
00035 #include <libxml/xmlwriter.h>
00036 #include <libxml/xpath.h>
00037 #include <libxml/xpathInternals.h>
00038
00039 #ifndef _ER_MANIFEST__H__
00040 #define _ER_MANIFEST__H__
00041
00042 #define RET_OK 0
00043 #define RET_ERR -1
00044
00045 #define MANIFEST_FILENAME "manifest.xml"
00046 #define MANIFEST_SCHEMA_FILE (DATA_DIR "/manifest.xsd")
00047
00048
00049 #ifdef __cplusplus
00050 extern "C"
00051 {
00052
00053 #endif
00054
00055 typedef struct
00056 {
00057 xmlDocPtr pDoc;
00058 xmlXPathContextPtr pPathCtx;
00059 char *szFileName;
00060 } erManifest;
00061
00070 int ermXmlOpenFile(const char *szFileName, erManifest *pCtx);
00071
00080 int ermXmlOpenManifest(const char *szContainerName, erManifest *pCtx);
00081
00090 int ermXmlValidateManifest(erManifest *pCtx);
00091
00101 int ermXmlCreateFile(const char *szFileName, erManifest *pCtx);
00102
00112 int ermXmlCreateManifest(const char *szContainerName, erManifest *pCtx);
00113
00121 const char *ermXmlGetFileName(const erManifest *pCtx);
00122
00131 int ermXmlCreateHandleOnly(erManifest *pCtx);
00132
00141 xmlXPathObjectPtr LocateTo(const char *express, const erManifest *pCtx);
00142 #define ermXmlSelectNodes(pCtx, express) LocateTo( (express), (pCtx) )
00143
00152 xmlNodePtr ermXmlGetChildNode(xmlNodePtr parent, const char* childName);
00153
00162 xmlNodeSetPtr ermXmlGetChildNodeSet(xmlNodePtr parent, const char* childName);
00163
00174 xmlNodePtr ermXmlGetChildNodeWithAttr(xmlNodePtr parent, const char *nodeName, const char *attrName,
00175 const char *attrValue);
00176
00177 int ermXmlGetNodeNr(const erManifest *pCtx, const char *express, int *number);
00178
00188 xmlNodePtr ermXmlGetChildNodeWithoutAttr(xmlNodePtr parent, const char* nodeName, const char* attrName);
00189
00200 int ermXmlGetString(const erManifest *pCtx, const char *express, char *pRet, const int length);
00201
00202
00212 const char *ermXmlGetStringBuffer(const erManifest *pCtx, const char *express, int *length);
00213
00214
00220 void ermXmlFreeStringBuffer(const char *ptr);
00221
00222
00232 int ermXmlGetInt(const erManifest *pCtx, const char *express, int *pRet);
00233
00243 int ermXmlGetBoolean(const erManifest *pCtx, const char *express, int *pRet);
00244
00254 int ermXmlExist(const erManifest *pCtx, const char *express);
00255
00267 int ermXmlGetAttributeString(const erManifest *pCtx, const char *express, const char *attrName, char *pRet,
00268 const int length);
00269
00280 const char *ermXmlGetAttributeStringBuffer(const erManifest *pCtx, const char *express, const char *attrName,
00281 int *length);
00282
00293 int ermXmlGetAttributeInt(const erManifest *pCtx, const char *express, const char *attrName, int *pRet);
00294
00295
00305 int ermXmlSetString(erManifest *pCtx, const char *express, const char *pData);
00306
00317 int ermXmlSetInt(erManifest *pCtx, const char *express, const int data);
00318
00329 int ermXmlSetBoolean(erManifest *pCtx, const char *express, const int data);
00330
00342 int ermXmlSetAttributeString(const erManifest *pCtx, const char *express, const char *attrName, const char *pSrc,
00343 const int length);
00344
00355 int ermXmlSetAttributeInt(erManifest *pCtx, const char *express, const char *attrName, const int data);
00356
00357
00368 int ermXmlNewString(const erManifest *pCtx, const char *parentExpress, const char *name, const char *content);
00369
00380 int ermXmlNewInt(erManifest *pCtx, const char *parentExpress, const char *name, const int content);
00381
00392 int ermXmlNewBoolean(erManifest *pCtx, const char *parentExpress, const char *name, const int content);
00393
00404 int ermXmlRemoveNode(erManifest *pCtx, const char *express);
00405
00406
00414 int ermXmlSave(erManifest *pCtx);
00415
00424 int ermXmlSaveAs(erManifest *pCtx, const char *szFileName);
00425
00433 int ermXmlSaveAndClose(erManifest *pCtx);
00434
00442 int ermXmlClose(erManifest *pCtx);
00443
00456 int ermXmlCheckXpath(erManifest *pCtx, char* express);
00457
00458 int ermXmlParseBuffer(const char* xmlString, const char* szFileName, erManifest *pCtx);
00459
00460 #ifdef __cplusplus
00461 }
00462 #endif
00463
00464 #endif //_ER_MANIFEST__H__