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);
00310 
00311 GWENHYWFAR_API
00312 const char *GWEN_XMLNode_GetNamespace(const GWEN_XMLNODE *n);
00313 
00314 GWENHYWFAR_API
00315 void GWEN_XMLNode_SetNamespace(GWEN_XMLNODE *n, const char *s);
00316 
00334 GWENHYWFAR_API
00335   void GWEN_XMLNode_IncUsage(GWEN_XMLNODE *n);
00336 
00337 GWENHYWFAR_API
00338   void GWEN_XMLNode_DecUsage(GWEN_XMLNODE *n);
00339 
00340 GWENHYWFAR_API
00341   uint32_t GWEN_XMLNode_GetUsage(const GWEN_XMLNODE *n);
00358 GWENHYWFAR_API
00359 GWEN_XMLNODE *GWEN_XMLNode_Next(const GWEN_XMLNODE *n);
00360 
00368 GWENHYWFAR_API
00369 GWEN_XMLNODE *GWEN_XMLNode_GetChild(const GWEN_XMLNODE *n);
00370 
00373 GWENHYWFAR_API
00374   GWEN_XMLNODE *GWEN_XMLNode_GetParent(const GWEN_XMLNODE *n);
00375 
00384 GWENHYWFAR_API
00385 GWEN_XMLNODE *GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n);
00386 
00398 GWENHYWFAR_API
00399 GWEN_XMLNODE *GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n);
00400 
00408 GWENHYWFAR_API
00409 GWEN_XMLNODE *GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n);
00410 
00422 GWENHYWFAR_API
00423 GWEN_XMLNODE *GWEN_XMLNode_GetNextData(const GWEN_XMLNODE *n);
00424 
00450 GWENHYWFAR_API
00451 GWEN_XMLNODE *GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n,
00452                                         const char *tname,
00453                                         const char *pname,
00454                                         const char *pvalue);
00455 
00461 GWENHYWFAR_API
00462 GWEN_XMLNODE *GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n,
00463                                        const char *tname,
00464                                        const char *pname,
00465                                        const char *pvalue);
00466 
00471 GWENHYWFAR_API
00472 int GWEN_XMLNode_IsChildOf(const GWEN_XMLNODE *parent,
00473                            const GWEN_XMLNODE *child);
00474 
00475 GWENHYWFAR_API
00476 int GWEN_XMLNode_GetXPath(const GWEN_XMLNODE *n1,
00477                           const GWEN_XMLNODE *n2,
00478                           GWEN_BUFFER *nbuf);
00479 
00492 GWENHYWFAR_API
00493 GWEN_XMLNODE *GWEN_XMLNode_GetNodeByXPath(GWEN_XMLNODE *n,
00494                                           const char *path,
00495                                           uint32_t flags);
00496 
00497 
00505 
00514 GWENHYWFAR_API
00515   void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00516 
00524 GWENHYWFAR_API
00525   void GWEN_XMLNode_UnlinkChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child);
00526 
00530 GWENHYWFAR_API
00531   void GWEN_XMLNode_RemoveChildren(GWEN_XMLNODE *n);
00532 
00543 GWENHYWFAR_API
00544   void GWEN_XMLNode_AddChildrenOnly(GWEN_XMLNODE *n, GWEN_XMLNODE *nn,
00545                                     int copythem);
00546 
00552 GWENHYWFAR_API
00553 GWEN_XMLNODE *GWEN_XMLNode_FindNode(const GWEN_XMLNODE *n,
00554                                     GWEN_XMLNODE_TYPE t,
00555                                     const char *data);
00563 
00568 GWENHYWFAR_API
00569 int GWEN_XMLNode_NormalizeNameSpaces(GWEN_XMLNODE *n);
00570 
00571 
00572 
00573 GWENHYWFAR_API
00574 int GWEN_XMLNode_StripNamespaces(GWEN_XMLNODE *n);
00575 
00576 
00577 GWENHYWFAR_API
00578 int GWEN_XMLNode_Globalize(GWEN_XMLNODE *n);
00579 
00580 
00581 GWENHYWFAR_API
00582 int GWEN_XMLNode_GlobalizeWithList(GWEN_XMLNODE *n,
00583                                    GWEN_XMLNODE_NAMESPACE_LIST *l,
00584                                    uint32_t *pLastId);
00585 
00586 
00587 GWENHYWFAR_API
00588 int GWEN_XML_ReadFromFastBuffer(GWEN_XML_CONTEXT *ctx, GWEN_FAST_BUFFER *fb);
00589 
00593 GWENHYWFAR_API
00594 int GWEN_XML_ReadFromIo(GWEN_XML_CONTEXT *ctx, GWEN_IO_LAYER *io);
00595 
00596 
00601 GWENHYWFAR_API
00602 int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags);
00603 
00604 GWENHYWFAR_API
00605 GWEN_XMLNODE *GWEN_XMLNode_fromString(const char *s,
00606                                       int len,
00607                                       uint32_t flags);
00608 
00613 GWENHYWFAR_API
00614 int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n,
00615                                GWEN_XML_CONTEXT *ctx,
00616                                GWEN_IO_LAYER *io);
00617 
00621 GWENHYWFAR_API
00622 int GWEN_XMLNode_WriteFile(const GWEN_XMLNODE *n,
00623                            const char *fname,
00624                            uint32_t flags);
00625 
00626 GWENHYWFAR_API
00627 int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags);
00628 
00629 
00630 
00631 
00632 GWENHYWFAR_API
00633 GWEN_XMLNODE_NAMESPACE_LIST *GWEN_XMLNode_GetNameSpaces(const GWEN_XMLNODE *n);
00634 
00635 GWENHYWFAR_API
00636 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_FindNameSpaceByName(const GWEN_XMLNODE *n,
00637                                                          const char *s);
00638 
00639 GWENHYWFAR_API
00640 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_FindNameSpaceByUrl(const GWEN_XMLNODE *n,
00641                                                         const char *s);
00642 
00643 GWENHYWFAR_API
00644 void GWEN_XMLNode_AddNameSpace(GWEN_XMLNODE *n, const GWEN_XMLNODE_NAMESPACE *ns);
00645 
00646 
00647 
00672 
00678 GWENHYWFAR_API
00679 const char *GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n,
00680                                       const char *name,
00681                                       const char *defValue);
00682 
00683 GWENHYWFAR_API
00684   void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n,
00685                                  const char *name,
00686                                  const char *value);
00687 
00700 GWENHYWFAR_API
00701 const char *GWEN_XMLNode_GetLocalizedCharValue(const GWEN_XMLNODE *n,
00702                                                const char *name,
00703                                                const char *defValue);
00704 
00712 GWENHYWFAR_API
00713 int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n,
00714                              const char *name,
00715                              int defValue);
00716 
00717 GWENHYWFAR_API
00718 void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n,
00719                               const char *name,
00720                               int value);
00721 
00729 
00733 GWENHYWFAR_API
00734 void GWEN_XMLNode_Dump(const GWEN_XMLNODE *n, FILE *f, int ind);
00737  /* defgroup */
00738 
00739 
00747 
00748 typedef struct GWEN_XMLNODE_PATH GWEN_XMLNODE_PATH;
00749 
00750 
00751 GWENHYWFAR_API
00752 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_new();
00753 GWENHYWFAR_API
00754 GWEN_XMLNODE_PATH *GWEN_XMLNode_Path_dup(const GWEN_XMLNODE_PATH *np);
00755 GWENHYWFAR_API
00756 void GWEN_XMLNode_Path_free(GWEN_XMLNODE_PATH *np);
00757 
00761 GWENHYWFAR_API
00762 int GWEN_XMLNode_Path_Dive(GWEN_XMLNODE_PATH *np,
00763                            GWEN_XMLNODE *n);
00764 
00769 GWENHYWFAR_API
00770   GWEN_XMLNODE *GWEN_XMLNode_Path_Surface(GWEN_XMLNODE_PATH *np);
00771 
00775 GWENHYWFAR_API
00776 void GWEN_XMLNode_Path_Dump(GWEN_XMLNODE_PATH *np); /* defgroup */ /* defgroup (all)*/
00779 
00780 
00781 
00782 GWENHYWFAR_API
00783 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_NameSpace_new(const char *name,
00784                                                    const char *url);
00785 
00786 GWENHYWFAR_API
00787 void GWEN_XMLNode_NameSpace_free(GWEN_XMLNODE_NAMESPACE *ns);
00788 
00789 GWENHYWFAR_API
00790 GWEN_XMLNODE_NAMESPACE *GWEN_XMLNode_NameSpace_dup(const GWEN_XMLNODE_NAMESPACE *ns);
00791 
00792 GWENHYWFAR_API
00793 const char *GWEN_XMLNode_NameSpace_GetName(const GWEN_XMLNODE_NAMESPACE *ns);
00794 
00795 GWENHYWFAR_API
00796 const char *GWEN_XMLNode_NameSpace_GetUrl(const GWEN_XMLNODE_NAMESPACE *ns);
00797 
00798 
00799 #ifdef __cplusplus
00800 }
00801 #endif
00802 
00803 
00804 
00805 #endif

Generated on Thu Aug 20 13:54:39 2009 for gwenhywfar by  doxygen 1.5.9