xml.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id$
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 <gwenhywfar/iolayer.h>
00037 
00038 #include <stdio.h>
00039 
00040 
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044 
00050 
00055 
00056 
00060 
00064 #define GWEN_XML_FLAGS_HANDLE_COMMENTS      0x0001
00065 
00070 #define GWEN_XML_FLAGS_INDENT               0x0002
00071 
00077 #define GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS 0x0004
00078 
00083 #define GWEN_XML_FLAGS_NO_CONDENSE          0x0008
00084 
00089 #define GWEN_XML_FLAGS_KEEP_CNTRL           0x0010
00090 
00091 #define GWEN_XML_FLAGS_KEEP_BLANKS          0x0020
00092 
00093 #define GWEN_XML_FLAGS_SIMPLE               0x0040
00094 
00098 #define GWEN_XML_FLAGS_HANDLE_HEADERS       0x0080
00099 
00107 #define GWEN_XML_FLAGS_TOLERANT_ENDTAGS     0x0100
00108 
00109 #define GWEN_XML_FLAGS_HANDLE_NAMESPACES    0x0200
00110 
00114 #define GWEN_XML_FLAGS_DEFAULT \
00115   (\
00116   GWEN_XML_FLAGS_INDENT | \
00117   GWEN_XML_FLAGS_HANDLE_COMMENTS\
00118   )
00119 
00125 typedef enum {
00128   GWEN_XMLNodeTypeTag=0,
00130   GWEN_XMLNodeTypeData,
00132   GWEN_XMLNodeTypeComment
00133 } GWEN_XMLNODE_TYPE;
00134 
00138 typedef struct GWEN__XMLNODE GWEN_XMLNODE;
00139 typedef struct GWEN_XMLNODE_NAMESPACE GWEN_XMLNODE_NAMESPACE;
00140 
00141 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_XMLNODE, GWEN_XMLNode, GWENHYWFAR_API)
00142 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_XMLNODE, GWEN_XMLNode, GWENHYWFAR_API)
00143 
00144 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_XMLNODE_NAMESPACE, GWEN_XMLNode_NameSpace, GWENHYWFAR_API)
00145 
00146 #ifdef __cplusplus
00147 }
00148 #endif
00149 
00150 
00151 #include <gwenhywfar/xmlctx.h>
00152 #include <gwenhywfar/fastbuffer.h>
00153 
00154 
00155 #ifdef __cplusplus
00156 extern "C" {
00157 #endif
00158 
00159 
00160 
00165 GWENHYWFAR_API
00166 GWEN_XMLNODE *GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data);
00167 
00171 GWENHYWFAR_API
00172 void GWEN_XMLNode_free(GWEN_XMLNODE *n);
00173 
00179 GWENHYWFAR_API
00180 void GWEN_XMLNode_freeAll(GWEN_XMLNODE *n);
00181 
00185 GWENHYWFAR_API
00186 GWEN_XMLNODE *GWEN_XMLNode_dup(const GWEN_XMLNODE *n);
00187 
00211 
00216 GWENHYWFAR_API
00217 GWEN_XMLNODE *GWEN_XMLNode_GetHeader(const GWEN_XMLNODE *n);
00218 
00222 GWENHYWFAR_API
00223 void GWEN_XMLNode_AddHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh);
00224 
00229 GWENHYWFAR_API
00230 void GWEN_XMLNode_DelHeader(GWEN_XMLNODE *root, GWEN_XMLNODE *nh);
00231 
00236 GWENHYWFAR_API
00237 void GWEN_XMLNode_ClearHeaders(GWEN_XMLNODE *root);
00238 
00262 GWENHYWFAR_API
00263   const char *GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n,
00264                                        const char *name,
00265                                        const char *defaultValue);
00266 
00274 GWENHYWFAR_API
00275   void GWEN_XMLNode_SetProperty(GWEN_XMLNODE *n,
00276                                 const char *name,
00277                                 const char *value);
00278 
00288 GWENHYWFAR_API
00289   void GWEN_XMLNode_CopyProperties(GWEN_XMLNODE *tn,
00290                                    const GWEN_XMLNODE *sn,
00291                                    int overwrite);
00299 GWENHYWFAR_API
00300 GWEN_XMLNODE_TYPE GWEN_XMLNode_GetType(const GWEN_XMLNODE *n);
00301 
00303 GWENHYWFAR_API
00304 const char *GWEN_XMLNode_GetData(const GWEN_XMLNODE *n);
00305 
00308 GWENHYWFAR_API
00309   void GWEN_XMLNode_SetData(GWEN_XMLNODE *n, const char *data);
00327 GWENHYWFAR_API
00328   void GWEN_XMLNode_IncUsage(GWEN_XMLNODE *n);
00329 
00330 GWENHYWFAR_API
00331   void GWEN_XMLNode_DecUsage(GWEN_XMLNODE *n);
00332 
00333 GWENHYWFAR_API
00334   uint32_t GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n);
00351 GWENHYWFAR_API
00352 GWEN_XMLNODE *GWEN_XMLNode_Next(const GWEN_XMLNODE *n);
00353 
00361 GWENHYWFAR_API
00362 GWEN_XMLNODE *GWEN_XMLNode_GetChild(const GWEN_XMLNODE *n);
00363 
00366 GWENHYWFAR_API
00367   GWEN_XMLNODE *GWEN_XMLNode_GetParent(const GWEN_XMLNODE *n);
00368 
00377 GWENHYWFAR_API
00378 GWEN_XMLNODE *GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n);
00379 
00391 GWENHYWFAR_API
00392 GWEN_XMLNODE *GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n);
00393 
00401 GWENHYWFAR_API
00402 GWEN_XMLNODE *GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n);
00403 
00415 GWENHYWFAR_API
00416 GWEN_XMLNODE *GWEN_XMLNode_GetNextData(const GWEN_XMLNODE *n);
00417 
00443 GWENHYWFAR_API
00444 GWEN_XMLNODE *GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n,
00445                                         const char *tname,
00446                                         const char *pname,
00447                                         const char *pvalue);
00448 
00454 GWENHYWFAR_API
00455 GWEN_XMLNODE *GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n,
00456                                        const char *tname,
00457                                        const char *pname,
00458                                        const char *pvalue);
00459 
00464 GWENHYWFAR_API
00465 int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent,
00466                            const GWEN_XMLNODE *child);
00467 
00468 GWENHYWFAR_API
00469 int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1,
00470                           const GWEN_XMLNODE *n2,
00471                           GWEN_BUFFER *nbuf);
00472 
00485 GWENHYWFAR_API
00486 GWEN_XMLNODE *GWEN_XMLNode_GetNodeByXPath(GWEN_XMLNODE *n,
00487                                           const char *path,
00488                                           uint32_t flags);
00489 
00490 
00498 
00507 GWENHYWFAR_API
00508   void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00509 
00517 GWENHYWFAR_API
00518   void GWEN_XMLNode_UnlinkChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00519 
00523 GWENHYWFAR_API
00524   void GWEN_XMLNode_RemoveChildren(GWEN_XMLNODE *n);
00525 
00536 GWENHYWFAR_API
00537   void GWEN_XMLNode_AddChildrenOnly(GWEN_XMLNODE *n, GWEN_XMLNODE *nn,
00538                                     int copythem);
00539 
00545 GWENHYWFAR_API
00546 GWEN_XMLNODE *GWEN_XMLNode_FindNode(const GWEN_XMLNODE *n,
00547                                     GWEN_XMLNODE_TYPE t,
00548                                     const char *data);
00556 
00561 GWENHYWFAR_API
00562 int GWEN_XMLNode_NormalizeNameSpaces(GWEN_XMLNODE *n);
00563 
00564 
00565 GWENHYWFAR_API
00566 int GWEN_XMLNode_Globalize(GWEN_XMLNODE *n);
00567 
00568 
00569 GWENHYWFAR_API
00570 int GWEN_XMLNode_GlobalizeWithList(GWEN_XMLNODE *n,
00571                                    GWEN_XMLNODE_NAMESPACE_LIST *l,
00572                                    uint32_t *pLastId);
00573 
00574 
00575 GWENHYWFAR_API
00576 int GWEN_XML_ReadFromFastBuffer(GWEN_XML_CONTEXT *ctx, GWEN_FAST_BUFFER *fb);
00577 
00581 GWENHYWFAR_API
00582 int GWEN_XML_ReadFromIo(GWEN_XML_CONTEXT *ctx, GWEN_IO_LAYER *io);
00583 
00584 
00589 GWENHYWFAR_API
00590 int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags);
00591 
00592 GWENHYWFAR_API
00593 GWEN_XMLNODE *GWEN_XMLNode_fromString(const char *s,
00594                                       int len,
00595                                       uint32_t flags);
00596 
00601 GWENHYWFAR_API
00602 int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n,
00603                                GWEN_XML_CONTEXT *ctx,
00604                                GWEN_IO_LAYER *io);
00605 
00609 GWENHYWFAR_API
00610 int GWEN_XMLNode_WriteFile(const GWEN_XMLNODE *n,
00611                            const char *fname,
00612                            uint32_t flags);
00613 
00614 GWENHYWFAR_API
00615 int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags);
00616 
00617 
00618 
00619 
00620 GWENHYWFAR_API
00621 GWEN_XMLNODE_NAMESPACE_LIST *GWEN_XMLNode_GetNameSpaces(const GWEN_XMLNODE *n);
00622 
00623 GWENHYWFAR_API
00624 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_FindNameSpaceByName(const GWEN_XMLNODE *n,
00625                                                          const char *s);
00626 
00627 GWENHYWFAR_API
00628 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_FindNameSpaceByUrl(const GWEN_XMLNODE *n,
00629                                                         const char *s);
00630 
00631 GWENHYWFAR_API
00632 void GWEN_XMLNode_AddNameSpace(GWEN_XMLNODE *n, const GWEN_XMLNODE_NAMESPACE *ns);
00633 
00634 
00635 
00660 
00666 GWENHYWFAR_API
00667 const char *GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n,
00668                                       const char *name,
00669                                       const char *defValue);
00670 
00671 GWENHYWFAR_API
00672   void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n,
00673                                  const char *name,
00674                                  const char *value);
00675 
00688 GWENHYWFAR_API
00689 const char *GWEN_XMLNode_GetLocalizedCharValue(const GWEN_XMLNODE *n,
00690                                                const char *name,
00691                                                const char *defValue);
00692 
00700 GWENHYWFAR_API
00701 int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n,
00702                              const char *name,
00703                              int defValue);
00704 
00705 GWENHYWFAR_API
00706 void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n,
00707                               const char *name,
00708                               int value);
00709 
00717 
00721 GWENHYWFAR_API
00722 void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, FILE *f, int ind);
00725  /* defgroup */
00726 
00727 
00735 
00736 typedef struct GWEN_XMLNODE_PATH GWEN_XMLNODE_PATH;
00737 
00738 
00739 GWENHYWFAR_API
00740 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_new();
00741 GWENHYWFAR_API
00742 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_dup(const GWEN_XMLNODE_PATH *np);
00743 GWENHYWFAR_API
00744 void GWEN_XMLNode_Path_free(GWEN_XMLNODE_PATH *np);
00745 
00749 GWENHYWFAR_API
00750 int GWEN_XMLNode_Path_Dive(GWEN_XMLNODE_PATH *np,
00751                            GWEN_XMLNODE *n);
00752 
00757 GWENHYWFAR_API
00758   GWEN_XMLNODE *GWEN_XMLNode_Path_Surface(GWEN_XMLNODE_PATH *np);
00759 
00763 GWENHYWFAR_API
00764 void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np); /* defgroup */ /* defgroup (all)*/
00767 
00768 
00769 
00770 GWENHYWFAR_API
00771 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_NameSpace_new(const char *name,
00772                                                    const char *url);
00773 
00774 GWENHYWFAR_API
00775 void GWEN_XMLNode_NameSpace_free(GWEN_XMLNODE_NAMESPACE *ns);
00776 
00777 GWENHYWFAR_API
00778 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_NameSpace_dup(const GWEN_XMLNODE_NAMESPACE *ns);
00779 
00780 GWENHYWFAR_API
00781 const char *GWEN_XMLNode_NameSpace_GetName(const GWEN_XMLNODE_NAMESPACE *ns);
00782 
00783 GWENHYWFAR_API
00784 const char *GWEN_XMLNode_NameSpace_GetUrl(const GWEN_XMLNODE_NAMESPACE *ns);
00785 
00786 
00787 #ifdef __cplusplus
00788 }
00789 #endif
00790 
00791 
00792 
00793 #endif

Generated on Wed Jul 9 13:12:28 2008 for gwenhywfar by  doxygen 1.5.6