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__