gwenhywfar 5.12.0
xsdnode.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Wed Feb 27 2008
3 copyright : (C) 2008 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 * *
23 ***************************************************************************/
24
25#ifdef HAVE_CONFIG_H
26# include <config.h>
27#endif
28
29
30#include "xsdnode_p.h"
31
32#include <gwenhywfar/debug.h>
33#include <gwenhywfar/misc.h>
34
35#include <stdlib.h>
36#include <assert.h>
37#include <string.h>
38#include <ctype.h>
39
40
43
44
45
48 const char *name)
49{
50 GWEN_XSD_NODE *xsdNode;
51
55 xsdNode->nodeType=t;
56 xsdNode->parent=parent;
57 xsdNode->children=GWEN_XsdNode_List_new();
58 if (name)
59 xsdNode->name=strdup(name);
60
61 return xsdNode;
62}
63
64
65
67{
68 if (xsdNode) {
71 GWEN_XsdNode_List_free(xsdNode->children);
72 free(xsdNode->name);
73 GWEN_FREE_OBJECT(xsdNode);
74 }
75}
76
77
78
80{
81 assert(xsdNode);
82 return xsdNode->nodeType;
83}
84
85
86
87const char *GWEN_XsdNode_GetName(const GWEN_XSD_NODE *xsdNode)
88{
89 assert(xsdNode);
90 return xsdNode->name;
91}
92
93
94
95uint32_t GWEN_XsdNode_GetFlags(const GWEN_XSD_NODE *xsdNode)
96{
97 assert(xsdNode);
98 return xsdNode->flags;
99}
100
101
102
103void GWEN_XsdNode_SetFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
104{
105 assert(xsdNode);
106 xsdNode->flags=fl;
107}
108
109
110
111void GWEN_XsdNode_AddFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
112{
113 assert(xsdNode);
114 xsdNode->flags|=fl;
115}
116
117
118
119void GWEN_XsdNode_SubFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
120{
121 assert(xsdNode);
122 xsdNode->flags&=~fl;
123}
124
125
126
128{
129 assert(xsdNode);
130 return xsdNode->parent;
131}
132
133
134
136{
137 assert(xsdNode);
138 return xsdNode->children;
139}
140
141
142
144{
145 assert(xsdNode);
146 assert(newChild);
147 GWEN_XsdNode_List_Add(newChild, xsdNode->children);
148 newChild->parent=xsdNode;
149}
150
151
152
154{
155 GWEN_XsdNode_List_Del(xsdNode);
156 xsdNode->parent=NULL;
157}
158
159
160
163{
165
166 assert(xsdNode);
167 oldFn=xsdNode->readFn;
168 xsdNode->readFn=fn;
169 return oldFn;
170}
171
172
173
176{
178
179 assert(xsdNode);
180 oldFn=xsdNode->writeFn;
181 xsdNode->writeFn=fn;
182 return oldFn;
183}
184
185
186
188 GWEN_XMLNODE *xmlNode,
189 GWEN_DB_NODE *db)
190{
191 assert(xsdNode);
192 if (xsdNode->readFn)
193 return xsdNode->readFn(xsdNode, xmlNode, db);
194 else
196}
197
198
199
201 GWEN_XMLNODE *xmlNode,
202 GWEN_DB_NODE *db)
203{
204 assert(xsdNode);
205 if (xsdNode->writeFn)
206 return xsdNode->writeFn(xsdNode, xmlNode, db);
207 else
209}
210
211
212
213
#define NULL
Definition binreloc.c:300
struct GWEN_DB_NODE GWEN_DB_NODE
Definition db.h:228
#define GWEN_ERROR_NOT_SUPPORTED
Definition error.h:109
#define GWEN_INHERIT_FUNCTIONS(t)
Definition inherit.h:163
#define GWEN_INHERIT_INIT(t, element)
Definition inherit.h:223
#define GWEN_INHERIT_FINI(t, element)
Definition inherit.h:238
#define GWEN_LIST_FINI(t, element)
Definition list1.h:475
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition list1.h:367
#define GWEN_LIST_INIT(t, element)
Definition list1.h:466
void GWEN_XsdNode_List_Add(GWEN_XSD_NODE *element, GWEN_XSD_NODE_LIST *list)
void GWEN_XsdNode_List_Del(GWEN_XSD_NODE *element)
GWEN_XSD_NODE_LIST * GWEN_XsdNode_List_new()
void GWEN_XsdNode_List_free(GWEN_XSD_NODE_LIST *l)
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
struct GWEN__XMLNODE GWEN_XMLNODE
Definition xml.h:156
GWEN_XSD_NODE * GWEN_XsdNode_new(GWEN_XSD_NODE *parent, GWEN_XSD_NODETYPE t, const char *name)
Definition xsdnode.c:46
void GWEN_XsdNode_SetFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
Definition xsdnode.c:103
GWEN_XSD_NODETYPE GWEN_XsdNode_GetNodeType(const GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:79
void GWEN_XsdNode_Unlink(GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:153
uint32_t GWEN_XsdNode_GetFlags(const GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:95
GWEN_XSD_NODE * GWEN_XsdNode_GetParent(const GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:127
void GWEN_XsdNode_AddChild(GWEN_XSD_NODE *xsdNode, GWEN_XSD_NODE *newChild)
Definition xsdnode.c:143
GWEN_XSD_NODE_LIST * GWEN_XsdNode_GetChildren(const GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:135
GWEN_XSDNODE_READ_FN GWEN_XsdNode_SetReadFn(GWEN_XSD_NODE *xsdNode, GWEN_XSDNODE_READ_FN fn)
Definition xsdnode.c:161
const char * GWEN_XsdNode_GetName(const GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:87
int GWEN_XsdNode_Read(GWEN_XSD_NODE *xsdNode, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *db)
Definition xsdnode.c:187
void GWEN_XsdNode_AddFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
Definition xsdnode.c:111
void GWEN_XsdNode_SubFlags(GWEN_XSD_NODE *xsdNode, uint32_t fl)
Definition xsdnode.c:119
GWEN_XSDNODE_WRITE_FN GWEN_XsdNode_SetWriteFn(GWEN_XSD_NODE *xsdNode, GWEN_XSDNODE_WRITE_FN fn)
Definition xsdnode.c:174
void GWEN_XsdNode_free(GWEN_XSD_NODE *xsdNode)
Definition xsdnode.c:66
int GWEN_XsdNode_Write(GWEN_XSD_NODE *xsdNode, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *db)
Definition xsdnode.c:200
struct GWEN_XSD_NODE GWEN_XSD_NODE
Definition xsdnode.h:29
GWEN_XSD_NODETYPE
Definition xsdnode.h:42
int(* GWEN_XSDNODE_WRITE_FN)(GWEN_XSD_NODE *xsdNode, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *db)
Definition xsdnode_l.h:34
int(* GWEN_XSDNODE_READ_FN)(GWEN_XSD_NODE *xsdNode, GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *db)
Definition xsdnode_l.h:31