gwenhywfar
4.6.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
121
typedef
enum
{
124
GWEN_XMLNodeTypeTag
=0,
126
GWEN_XMLNodeTypeData
,
128
GWEN_XMLNodeTypeComment
129
}
GWEN_XMLNODE_TYPE
;
130
134
typedef
struct
GWEN__XMLNODE
GWEN_XMLNODE
;
135
typedef
struct
GWEN_XMLNODE_NAMESPACE
GWEN_XMLNODE_NAMESPACE
;
136
137
GWEN_LIST_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE
, GWEN_XMLNode,
GWENHYWFAR_API
)
138
GWEN_LIST2_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE
, GWEN_XMLNode,
GWENHYWFAR_API
)
139
140
GWEN_LIST_FUNCTION_LIB_DEFS
(
GWEN_XMLNODE_NAMESPACE
, GWEN_XMLNode_NameSpace,
GWENHYWFAR_API
)
141
142
#ifdef __cplusplus
143
}
144
#endif
145
146
147
#include <gwenhywfar/xmlctx.h>
148
#include <gwenhywfar/fastbuffer.h>
149
150
151
#ifdef __cplusplus
152
extern
"C"
{
153
#endif
154
155
156
161
GWENHYWFAR_API
162
GWEN_XMLNODE
*
GWEN_XMLNode_new
(
GWEN_XMLNODE_TYPE
t,
const
char
*data);
163
167
GWENHYWFAR_API
168
void
GWEN_XMLNode_free
(
GWEN_XMLNODE
*n);
169
175
GWENHYWFAR_API
176
void
GWEN_XMLNode_freeAll
(
GWEN_XMLNODE
*n);
177
181
GWENHYWFAR_API
182
GWEN_XMLNODE
*
GWEN_XMLNode_dup
(
const
GWEN_XMLNODE
*n);
183
207
212
GWENHYWFAR_API
213
GWEN_XMLNODE
*
GWEN_XMLNode_GetHeader
(
const
GWEN_XMLNODE
*n);
214
218
GWENHYWFAR_API
219
void
GWEN_XMLNode_AddHeader
(
GWEN_XMLNODE
*root,
GWEN_XMLNODE
*nh);
220
225
GWENHYWFAR_API
226
void
GWEN_XMLNode_DelHeader
(
GWEN_XMLNODE
*root,
GWEN_XMLNODE
*nh);
227
232
GWENHYWFAR_API
233
void
GWEN_XMLNode_ClearHeaders
(
GWEN_XMLNODE
*root);
234
258
GWENHYWFAR_API
259
const
char
*
GWEN_XMLNode_GetProperty
(
const
GWEN_XMLNODE
*n,
260
const
char
*name,
261
const
char
*defaultValue);
262
270
GWENHYWFAR_API
271
void
GWEN_XMLNode_SetProperty
(
GWEN_XMLNODE
*n,
272
const
char
*name,
273
const
char
*value);
274
279
GWENHYWFAR_API
280
int
GWEN_XMLNode_GetIntProperty
(
const
GWEN_XMLNODE
*n,
const
char
*name,
281
int
defaultValue);
282
286
GWENHYWFAR_API
287
void
GWEN_XMLNode_SetIntProperty
(
GWEN_XMLNODE
*n,
288
const
char
*name,
int
value);
289
299
GWENHYWFAR_API
300
void
GWEN_XMLNode_CopyProperties
(
GWEN_XMLNODE
*tn,
301
const
GWEN_XMLNODE
*sn,
302
int
overwrite);
310
GWENHYWFAR_API
311
GWEN_XMLNODE_TYPE
GWEN_XMLNode_GetType
(
const
GWEN_XMLNODE
*n);
312
314
GWENHYWFAR_API
315
const
char
*
GWEN_XMLNode_GetData
(
const
GWEN_XMLNODE
*n);
316
319
GWENHYWFAR_API
320
void
GWEN_XMLNode_SetData
(
GWEN_XMLNODE
*n,
const
char
*data);
321
322
GWENHYWFAR_API
323
const
char
*
GWEN_XMLNode_GetNamespace
(
const
GWEN_XMLNODE
*n);
324
325
GWENHYWFAR_API
326
void
GWEN_XMLNode_SetNamespace
(
GWEN_XMLNODE
*n,
const
char
*s);
327
345
GWENHYWFAR_API
346
void
GWEN_XMLNode_IncUsage
(
GWEN_XMLNODE
*n);
347
348
GWENHYWFAR_API
349
void
GWEN_XMLNode_DecUsage
(
GWEN_XMLNODE
*n);
350
351
GWENHYWFAR_API
352
uint32_t
GWEN_XMLNode_GetUsage
(
const
GWEN_XMLNODE
*n);
369
GWENHYWFAR_API
370
GWEN_XMLNODE
*
GWEN_XMLNode_Next
(
const
GWEN_XMLNODE
*n);
371
379
GWENHYWFAR_API
380
GWEN_XMLNODE
*
GWEN_XMLNode_GetChild
(
const
GWEN_XMLNODE
*n);
381
384
GWENHYWFAR_API
385
GWEN_XMLNODE
*
GWEN_XMLNode_GetParent
(
const
GWEN_XMLNODE
*n);
386
395
GWENHYWFAR_API
396
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstTag
(
const
GWEN_XMLNODE
*n);
397
409
GWENHYWFAR_API
410
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextTag
(
const
GWEN_XMLNODE
*n);
411
419
GWENHYWFAR_API
420
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstData
(
const
GWEN_XMLNODE
*n);
421
433
GWENHYWFAR_API
434
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextData
(
const
GWEN_XMLNODE
*n);
435
461
GWENHYWFAR_API
462
GWEN_XMLNODE
*
GWEN_XMLNode_FindFirstTag
(
const
GWEN_XMLNODE
*n,
463
const
char
*tname,
464
const
char
*pname,
465
const
char
*pvalue);
466
472
GWENHYWFAR_API
473
GWEN_XMLNODE
*
GWEN_XMLNode_FindNextTag
(
const
GWEN_XMLNODE
*n,
474
const
char
*tname,
475
const
char
*pname,
476
const
char
*pvalue);
477
482
GWENHYWFAR_API
483
int
GWEN_XMLNode_IsChildOf
(
const
GWEN_XMLNODE
*parent,
484
const
GWEN_XMLNODE
*child);
485
486
GWENHYWFAR_API
487
int
GWEN_XMLNode_GetXPath
(
const
GWEN_XMLNODE
*n1,
488
const
GWEN_XMLNODE
*n2,
489
GWEN_BUFFER
*nbuf);
490
503
GWENHYWFAR_API
504
GWEN_XMLNODE
*
GWEN_XMLNode_GetNodeByXPath
(
GWEN_XMLNODE
*n,
505
const
char
*path,
506
uint32_t flags);
507
508
516
525
GWENHYWFAR_API
526
void
GWEN_XMLNode_AddChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
527
535
GWENHYWFAR_API
536
void
GWEN_XMLNode_UnlinkChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
537
541
GWENHYWFAR_API
542
void
GWEN_XMLNode_RemoveChildren
(
GWEN_XMLNODE
*n);
543
554
GWENHYWFAR_API
555
void
GWEN_XMLNode_AddChildrenOnly
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*nn,
556
int
copythem);
557
563
GWENHYWFAR_API
564
GWEN_XMLNODE
*
GWEN_XMLNode_FindNode
(
const
GWEN_XMLNODE
*n,
565
GWEN_XMLNODE_TYPE
t,
566
const
char
*data);
574
579
GWENHYWFAR_API
580
int
GWEN_XMLNode_NormalizeNameSpaces
(
GWEN_XMLNODE
*n);
581
582
583
584
GWENHYWFAR_API
585
int
GWEN_XMLNode_StripNamespaces
(
GWEN_XMLNODE
*n);
586
587
588
GWENHYWFAR_API
589
int
GWEN_XMLNode_Globalize
(
GWEN_XMLNODE
*n);
590
591
592
GWENHYWFAR_API
593
int
GWEN_XMLNode_GlobalizeWithList
(
GWEN_XMLNODE
*n,
594
GWEN_XMLNODE_NAMESPACE_LIST *l,
595
uint32_t *pLastId);
596
597
598
GWENHYWFAR_API
599
int
GWEN_XML_ReadFromFastBuffer
(
GWEN_XML_CONTEXT
*ctx,
GWEN_FAST_BUFFER
*fb);
600
604
GWENHYWFAR_API
605
int
GWEN_XMLContext_ReadFromIo
(
GWEN_XML_CONTEXT
*ctx,
GWEN_SYNCIO
*io);
606
607
GWENHYWFAR_API
608
int
GWEN_XMLContext_ReadFromFile
(
GWEN_XML_CONTEXT
*ctx,
const
char
*fname);
609
610
GWENHYWFAR_API
611
int
GWEN_XMLContext_ReadFromString
(
GWEN_XML_CONTEXT
*ctx,
const
char
*text);
612
613
618
GWENHYWFAR_API
619
int
GWEN_XML_ReadFile
(
GWEN_XMLNODE
*n,
const
char
*filepath, uint32_t flags);
620
621
GWENHYWFAR_API
622
GWEN_XMLNODE
*
GWEN_XMLNode_fromString
(
const
char
*s,
623
int
len,
624
uint32_t flags);
625
629
GWENHYWFAR_API
630
int
GWEN_XMLNode_WriteToStream
(
const
GWEN_XMLNODE
*n,
631
GWEN_XML_CONTEXT
*ctx,
632
GWEN_SYNCIO
*sio);
633
637
GWENHYWFAR_API
638
int
GWEN_XMLNode_WriteFile
(
const
GWEN_XMLNODE
*n,
639
const
char
*fname,
640
uint32_t flags);
641
642
GWENHYWFAR_API
643
int
GWEN_XMLNode_toBuffer
(
const
GWEN_XMLNODE
*n,
GWEN_BUFFER
*buf, uint32_t flags);
644
645
646
647
648
GWENHYWFAR_API
649
GWEN_XMLNODE_NAMESPACE_LIST *
GWEN_XMLNode_GetNameSpaces
(
const
GWEN_XMLNODE
*n);
650
651
GWENHYWFAR_API
652
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByName
(
const
GWEN_XMLNODE
*n,
653
const
char
*s);
654
655
GWENHYWFAR_API
656
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByUrl
(
const
GWEN_XMLNODE
*n,
657
const
char
*s);
658
659
GWENHYWFAR_API
660
void
GWEN_XMLNode_AddNameSpace
(
GWEN_XMLNODE
*n,
const
GWEN_XMLNODE_NAMESPACE
*ns);
661
662
663
688
694
GWENHYWFAR_API
695
const
char
*
GWEN_XMLNode_GetCharValue
(
const
GWEN_XMLNODE
*n,
696
const
char
*name,
697
const
char
*defValue);
698
699
GWENHYWFAR_API
700
void
GWEN_XMLNode_SetCharValue
(
GWEN_XMLNODE
*n,
701
const
char
*name,
702
const
char
*value);
703
716
GWENHYWFAR_API
717
const
char
*
GWEN_XMLNode_GetLocalizedCharValue
(
const
GWEN_XMLNODE
*n,
718
const
char
*name,
719
const
char
*defValue);
720
728
GWENHYWFAR_API
729
int
GWEN_XMLNode_GetIntValue
(
const
GWEN_XMLNODE
*n,
730
const
char
*name,
731
int
defValue);
732
733
GWENHYWFAR_API
734
void
GWEN_XMLNode_SetIntValue
(
GWEN_XMLNODE
*n,
735
const
char
*name,
736
int
value);
737
745
749
GWENHYWFAR_API
750
void
GWEN_XMLNode_Dump
(
const
GWEN_XMLNODE
*n,
int
ind);
753
/* defgroup */
754
755
763
764
typedef
struct
GWEN_XMLNODE_PATH
GWEN_XMLNODE_PATH
;
765
766
767
GWENHYWFAR_API
768
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_new
(
void
);
769
GWENHYWFAR_API
770
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_dup
(
const
GWEN_XMLNODE_PATH
*np);
771
GWENHYWFAR_API
772
void
GWEN_XMLNode_Path_free
(
GWEN_XMLNODE_PATH
*np);
773
777
GWENHYWFAR_API
778
int
GWEN_XMLNode_Path_Dive
(
GWEN_XMLNODE_PATH
*np,
779
GWEN_XMLNODE
*n);
780
785
GWENHYWFAR_API
786
GWEN_XMLNODE
*
GWEN_XMLNode_Path_Surface
(
GWEN_XMLNODE_PATH
*np);
787
791
GWENHYWFAR_API
792
void
GWEN_XMLNode_Path_Dump
(
GWEN_XMLNODE_PATH
*np);
/* defgroup */
/* defgroup (all)*/
795
796
797
798
GWENHYWFAR_API
799
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_new
(
const
char
*name,
800
const
char
*url);
801
802
GWENHYWFAR_API
803
void
GWEN_XMLNode_NameSpace_free
(
GWEN_XMLNODE_NAMESPACE
*ns);
804
805
GWENHYWFAR_API
806
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_dup
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
807
808
GWENHYWFAR_API
809
const
char
*
GWEN_XMLNode_NameSpace_GetName
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
810
811
GWENHYWFAR_API
812
const
char
*
GWEN_XMLNode_NameSpace_GetUrl
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
813
814
815
#ifdef __cplusplus
816
}
817
#endif
818
819
820
821
#endif
Generated on Wed May 29 2013 05:31:48 for gwenhywfar by
1.8.3.1