xml.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id: xml.h 1087 2006-09-14 00:30:15Z martin $
00005  begin       : Sat Jun 28 2003
00006  copyright   : (C) 2003 by Martin Preuss
00007  email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 
00028 #ifndef GWENHYWFAR_XML_H
00029 #define GWENHYWFAR_XML_H
00030 
00031 #include <gwenhywfar/gwenhywfarapi.h>
00032 #include <gwenhywfar/bufferedio.h>
00033 #include <gwenhywfar/stringlist.h>
00034 #include <gwenhywfar/types.h>
00035 #include <gwenhywfar/list2.h>
00036 #include <stdio.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041 
00047 
00052 
00053 
00057 
00061 #define GWEN_XML_FLAGS_READ_COMMENTS        0x0001
00062 
00066 #define GWEN_XML_FLAGS_SHARE_TOPLEVEL       0x0002
00067 
00072 #define GWEN_XML_FLAGS_INCLUDE_TO_TOPLEVEL  0x0004
00073 
00079 #define GWEN_XML_FLAGS_IGNORE_INCLUDE       0x0008
00080 
00084 #define GWEN_XML_FLAGS_WRITE_COMMENTS       0x0010
00085 
00090 #define GWEN_XML_FLAGS_INDENT               0x0020
00091 
00097 #define GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS 0x0040
00098 
00103 #define GWEN_XML_FLAGS_NO_CONDENSE          0x0080
00104 
00109 #define GWEN_XML_FLAGS_KEEP_CNTRL           0x0100
00110 
00114 #define GWEN_XML_FLAGS_IGNORE_DESCR         0x0200
00115 
00116 #define GWEN_XML_FLAGS_KEEP_BLANKS          0x0400
00117 
00118 #define GWEN_XML_FLAGS_SIMPLE               0x0800
00119 
00123 #define GWEN_XML_FLAGS_HANDLE_HEADERS       0x1000
00124 
00128 #define GWEN_XML_FLAGS_DEFAULT \
00129   (\
00130   GWEN_XML_FLAGS_INDENT | \
00131   GWEN_XML_FLAGS_WRITE_COMMENTS\
00132   )
00133 
00139 typedef enum {
00142   GWEN_XMLNodeTypeTag=0,
00144   GWEN_XMLNodeTypeData,
00146   GWEN_XMLNodeTypeComment
00147 } GWEN_XMLNODE_TYPE;
00148 
00152 typedef struct GWEN__XMLNODE GWEN_XMLNODE;
00153 
00154 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_XMLNODE, GWEN_XMLNode, GWENHYWFAR_API)
00155 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_XMLNODE, GWEN_XMLNode, GWENHYWFAR_API)
00156 
00157 
00158 typedef int
00159     (*GWEN_XML_INCLUDE_FN)(GWEN_XMLNODE *n,
00160                            const char *path,
00161                            const char *file,
00162                            GWEN_STRINGLIST *sl,
00163                            GWEN_TYPE_UINT32 flags);
00164 
00165 
00166 
00171 GWENHYWFAR_API
00172 GWEN_XMLNODE *GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data);
00173 
00177 GWENHYWFAR_API
00178 void GWEN_XMLNode_free(GWEN_XMLNODE *n);
00179 
00185 GWENHYWFAR_API
00186 void GWEN_XMLNode_freeAll(GWEN_XMLNODE *n);
00187 
00191 GWENHYWFAR_API
00192 GWEN_XMLNODE *GWEN_XMLNode_dup(const GWEN_XMLNODE *n);
00193 
00194 GWENHYWFAR_API
00195   GWEN_XMLNODE *GWEN_XMLNode_fromString(const char *s,
00196                                         int len,
00197                                         GWEN_TYPE_UINT32 flags);
00198 
00222 
00227 GWENHYWFAR_API
00228 GWEN_XMLNODE *GWEN_XMLNode_GetHeader(const GWEN_XMLNODE *n);
00229 
00233 GWENHYWFAR_API
00234 void GWEN_XMLNode_AddHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh);
00235 
00240 GWENHYWFAR_API
00241 void GWEN_XMLNode_DelHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh);
00242 
00247 GWENHYWFAR_API
00248 void GWEN_XMLNode_ClearHeaders(GWEN_XMLNODE *root);
00249 
00273 GWENHYWFAR_API
00274   const char *GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n,
00275                                        const char *name,
00276                                        const char *defaultValue);
00277 
00285 GWENHYWFAR_API
00286   void GWEN_XMLNode_SetProperty(GWEN_XMLNODE *n,
00287                                 const char *name,
00288                                 const char *value);
00289 
00299 GWENHYWFAR_API
00300   void GWEN_XMLNode_CopyProperties(GWEN_XMLNODE *tn,
00301                                    const GWEN_XMLNODE *sn,
00302                                    int overwrite);
00310 GWENHYWFAR_API
00311 GWEN_XMLNODE_TYPE GWEN_XMLNode_GetType(const GWEN_XMLNODE *n);
00312 
00314 GWENHYWFAR_API
00315 const char *GWEN_XMLNode_GetData(const GWEN_XMLNODE *n);
00316 
00319 GWENHYWFAR_API
00320   void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data);
00338 GWENHYWFAR_API
00339   void GWEN_XMLNode_IncUsage(GWEN_XMLNODE *n);
00340 
00341 GWENHYWFAR_API
00342   void GWEN_XMLNode_DecUsage(GWEN_XMLNODE *n);
00343 
00344 GWENHYWFAR_API
00345   GWEN_TYPE_UINT32 GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n);
00362 GWENHYWFAR_API
00363 GWEN_XMLNODE *GWEN_XMLNode_Next(const GWEN_XMLNODE *n);
00364 
00372 GWENHYWFAR_API
00373 GWEN_XMLNODE *GWEN_XMLNode_GetChild(const GWEN_XMLNODE *n);
00374 
00377 GWENHYWFAR_API
00378   GWEN_XMLNODE *GWEN_XMLNode_GetParent(const GWEN_XMLNODE *n);
00379 
00388 GWENHYWFAR_API
00389 GWEN_XMLNODE *GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n);
00390 
00402 GWENHYWFAR_API
00403 GWEN_XMLNODE *GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n);
00404 
00412 GWENHYWFAR_API
00413 GWEN_XMLNODE *GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n);
00414 
00426 GWENHYWFAR_API
00427 GWEN_XMLNODE *GWEN_XMLNode_GetNextData(const GWEN_XMLNODE *n);
00428 
00454 GWENHYWFAR_API
00455 GWEN_XMLNODE *GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n,
00456                                         const char *tname,
00457                                         const char *pname,
00458                                         const char *pvalue);
00459 
00465 GWENHYWFAR_API
00466 GWEN_XMLNODE *GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n,
00467                                        const char *tname,
00468                                        const char *pname,
00469                                        const char *pvalue);
00470 
00475 GWENHYWFAR_API
00476 int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent,
00477                            const GWEN_XMLNODE *child);
00478 
00479 GWENHYWFAR_API
00480 int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1,
00481                           const GWEN_XMLNODE *n2,
00482                           GWEN_BUFFER *nbuf);
00483 
00496 GWENHYWFAR_API
00497 GWEN_XMLNODE *GWEN_XMLNode_GetNodeByXPath(GWEN_XMLNODE *n,
00498                                           const char *path,
00499                                           GWEN_TYPE_UINT32 flags);
00500 
00501 
00509 
00518 GWENHYWFAR_API
00519   void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00520 
00528 GWENHYWFAR_API
00529   void GWEN_XMLNode_UnlinkChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00530 
00534 GWENHYWFAR_API
00535   void GWEN_XMLNode_RemoveChildren(GWEN_XMLNODE *n);
00536 
00547 GWENHYWFAR_API
00548   void GWEN_XMLNode_AddChildrenOnly(GWEN_XMLNODE *n, GWEN_XMLNODE *nn,
00549                                     int copythem);
00550 
00556 GWENHYWFAR_API
00557 GWEN_XMLNODE *GWEN_XMLNode_FindNode(const GWEN_XMLNODE *n,
00558                                     GWEN_XMLNODE_TYPE t,
00559                                     const char *data);
00571 GWENHYWFAR_API
00572 int GWEN_XML_Parse(GWEN_XMLNODE *n, GWEN_BUFFEREDIO *bio,
00573                    GWEN_TYPE_UINT32 flags);
00574 
00575 
00580 GWENHYWFAR_API
00581 int GWEN_XMLNode_NormalizeNameSpaces(GWEN_XMLNODE *n);
00582 
00583 
00588 GWENHYWFAR_API
00589 int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath,
00590                       GWEN_TYPE_UINT32 flags);
00591 
00603 GWENHYWFAR_API
00604   int GWEN_XML_ReadFileSearch(GWEN_XMLNODE *n, const char *filepath,
00605                               GWEN_TYPE_UINT32 flags,
00606                               GWEN_STRINGLIST *searchPath);
00607 
00608 
00612 GWENHYWFAR_API
00613 int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n,
00614                                GWEN_BUFFEREDIO *bio,
00615                                GWEN_TYPE_UINT32 flags);
00616 
00620 GWENHYWFAR_API
00621 int GWEN_XMLNode_WriteFile(const GWEN_XMLNODE *n,
00622                            const char *fname,
00623                            GWEN_TYPE_UINT32 flags);
00624 
00649 
00655 GWENHYWFAR_API
00656 const char *GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n,
00657                                       const char *name,
00658                                       const char *defValue);
00659 
00660 GWENHYWFAR_API
00661   void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n,
00662                                  const char *name,
00663                                  const char *value);
00664 
00677 GWENHYWFAR_API
00678 const char *GWEN_XMLNode_GetLocalizedCharValue(const GWEN_XMLNODE *n,
00679                                                const char *name,
00680                                                const char *defValue);
00681 
00689 GWENHYWFAR_API
00690 int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n,
00691                              const char *name,
00692                              int defValue);
00693 
00694 GWENHYWFAR_API
00695 void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n,
00696                               const char *name,
00697                               int value);
00698 
00706 
00710 GWENHYWFAR_API
00711 void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, FILE *f, int ind);
00714  /* defgroup */
00715 
00716 
00724 
00725 typedef struct GWEN_XMLNODE_PATH GWEN_XMLNODE_PATH;
00726 
00727 
00728 GWENHYWFAR_API
00729 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_new();
00730 GWENHYWFAR_API
00731 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_dup(const GWEN_XMLNODE_PATH *np);
00732 GWENHYWFAR_API
00733 void GWEN_XMLNode_Path_free(GWEN_XMLNODE_PATH *np);
00734 
00738 GWENHYWFAR_API
00739 int GWEN_XMLNode_Path_Dive(GWEN_XMLNODE_PATH *np,
00740                            GWEN_XMLNODE *n);
00741 
00746 GWENHYWFAR_API
00747   GWEN_XMLNODE *GWEN_XMLNode_Path_Surface(GWEN_XMLNODE_PATH *np);
00748 
00752 GWENHYWFAR_API
00753 void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np); /* defgroup */ /* defgroup (all)*/
00756 
00757 
00758 #ifdef __cplusplus
00759 }
00760 #endif
00761 
00762 
00763 
00764 #endif

Generated on Tue May 1 12:56:30 2007 for gwenhywfar by  doxygen 1.5.1