gwenhywfar
4.3.3
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
284
GWENHYWFAR_API
285
void
GWEN_XMLNode_CopyProperties
(
GWEN_XMLNODE
*tn,
286
const
GWEN_XMLNODE
*sn,
287
int
overwrite);
295
GWENHYWFAR_API
296
GWEN_XMLNODE_TYPE
GWEN_XMLNode_GetType
(
const
GWEN_XMLNODE
*n);
297
299
GWENHYWFAR_API
300
const
char
*
GWEN_XMLNode_GetData
(
const
GWEN_XMLNODE
*n);
301
304
GWENHYWFAR_API
305
void
GWEN_XMLNode_SetData
(
GWEN_XMLNODE
*n,
const
char
*data);
306
307
GWENHYWFAR_API
308
const
char
*
GWEN_XMLNode_GetNamespace
(
const
GWEN_XMLNODE
*n);
309
310
GWENHYWFAR_API
311
void
GWEN_XMLNode_SetNamespace
(
GWEN_XMLNODE
*n,
const
char
*s);
312
330
GWENHYWFAR_API
331
void
GWEN_XMLNode_IncUsage
(
GWEN_XMLNODE
*n);
332
333
GWENHYWFAR_API
334
void
GWEN_XMLNode_DecUsage
(
GWEN_XMLNODE
*n);
335
336
GWENHYWFAR_API
337
uint32_t
GWEN_XMLNode_GetUsage
(
const
GWEN_XMLNODE
*n);
354
GWENHYWFAR_API
355
GWEN_XMLNODE
*
GWEN_XMLNode_Next
(
const
GWEN_XMLNODE
*n);
356
364
GWENHYWFAR_API
365
GWEN_XMLNODE
*
GWEN_XMLNode_GetChild
(
const
GWEN_XMLNODE
*n);
366
369
GWENHYWFAR_API
370
GWEN_XMLNODE
*
GWEN_XMLNode_GetParent
(
const
GWEN_XMLNODE
*n);
371
380
GWENHYWFAR_API
381
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstTag
(
const
GWEN_XMLNODE
*n);
382
394
GWENHYWFAR_API
395
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextTag
(
const
GWEN_XMLNODE
*n);
396
404
GWENHYWFAR_API
405
GWEN_XMLNODE
*
GWEN_XMLNode_GetFirstData
(
const
GWEN_XMLNODE
*n);
406
418
GWENHYWFAR_API
419
GWEN_XMLNODE
*
GWEN_XMLNode_GetNextData
(
const
GWEN_XMLNODE
*n);
420
446
GWENHYWFAR_API
447
GWEN_XMLNODE
*
GWEN_XMLNode_FindFirstTag
(
const
GWEN_XMLNODE
*n,
448
const
char
*tname,
449
const
char
*pname,
450
const
char
*pvalue);
451
457
GWENHYWFAR_API
458
GWEN_XMLNODE
*
GWEN_XMLNode_FindNextTag
(
const
GWEN_XMLNODE
*n,
459
const
char
*tname,
460
const
char
*pname,
461
const
char
*pvalue);
462
467
GWENHYWFAR_API
468
int
GWEN_XMLNode_IsChildOf
(
const
GWEN_XMLNODE
*parent,
469
const
GWEN_XMLNODE
*child);
470
471
GWENHYWFAR_API
472
int
GWEN_XMLNode_GetXPath
(
const
GWEN_XMLNODE
*n1,
473
const
GWEN_XMLNODE
*n2,
474
GWEN_BUFFER
*nbuf);
475
488
GWENHYWFAR_API
489
GWEN_XMLNODE
*
GWEN_XMLNode_GetNodeByXPath
(
GWEN_XMLNODE
*n,
490
const
char
*path,
491
uint32_t flags);
492
493
501
510
GWENHYWFAR_API
511
void
GWEN_XMLNode_AddChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
512
520
GWENHYWFAR_API
521
void
GWEN_XMLNode_UnlinkChild
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*child);
522
526
GWENHYWFAR_API
527
void
GWEN_XMLNode_RemoveChildren
(
GWEN_XMLNODE
*n);
528
539
GWENHYWFAR_API
540
void
GWEN_XMLNode_AddChildrenOnly
(
GWEN_XMLNODE
*n,
GWEN_XMLNODE
*nn,
541
int
copythem);
542
548
GWENHYWFAR_API
549
GWEN_XMLNODE
*
GWEN_XMLNode_FindNode
(
const
GWEN_XMLNODE
*n,
550
GWEN_XMLNODE_TYPE
t,
551
const
char
*data);
559
564
GWENHYWFAR_API
565
int
GWEN_XMLNode_NormalizeNameSpaces
(
GWEN_XMLNODE
*n);
566
567
568
569
GWENHYWFAR_API
570
int
GWEN_XMLNode_StripNamespaces
(
GWEN_XMLNODE
*n);
571
572
573
GWENHYWFAR_API
574
int
GWEN_XMLNode_Globalize
(
GWEN_XMLNODE
*n);
575
576
577
GWENHYWFAR_API
578
int
GWEN_XMLNode_GlobalizeWithList
(
GWEN_XMLNODE
*n,
579
GWEN_XMLNODE_NAMESPACE_LIST *l,
580
uint32_t *pLastId);
581
582
583
GWENHYWFAR_API
584
int
GWEN_XML_ReadFromFastBuffer
(
GWEN_XML_CONTEXT
*ctx,
GWEN_FAST_BUFFER
*fb);
585
589
GWENHYWFAR_API
590
int
GWEN_XMLContext_ReadFromIo
(
GWEN_XML_CONTEXT
*ctx,
GWEN_SYNCIO
*io);
591
592
GWENHYWFAR_API
593
int
GWEN_XMLContext_ReadFromFile
(
GWEN_XML_CONTEXT
*ctx,
const
char
*fname);
594
595
GWENHYWFAR_API
596
int
GWEN_XMLContext_ReadFromString
(
GWEN_XML_CONTEXT
*ctx,
const
char
*text);
597
598
603
GWENHYWFAR_API
604
int
GWEN_XML_ReadFile
(
GWEN_XMLNODE
*n,
const
char
*filepath, uint32_t flags);
605
606
GWENHYWFAR_API
607
GWEN_XMLNODE
*
GWEN_XMLNode_fromString
(
const
char
*s,
608
int
len,
609
uint32_t flags);
610
614
GWENHYWFAR_API
615
int
GWEN_XMLNode_WriteToStream
(
const
GWEN_XMLNODE
*n,
616
GWEN_XML_CONTEXT
*ctx,
617
GWEN_SYNCIO
*sio);
618
622
GWENHYWFAR_API
623
int
GWEN_XMLNode_WriteFile
(
const
GWEN_XMLNODE
*n,
624
const
char
*fname,
625
uint32_t flags);
626
627
GWENHYWFAR_API
628
int
GWEN_XMLNode_toBuffer
(
const
GWEN_XMLNODE
*n,
GWEN_BUFFER
*buf, uint32_t flags);
629
630
631
632
633
GWENHYWFAR_API
634
GWEN_XMLNODE_NAMESPACE_LIST *
GWEN_XMLNode_GetNameSpaces
(
const
GWEN_XMLNODE
*n);
635
636
GWENHYWFAR_API
637
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByName
(
const
GWEN_XMLNODE
*n,
638
const
char
*s);
639
640
GWENHYWFAR_API
641
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_FindNameSpaceByUrl
(
const
GWEN_XMLNODE
*n,
642
const
char
*s);
643
644
GWENHYWFAR_API
645
void
GWEN_XMLNode_AddNameSpace
(
GWEN_XMLNODE
*n,
const
GWEN_XMLNODE_NAMESPACE
*ns);
646
647
648
673
679
GWENHYWFAR_API
680
const
char
*
GWEN_XMLNode_GetCharValue
(
const
GWEN_XMLNODE
*n,
681
const
char
*name,
682
const
char
*defValue);
683
684
GWENHYWFAR_API
685
void
GWEN_XMLNode_SetCharValue
(
GWEN_XMLNODE
*n,
686
const
char
*name,
687
const
char
*value);
688
701
GWENHYWFAR_API
702
const
char
*
GWEN_XMLNode_GetLocalizedCharValue
(
const
GWEN_XMLNODE
*n,
703
const
char
*name,
704
const
char
*defValue);
705
713
GWENHYWFAR_API
714
int
GWEN_XMLNode_GetIntValue
(
const
GWEN_XMLNODE
*n,
715
const
char
*name,
716
int
defValue);
717
718
GWENHYWFAR_API
719
void
GWEN_XMLNode_SetIntValue
(
GWEN_XMLNODE
*n,
720
const
char
*name,
721
int
value);
722
730
734
GWENHYWFAR_API
735
void
GWEN_XMLNode_Dump
(
const
GWEN_XMLNODE
*n,
int
ind);
738
/* defgroup */
739
740
748
749
typedef
struct
GWEN_XMLNODE_PATH
GWEN_XMLNODE_PATH
;
750
751
752
GWENHYWFAR_API
753
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_new
(
void
);
754
GWENHYWFAR_API
755
GWEN_XMLNODE_PATH
*
GWEN_XMLNode_Path_dup
(
const
GWEN_XMLNODE_PATH
*np);
756
GWENHYWFAR_API
757
void
GWEN_XMLNode_Path_free
(
GWEN_XMLNODE_PATH
*np);
758
762
GWENHYWFAR_API
763
int
GWEN_XMLNode_Path_Dive
(
GWEN_XMLNODE_PATH
*np,
764
GWEN_XMLNODE
*n);
765
770
GWENHYWFAR_API
771
GWEN_XMLNODE
*
GWEN_XMLNode_Path_Surface
(
GWEN_XMLNODE_PATH
*np);
772
776
GWENHYWFAR_API
777
void
GWEN_XMLNode_Path_Dump
(
GWEN_XMLNODE_PATH
*np);
/* defgroup */
/* defgroup (all)*/
780
781
782
783
GWENHYWFAR_API
784
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_new
(
const
char
*name,
785
const
char
*url);
786
787
GWENHYWFAR_API
788
void
GWEN_XMLNode_NameSpace_free
(
GWEN_XMLNODE_NAMESPACE
*ns);
789
790
GWENHYWFAR_API
791
GWEN_XMLNODE_NAMESPACE
*
GWEN_XMLNode_NameSpace_dup
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
792
793
GWENHYWFAR_API
794
const
char
*
GWEN_XMLNode_NameSpace_GetName
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
795
796
GWENHYWFAR_API
797
const
char
*
GWEN_XMLNode_NameSpace_GetUrl
(
const
GWEN_XMLNODE_NAMESPACE
*ns);
798
799
800
#ifdef __cplusplus
801
}
802
#endif
803
804
805
806
#endif
Generated on Thu Mar 20 2014 17:06:00 for gwenhywfar by
1.8.1.2