gwenhywfar
4.7.0beta
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
src
parser
xml.h
Go to the documentation of this file.
1
/***************************************************************************
2
begin : Sat Jun 28 2003
3
copyright : (C) 2003-2010 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
#ifndef GWENHYWFAR_XML_H
26
#define GWENHYWFAR_XML_H
27
28
#include <gwenhywfar/gwenhywfarapi.h>
29
#include <gwenhywfar/stringlist.h>
30
#include <gwenhywfar/types.h>
31
#include <gwenhywfar/list2.h>
32
#include <gwenhywfar/syncio.h>
33
34
#include <stdio.h>
35
36
37
#ifdef __cplusplus
38
extern
"C"
{
39
#endif
40
46
51
52
56
60
#define GWEN_XML_FLAGS_HANDLE_COMMENTS 0x0001
61
66
#define GWEN_XML_FLAGS_INDENT 0x0002
67
73
#define GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS 0x0004
74
79
#define GWEN_XML_FLAGS_NO_CONDENSE 0x0008
80
85
#define GWEN_XML_FLAGS_KEEP_CNTRL 0x0010
86
87
#define GWEN_XML_FLAGS_KEEP_BLANKS 0x0020
88
89
#define GWEN_XML_FLAGS_SIMPLE 0x0040
90
94
#define GWEN_XML_FLAGS_HANDLE_HEADERS 0x0080
95
103
#define GWEN_XML_FLAGS_TOLERANT_ENDTAGS 0x0100
104
105
#define GWEN_XML_FLAGS_HANDLE_NAMESPACES 0x0200
106
110
#define GWEN_XML_FLAGS_DEFAULT \
111
(\
112
GWEN_XML_FLAGS_INDENT | \
113
GWEN_XML_FLAGS_HANDLE_COMMENTS\
114
)
115
124
125
#define GWEN_XML_PATH_FLAGS_OVERWRITE_VALUES 0x00010000
126
134
typedef
enum
{
137
GWEN_XMLNodeTypeTag
=0,
139
GWEN_XMLNodeTypeData
,
141
GWEN_XMLNodeTypeComment
142
}
GWEN_XMLNODE_TYPE
;
143
147
typedef
struct
GWEN__XMLNODE
GWEN_XMLNODE
;
148
typedef
struct
GWEN_XMLNODE_NAMESPACE
GWEN_XMLNODE_NAMESPACE
;
149
150
GWEN_LIST_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE
, GWEN_XMLNode,
GWENHYWFAR_API
)
151
GWEN_LIST2_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE
, GWEN_XMLNode,
GWENHYWFAR_API
)
152
153
GWEN_LIST_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE_NAMESPACE
, GWEN_XMLNode_NameSpace,
GWENHYWFAR_API
)
154
155
#ifdef __cplusplus
156
}
157
#endif
158
159
160
#include <gwenhywfar/xmlctx.h>
161
#include <gwenhywfar/fastbuffer.h>
162
163
164
#ifdef __cplusplus
165
extern
"C"
{
166
#endif
167
168
169
174
GWENHYWFAR_API
175
GWEN_XMLNODE
*
GWEN_XMLNode_new
(
GWEN_XMLNODE_TYPE
t,
const
char
*data);
176
180
GWENHYWFAR_API
181
void
GWEN_XMLNode_free
(
GWEN_XMLNODE
*n);
182
188
GWENHYWFAR_API
189
void
GWEN_XMLNode_freeAll
(
GWEN_XMLNODE
*n);
190
194
GWENHYWFAR_API
195
GWEN_XMLNODE
*
GWEN_XMLNode_dup
(
const
GWEN_XMLNODE
*n);
196
220
225
GWENHYWFAR_API
226
GWEN_XMLNODE
*
GWEN_XMLNode_GetHeader
(
const
GWEN_XMLNODE
*n);
227
231
GWENHYWFAR_API
232
void
GWEN_XMLNode_AddHeader
(
GWEN_XMLNODE
*root,
GWEN_XMLNODE
*nh);
233
238
GWENHYWFAR_API
239
void
GWEN_XMLNode_DelHeader
(
GWEN_XMLNODE
*root,
GWEN_XMLNODE
*nh);
240
245
GWENHYWFAR_API
246
void
GWEN_XMLNode_ClearHeaders
(
GWEN_XMLNODE
*root);
247
271
GWENHYWFAR_API
272
const
char
*
GWEN_XMLNode_GetProperty
(
const
GWEN_XMLNODE
*n,
273
const
char
*name,
274
const
char
*defaultValue);
275
283
GWENHYWFAR_API
284
void
GWEN_XMLNode_SetProperty
(
GWEN_XMLNODE
*n,
285
const
char
*name,
286
const
char
*value);
287
292
GWENHYWFAR_API
293
int
GWEN_XMLNode_GetIntProperty
(
const
GWEN_XMLNODE
*n,
const
char
*name,
294
int
defaultValue);
295
299
GWENHYWFAR_API
300
void
GWEN_XMLNode_SetIntProperty
(
GWEN_XMLNODE
*n,
301
const
char
*name,
int
value);
302
312
GWENHYWFAR_API
313
void
GWEN_XMLNode_CopyProperties
(
GWEN_XMLNODE
*tn,
314
const
GWEN_XMLNODE
*sn,
315
int
overwrite);
323
GWENHYWFAR_API
324
GWEN_XMLNODE_TYPE
GWEN_XMLNode_GetType
(
const
GWEN_XMLNODE
*n);
325
327
GWENHYWFAR_API
328
const
char
*
GWEN_XMLNode_GetData
(
const
GWEN_XMLNODE
*n);
329
332
GWENHYWFAR_API
333
void
GWEN_XMLNode_SetData
(
GWEN_XMLNODE
*n,
const
char
*data);
334
335
GWENHYWFAR_API
336
const
char
*
GWEN_XMLNode_GetNamespace
(
const
GWEN_XMLNODE
*n);
337
338
GWENHYWFAR_API
339
void
GWEN_XMLNode_SetNamespace
(
GWEN_XMLNODE
*n,
const
char
*s);
340
358
GWENHYWFAR_API
359
void
GWEN_XMLNode_IncUsage
(
GWEN_XMLNODE
*n);
360
361
GWENHYWFAR_API
362
void
GWEN_XMLNode_DecUsage
(
GWEN_XMLNODE
*n);
363
364
GWENHYWFAR_API
365
uint32_t
GWEN_XMLNode_GetUsage
(
const
GWEN_XMLNODE
*n);
382
GWENHYWFAR_API
383
GWEN_XMLNODE
*
GWEN_XMLNode_Next
(
const
GWEN_XMLNODE
*n);
384
392
GWENHYWFAR_API
393
GWEN_XMLNODE
*
GWEN_XMLNode_GetChild
(
const
GWEN_XMLNODE
*n);
394
397
GWENHYWFAR_API
398
GWEN_XMLNODE
*
GWEN_XMLNode_GetParent
(
const
GWEN_XMLNODE
*n);
399
408
GWENHYWFAR_API
409
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstTag
(
const
GWEN_XMLNODE
*n);
410
422
GWENHYWFAR_API
423
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextTag
(
const
GWEN_XMLNODE
*n);
424
432
GWENHYWFAR_API
433
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstData
(
const
GWEN_XMLNODE
*n);
434
446
GWENHYWFAR_API
447
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextData
(
const
GWEN_XMLNODE
*n);
448
474
GWENHYWFAR_API
475
GWEN_XMLNODE
*
GWEN_XMLNode_FindFirstTag
(
const
GWEN_XMLNODE
*n,
476
const
char
*tname,
477
const
char
*pname,
478
const
char
*pvalue);
479
485
GWENHYWFAR_API
486
GWEN_XMLNODE
*
GWEN_XMLNode_FindNextTag
(
const
GWEN_XMLNODE
*n,
487
const
char
*tname,
488
const
char
*pname,
489
const
char
*pvalue);
490
495
GWENHYWFAR_API
496
int
GWEN_XMLNode_IsChildOf
(
const
GWEN_XMLNODE
*parent,
497
const
GWEN_XMLNODE
*child);
498
499
GWENHYWFAR_API
500
int
GWEN_XMLNode_GetXPath
(
const
GWEN_XMLNODE
*n1,
501
const
GWEN_XMLNODE
*n2,
502
GWEN_BUFFER
*nbuf);
503
516
GWENHYWFAR_API
517
GWEN_XMLNODE
*
GWEN_XMLNode_GetNodeByXPath
(
GWEN_XMLNODE
*n,
518
const
char
*path,
519
uint32_t flags);
520
521
529
538
GWENHYWFAR_API
539
void
GWEN_XMLNode_AddChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
540
548
GWENHYWFAR_API
549
void
GWEN_XMLNode_UnlinkChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
550
554
GWENHYWFAR_API
555
void
GWEN_XMLNode_RemoveChildren
(
GWEN_XMLNODE
*n);
556
567
GWENHYWFAR_API
568
void
GWEN_XMLNode_AddChildrenOnly
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*nn,
569
int
copythem);
570
576
GWENHYWFAR_API
577
GWEN_XMLNODE
*
GWEN_XMLNode_FindNode
(
const
GWEN_XMLNODE
*n,
578
GWEN_XMLNODE_TYPE
t,
579
const
char
*data);
587
592
GWENHYWFAR_API
593
int
GWEN_XMLNode_NormalizeNameSpaces
(
GWEN_XMLNODE
*n);
594
595
596
597
GWENHYWFAR_API
598
int
GWEN_XMLNode_StripNamespaces
(
GWEN_XMLNODE
*n);
599
600
601
GWENHYWFAR_API
602
int
GWEN_XMLNode_Globalize
(
GWEN_XMLNODE
*n);
603
604
605
GWENHYWFAR_API
606
int
GWEN_XMLNode_GlobalizeWithList
(
GWEN_XMLNODE
*n,
607
GWEN_XMLNODE_NAMESPACE_LIST *l,
608
uint32_t *pLastId);
609
610
611
GWENHYWFAR_API
612
int
GWEN_XML_ReadFromFastBuffer
(
GWEN_XML_CONTEXT
*ctx,
GWEN_FAST_BUFFER
*fb);
613
617
GWENHYWFAR_API
618
int
GWEN_XMLContext_ReadFromIo
(
GWEN_XML_CONTEXT
*ctx,
GWEN_SYNCIO
*io);
619
620
GWENHYWFAR_API
621
int
GWEN_XMLContext_ReadFromFile
(
GWEN_XML_CONTEXT
*ctx,
const
char
*fname);
622
623
GWENHYWFAR_API
624
int
GWEN_XMLContext_ReadFromString
(
GWEN_XML_CONTEXT
*ctx,
const
char
*text);
625
626
631
GWENHYWFAR_API
632
int
GWEN_XML_ReadFile
(
GWEN_XMLNODE
*n,
const
char
*filepath, uint32_t flags);
633
634
GWENHYWFAR_API
635
GWEN_XMLNODE
*
GWEN_XMLNode_fromString
(
const
char
*s,
636
int
len,
637
uint32_t flags);
638
642
GWENHYWFAR_API
643
int
GWEN_XMLNode_WriteToStream
(
const
GWEN_XMLNODE
*n,
644
GWEN_XML_CONTEXT
*ctx,
645
GWEN_SYNCIO
*sio);
646
650
GWENHYWFAR_API
651
int
GWEN_XMLNode_WriteFile
(
const
GWEN_XMLNODE
*n,
652
const
char
*fname,
653
uint32_t flags);
654
655
GWENHYWFAR_API
656
int
GWEN_XMLNode_toBuffer
(
const
GWEN_XMLNODE
*n,
GWEN_BUFFER
*buf, uint32_t flags);
657
658
659
660
661
GWENHYWFAR_API
662
GWEN_XMLNODE_NAMESPACE_LIST *
GWEN_XMLNode_GetNameSpaces
(
const
GWEN_XMLNODE
*n);
663
664
GWENHYWFAR_API
665
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByName
(
const
GWEN_XMLNODE
*n,
666
const
char
*s);
667
668
GWENHYWFAR_API
669
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByUrl
(
const
GWEN_XMLNODE
*n,
670
const
char
*s);
671
672
GWENHYWFAR_API
673
void
GWEN_XMLNode_AddNameSpace
(
GWEN_XMLNODE
*n,
const
GWEN_XMLNODE_NAMESPACE
*ns);
674
675
676
704
710
GWENHYWFAR_API
711
const
char
*
GWEN_XMLNode_GetCharValue
(
const
GWEN_XMLNODE
*n,
712
const
char
*name,
713
const
char
*defValue);
714
715
GWENHYWFAR_API
716
void
GWEN_XMLNode_SetCharValue
(
GWEN_XMLNODE
*n,
717
const
char
*name,
718
const
char
*value);
719
732
GWENHYWFAR_API
733
const
char
*
GWEN_XMLNode_GetLocalizedCharValue
(
const
GWEN_XMLNODE
*n,
734
const
char
*name,
735
const
char
*defValue);
736
744
GWENHYWFAR_API
745
int
GWEN_XMLNode_GetIntValue
(
const
GWEN_XMLNODE
*n,
746
const
char
*name,
747
int
defValue);
748
749
GWENHYWFAR_API
750
void
GWEN_XMLNode_SetIntValue
(
GWEN_XMLNODE
*n,
751
const
char
*name,
752
int
value);
753
781
788
GWENHYWFAR_API
789
const
char
*
GWEN_XMLNode_GetCharValueByPath
(
GWEN_XMLNODE
*n,
790
const
char
*path,
791
const
char
*defValue);
792
793
GWENHYWFAR_API
794
int
GWEN_XMLNode_SetCharValueByPath
(
GWEN_XMLNODE
*n, uint32_t flags,
795
const
char
*name,
796
const
char
*value);
797
804
GWENHYWFAR_API
805
int
GWEN_XMLNode_GetIntValueByPath
(
GWEN_XMLNODE
*n,
806
const
char
*name,
807
int
defValue);
808
809
GWENHYWFAR_API
810
int
GWEN_XMLNode_SetIntValueByPath
(
GWEN_XMLNODE
*n, uint32_t flags,
811
const
char
*name,
812
int
value);
813
822
826
GWENHYWFAR_API
827
void
GWEN_XMLNode_Dump
(
const
GWEN_XMLNODE
*n,
int
ind);
830
/* defgroup */
831
832
840
841
typedef
struct
GWEN_XMLNODE_PATH
GWEN_XMLNODE_PATH
;
842
843
844
GWENHYWFAR_API
845
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_new
(
void
);
846
GWENHYWFAR_API
847
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_dup
(
const
GWEN_XMLNODE_PATH
*np);
848
GWENHYWFAR_API
849
void
GWEN_XMLNode_Path_free
(
GWEN_XMLNODE_PATH
*np);
850
854
GWENHYWFAR_API
855
int
GWEN_XMLNode_Path_Dive
(
GWEN_XMLNODE_PATH
*np,
856
GWEN_XMLNODE
*n);
857
862
GWENHYWFAR_API
863
GWEN_XMLNODE
*
GWEN_XMLNode_Path_Surface
(
GWEN_XMLNODE_PATH
*np);
864
868
GWENHYWFAR_API
869
void
GWEN_XMLNode_Path_Dump
(
GWEN_XMLNODE_PATH
*np);
/* defgroup */
/* defgroup (all)*/
872
873
874
875
GWENHYWFAR_API
876
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_new
(
const
char
*name,
877
const
char
*url);
878
879
GWENHYWFAR_API
880
void
GWEN_XMLNode_NameSpace_free
(
GWEN_XMLNODE_NAMESPACE
*ns);
881
882
GWENHYWFAR_API
883
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_dup
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
884
885
GWENHYWFAR_API
886
const
char
*
GWEN_XMLNode_NameSpace_GetName
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
887
888
GWENHYWFAR_API
889
const
char
*
GWEN_XMLNode_NameSpace_GetUrl
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
890
891
892
#ifdef __cplusplus
893
}
894
#endif
895
896
897
898
#endif
Generated on Wed Aug 21 2013 18:32:11 for gwenhywfar by
1.8.4