35#include <gwenhywfar/debug.h>
36#include <gwenhywfar/text.h>
37#include <gwenhywfar/gwendate.h>
38#include <gwenhywfar/path.h>
107 if (strcasecmp(name,
"XmlEnter")==0)
109 else if (strcasecmp(name,
"XmlForEvery")==0)
111 else if (strcasecmp(name,
"DbCreateAndEnterGroup")==0)
113 else if (strcasecmp(name,
"DbCreateAndEnterTempGroup")==0)
115 else if (strcasecmp(name,
"DbSetCharValue")==0)
117 else if (strcasecmp(name,
"DbSetTempCharValue")==0)
119 else if (strcasecmp(name,
"XmlIfCharDataMatches")==0)
121 else if (strcasecmp(name,
"XmlIfNotCharDataMatches")==0)
123 else if (strcasecmp(name,
"XmlIfHasCharData")==0)
125 else if (strcasecmp(name,
"XmlIfNotHasCharData")==0)
127 else if (strcasecmp(name,
"XmlIfPathExists")==0)
129 else if (strcasecmp(name,
"XmlIfNotPathExists")==0)
155 if (value && *value) {
168 if (!(name && *name)) {
176 if (!(typ && *typ)) {
185 if (strcasecmp(typ,
"string")==0) {
190 else if (strcasecmp(typ,
"date")==0) {
195 if (!(tmpl && *tmpl)) {
209 if (strcasecmp(mode,
"add")==0) {
215 else if (strcasecmp(mode,
"append")==0) {
220 const char *delimiter;
227 if (delimiter && *delimiter) {
228 if (strcasecmp(delimiter,
"\\n")==0)
230 else if (strcasecmp(delimiter,
"\\t")==0)
241 else if (strcasecmp(mode,
"replace")==0) {
345 if (!(name && *name)) {
380 if (!(name && *name)) {
418 if (!(name && *name)) {
442 if (!(path && *path)) {
448 if (value && *value) {
479 if (!(path && *path)) {
485 if (!(pattern && *pattern)) {
516 if (!(path && *path)) {
522 if (!(pattern && *pattern)) {
552 if (!(path && *path)) {
558 if (value && *value) {
583 if (!(path && *path)) {
589 if (!(value && *value)) {
610 if (!(path && *path)) {
639 if (!(path && *path)) {
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
int GWEN_DB_DeleteVar(GWEN_DB_NODE *n, const char *path)
GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
int GWEN_DB_ReplaceVars(GWEN_DB_NODE *db, const char *s, GWEN_BUFFER *dbuf)
void GWEN_DB_UnlinkGroup(GWEN_DB_NODE *n)
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
#define GWEN_DB_FLAGS_DEFAULT
struct GWEN_DB_NODE GWEN_DB_NODE
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_INVALID
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
GWEN_DATE * GWEN_Date_fromStringWithTemplate(const char *s, const char *tmpl)
const char * GWEN_Date_GetString(const GWEN_DATE *gd)
void GWEN_Date_free(GWEN_DATE *gd)
struct GWEN_DATE GWEN_DATE
#define GWEN_PATH_FLAGS_CREATE_GROUP
#define GWEN_PATH_FLAGS_PATHMUSTEXIST
void GWEN_Text_CondenseBuffer(GWEN_BUFFER *buf)
int GWEN_Text_ComparePattern(const char *w, const char *p, int sensecase)
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWEN_XMLNODE * GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n)
GWEN_XMLNODE * GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n)
const char * GWEN_XMLNode_GetData(const GWEN_XMLNODE *n)
int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
struct GWEN__XMLNODE GWEN_XMLNODE
GWEN_XMLCMD_HANDLECHILDREN_FN GWEN_XmlCommander_SetHandleChildrenFn(GWEN_XMLCOMMANDER *cmd, GWEN_XMLCMD_HANDLECHILDREN_FN f)
int GWEN_XmlCommander_HandleChildren(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
struct GWEN_XMLCOMMANDER GWEN_XMLCOMMANDER
static int _handleChildren_toDb(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
xmlNodePtr GWEN_XmlCommanderLibXml_FindFirstElement(xmlNodePtr parent, const char *elemName)
void GWEN_XmlCommanderLibXml_EnterDocNode(GWEN_XMLCOMMANDER *cmd, xmlNodePtr xNode)
void GWEN_XmlCommanderLibXml_LeaveDocNode(GWEN_XMLCOMMANDER *cmd)
GWEN_DB_NODE * GWEN_XmlCommanderLibXml_GetCurrentTempDbGroup(const GWEN_XMLCOMMANDER *cmd)
GWEN_XMLCOMMANDER * GWEN_XmlCommanderLibXml_new(xmlNodePtr documentRoot, GWEN_DB_NODE *dbRoot)
xmlNodePtr GWEN_XmlCommanderLibXml_FindNextElement(xmlNodePtr elem, const char *elemName)
xmlNodePtr GWEN_XmlCommanderLibXml_GetXmlNode(xmlNodePtr n, const char *path, uint32_t flags)
xmlNodePtr GWEN_XmlCommanderLibXml_GetCurrentDocNode(const GWEN_XMLCOMMANDER *cmd)
const char * GWEN_XmlCommanderLibXml_GetXmlCharValueByPath(xmlNodePtr elem, const char *path, const char *defValue)
void GWEN_XmlCommanderLibXml_SetCurrentDbGroup(GWEN_XMLCOMMANDER *cmd, GWEN_DB_NODE *db)
void GWEN_XmlCommanderLibXml_SetCurrentTempDbGroup(GWEN_XMLCOMMANDER *cmd, GWEN_DB_NODE *db)
GWEN_DB_NODE * GWEN_XmlCommanderLibXml_GetCurrentDbGroup(const GWEN_XMLCOMMANDER *cmd)
static int _handleDbSetCharValue(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleDbSetTempCharValue(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlForEvery(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlIfHasCharData(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleChildren_toDb(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleDbCreateAndEnterGroup(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlIfNotHasCharData(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlIfPathExists(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlIfNotCharDataMatches(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlEnter(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleDbCreateAndEnterTempGroup(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _convertAndSetCharValue(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *dbCurrent, const char *value)
static int _handleXmlIfNotPathExists(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleXmlIfCharDataMatches(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
static int _handleDbSetCharValue_internal(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *dbCurrent)
GWEN_XMLCOMMANDER * GWEN_XmlCommanderLibXml_toDb_new(xmlNodePtr xmlNodeDocument, GWEN_DB_NODE *dbDestination)