Projekt

Allgemein

Profil

Herunterladen (5,66 KB) Statistiken
| Zweig: | Markierung: | Revision:
/***************************************************************************
begin : Sat Apr 18 2018
copyright : (C) 2020 by Martin Preuss
email : martin@libchipcard.de

***************************************************************************
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Lesser General Public *
* License as published by the Free Software Foundation; either *
* version 2.1 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with this library; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
* MA 02111-1307 USA *
* *
***************************************************************************/


#ifdef HAVE_CONFIG_H
# include <config.h>
#endif



#include "xmlcmd_gxml_p.h"

#include <gwenhywfar/debug.h>


#include <ctype.h>


GWEN_INHERIT(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML)




static void GWENHYWFAR_CB _freeData(void *bp, void *p);






GWEN_XMLCOMMANDER *GWEN_XmlCommanderGwenXml_new(GWEN_XMLNODE *documentRoot, GWEN_DB_NODE *dbRoot)
{
GWEN_XMLCOMMANDER *cmd;
GWEN_XMLCMD_GXML *xcmd;

cmd=GWEN_XmlCommander_new();
GWEN_NEW_OBJECT(GWEN_XMLCMD_GXML, xcmd);
GWEN_INHERIT_SETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd, xcmd, _freeData);

xcmd->docRoot=documentRoot;
xcmd->xmlNodeStack=GWEN_XMLNode_List2_new();
xcmd->dbRoot=dbRoot;
xcmd->tempDbRoot=GWEN_DB_Group_new("dbTempRoot");

xcmd->currentDbGroup=xcmd->dbRoot;
xcmd->currentTempDbGroup=xcmd->tempDbRoot;
xcmd->currentDocNode=documentRoot;

return cmd;
}



void GWENHYWFAR_CB _freeData(GWEN_UNUSED void *bp, void *p)
{
GWEN_XMLCMD_GXML *xcmd;

xcmd=(GWEN_XMLCMD_GXML*) p;

GWEN_XMLNode_List2_free(xcmd->xmlNodeStack);
xcmd->xmlNodeStack=NULL;

GWEN_DB_Group_free(xcmd->tempDbRoot);
GWEN_FREE_OBJECT(xcmd);
}



GWEN_XMLNODE *GWEN_XmlCommanderGwenXml_GetDocRoot(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->docRoot;
}



GWEN_XMLNODE *GWEN_XmlCommanderGwenXml_GetCurrentDocNode(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->currentDocNode;
}



void GWEN_XmlCommanderGwenXml_SetCurrentDocNode(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *n)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

xcmd->currentDocNode=n;
}



GWEN_DB_NODE *GWEN_XmlCommanderGwenXml_GetDbRoot(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->dbRoot;
}



GWEN_DB_NODE *GWEN_XmlCommanderGwenXml_GetCurrentDbGroup(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->currentDbGroup;
}



void GWEN_XmlCommanderGwenXml_SetCurrentDbGroup(GWEN_XMLCOMMANDER *cmd, GWEN_DB_NODE *db)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

xcmd->currentDbGroup=db;
}



GWEN_DB_NODE *GWEN_XmlCommanderGwenXml_GetTempDbRoot(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->tempDbRoot;
}



GWEN_DB_NODE *GWEN_XmlCommanderGwenXml_GetCurrentTempDbGroup(const GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

return xcmd->currentTempDbGroup;
}



void GWEN_XmlCommanderGwenXml_SetCurrentTempDbGroup(GWEN_XMLCOMMANDER *cmd, GWEN_DB_NODE *db)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

xcmd->currentTempDbGroup=db;
}



void GWEN_XmlCommanderGwenXml_EnterDocNode(GWEN_XMLCOMMANDER *cmd, GWEN_XMLNODE *xmlNode)
{
GWEN_XMLCMD_GXML *xcmd;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

assert(xmlNode);

GWEN_XMLNode_List2_PushBack(xcmd->xmlNodeStack, xcmd->currentDocNode);
xcmd->currentDocNode=xmlNode;
}



void GWEN_XmlCommanderGwenXml_LeaveDocNode(GWEN_XMLCOMMANDER *cmd)
{
GWEN_XMLCMD_GXML *xcmd;
GWEN_XMLNODE *xmlNode;

assert(cmd);
xcmd=GWEN_INHERIT_GETDATA(GWEN_XMLCOMMANDER, GWEN_XMLCMD_GXML, cmd);
assert(xcmd);

xmlNode=GWEN_XMLNode_List2_GetBack(xcmd->xmlNodeStack);
if (xmlNode==NULL) {
DBG_ERROR(GWEN_LOGDOMAIN, "Nothing on stack");
assert(xmlNode);
}
xcmd->currentDocNode=xmlNode;
GWEN_XMLNode_List2_PopBack(xcmd->xmlNodeStack);
}








(4-4/16)