1/* minimal xml parser 2 * 3 * Project : miniupnp 4 * Website : http://miniupnp.free.fr/ 5 * Author : Thomas Bernard 6 * 7 * Copyright (c) 2005, Thomas Bernard 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions are met: 12 * * Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * * Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * * The name of the author may not be used to endorse or promote products 18 * derived from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32#ifndef __MINIXML_H__ 33#define __MINIXML_H__ 34#include <stdint.h> 35#define IS_WHITE_SPACE(c) ((c==' ') || (c=='\t') || (c=='\r') || (c=='\n')) 36 37/* if a callback function pointer is set to NULL, 38 * the function is not called */ 39struct xmlparser { 40 const char *xmlstart; 41 const char *xmlend; 42 const char *xml; /* pointer to current character */ 43 int xmlsize; 44 uint32_t flags; 45 void * data; 46 void (*starteltfunc) (void *, const char *, int); 47 void (*endeltfunc) (void *, const char *, int); 48 void (*datafunc) (void *, const char *, int); 49 void (*attfunc) (void *, const char *, int, const char *, int); 50}; 51 52/* parsexml() 53 * the xmlparser structure must be initialized before the call 54 * the following structure members have to be initialized : 55 * xmlstart, xmlsize, data, *func 56 * xml is for internal usage, xmlend is computed automatically */ 57void parsexml(struct xmlparser *); 58 59#endif 60 61