| 1 | /* | 
| 2 |                             __  __            _ | 
| 3 |                          ___\ \/ /_ __   __ _| |_ | 
| 4 |                         / _ \\  /| '_ \ / _` | __| | 
| 5 |                        |  __//  \| |_) | (_| | |_ | 
| 6 |                         \___/_/\_\ .__/ \__,_|\__| | 
| 7 |                                  |_| XML parser | 
| 8 |  | 
| 9 |    Copyright (c) 1997-2000 Thai Open Source Software Center Ltd | 
| 10 |    Copyright (c) 2000      Clark Cooper <coopercc@users.sourceforge.net> | 
| 11 |    Copyright (c) 2000-2004 Fred L. Drake, Jr. <fdrake@users.sourceforge.net> | 
| 12 |    Copyright (c) 2001-2002 Greg Stein <gstein@users.sourceforge.net> | 
| 13 |    Copyright (c) 2002-2006 Karl Waclawek <karl@waclawek.net> | 
| 14 |    Copyright (c) 2016      Cristian RodrÃguez <crrodriguez@opensuse.org> | 
| 15 |    Copyright (c) 2016-2019 Sebastian Pipping <sebastian@pipping.org> | 
| 16 |    Copyright (c) 2017      Rhodri James <rhodri@wildebeest.org.uk> | 
| 17 |    Copyright (c) 2018      Yury Gribov <tetra2005@gmail.com> | 
| 18 |    Licensed under the MIT license: | 
| 19 |  | 
| 20 |    Permission is  hereby granted,  free of charge,  to any  person obtaining | 
| 21 |    a  copy  of  this  software   and  associated  documentation  files  (the | 
| 22 |    "Software"),  to  deal in  the  Software  without restriction,  including | 
| 23 |    without  limitation the  rights  to use,  copy,  modify, merge,  publish, | 
| 24 |    distribute, sublicense, and/or sell copies of the Software, and to permit | 
| 25 |    persons  to whom  the Software  is  furnished to  do so,  subject to  the | 
| 26 |    following conditions: | 
| 27 |  | 
| 28 |    The above copyright  notice and this permission notice  shall be included | 
| 29 |    in all copies or substantial portions of the Software. | 
| 30 |  | 
| 31 |    THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND, | 
| 32 |    EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF | 
| 33 |    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | 
| 34 |    NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | 
| 35 |    DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR | 
| 36 |    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | 
| 37 |    USE OR OTHER DEALINGS IN THE SOFTWARE. | 
| 38 | */ | 
| 39 |  | 
| 40 | #ifndef Expat_External_INCLUDED | 
| 41 | #define Expat_External_INCLUDED 1 | 
| 42 |  | 
| 43 | /* External API definitions */ | 
| 44 |  | 
| 45 | /* Expat tries very hard to make the API boundary very specifically | 
| 46 |    defined.  There are two macros defined to control this boundary; | 
| 47 |    each of these can be defined before including this header to | 
| 48 |    achieve some different behavior, but doing so it not recommended or | 
| 49 |    tested frequently. | 
| 50 |  | 
| 51 |    XMLCALL    - The calling convention to use for all calls across the | 
| 52 |                 "library boundary."  This will default to cdecl, and | 
| 53 |                 try really hard to tell the compiler that's what we | 
| 54 |                 want. | 
| 55 |  | 
| 56 |    XMLIMPORT  - Whatever magic is needed to note that a function is | 
| 57 |                 to be imported from a dynamically loaded library | 
| 58 |                 (.dll, .so, or .sl, depending on your platform). | 
| 59 |  | 
| 60 |    The XMLCALL macro was added in Expat 1.95.7.  The only one which is | 
| 61 |    expected to be directly useful in client code is XMLCALL. | 
| 62 |  | 
| 63 |    Note that on at least some Unix versions, the Expat library must be | 
| 64 |    compiled with the cdecl calling convention as the default since | 
| 65 |    system headers may assume the cdecl convention. | 
| 66 | */ | 
| 67 | #ifndef XMLCALL | 
| 68 | #  if defined(_MSC_VER) | 
| 69 | #    define XMLCALL __cdecl | 
| 70 | #  elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) | 
| 71 | #    define XMLCALL __attribute__((cdecl)) | 
| 72 | #  else | 
| 73 | /* For any platform which uses this definition and supports more than | 
| 74 |    one calling convention, we need to extend this definition to | 
| 75 |    declare the convention used on that platform, if it's possible to | 
| 76 |    do so. | 
| 77 |  | 
| 78 |    If this is the case for your platform, please file a bug report | 
| 79 |    with information on how to identify your platform via the C | 
| 80 |    pre-processor and how to specify the same calling convention as the | 
| 81 |    platform's malloc() implementation. | 
| 82 | */ | 
| 83 | #    define XMLCALL | 
| 84 | #  endif | 
| 85 | #endif /* not defined XMLCALL */ | 
| 86 |  | 
| 87 | #if ! defined(XML_STATIC) && ! defined(XMLIMPORT) | 
| 88 | #  ifndef XML_BUILDING_EXPAT | 
| 89 | /* using Expat from an application */ | 
| 90 |  | 
| 91 | #    if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) | 
| 92 | #      define XMLIMPORT __declspec(dllimport) | 
| 93 | #    endif | 
| 94 |  | 
| 95 | #  endif | 
| 96 | #endif /* not defined XML_STATIC */ | 
| 97 |  | 
| 98 | #ifndef XML_ENABLE_VISIBILITY | 
| 99 | #  define XML_ENABLE_VISIBILITY 0 | 
| 100 | #endif | 
| 101 |  | 
| 102 | #if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY | 
| 103 | #  define XMLIMPORT __attribute__((visibility("default"))) | 
| 104 | #endif | 
| 105 |  | 
| 106 | /* If we didn't define it above, define it away: */ | 
| 107 | #ifndef XMLIMPORT | 
| 108 | #  define XMLIMPORT | 
| 109 | #endif | 
| 110 |  | 
| 111 | #if defined(__GNUC__)                                                          \ | 
| 112 |     && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) | 
| 113 | #  define XML_ATTR_MALLOC __attribute__((__malloc__)) | 
| 114 | #else | 
| 115 | #  define XML_ATTR_MALLOC | 
| 116 | #endif | 
| 117 |  | 
| 118 | #if defined(__GNUC__)                                                          \ | 
| 119 |     && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) | 
| 120 | #  define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) | 
| 121 | #else | 
| 122 | #  define XML_ATTR_ALLOC_SIZE(x) | 
| 123 | #endif | 
| 124 |  | 
| 125 | #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL | 
| 126 |  | 
| 127 | #ifdef __cplusplus | 
| 128 | extern "C"  { | 
| 129 | #endif | 
| 130 |  | 
| 131 | #ifdef XML_UNICODE_WCHAR_T | 
| 132 | #  ifndef XML_UNICODE | 
| 133 | #    define XML_UNICODE | 
| 134 | #  endif | 
| 135 | #  if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) | 
| 136 | #    error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" | 
| 137 | #  endif | 
| 138 | #endif | 
| 139 |  | 
| 140 | #ifdef XML_UNICODE /* Information is UTF-16 encoded. */ | 
| 141 | #  ifdef XML_UNICODE_WCHAR_T | 
| 142 | typedef wchar_t XML_Char; | 
| 143 | typedef wchar_t XML_LChar; | 
| 144 | #  else | 
| 145 | typedef unsigned short XML_Char; | 
| 146 | typedef char XML_LChar; | 
| 147 | #  endif /* XML_UNICODE_WCHAR_T */ | 
| 148 | #else    /* Information is UTF-8 encoded. */ | 
| 149 | typedef char XML_Char; | 
| 150 | typedef char XML_LChar; | 
| 151 | #endif   /* XML_UNICODE */ | 
| 152 |  | 
| 153 | #ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ | 
| 154 | typedef long long XML_Index; | 
| 155 | typedef unsigned long long XML_Size; | 
| 156 | #else | 
| 157 | typedef long XML_Index; | 
| 158 | typedef unsigned long XML_Size; | 
| 159 | #endif /* XML_LARGE_SIZE */ | 
| 160 |  | 
| 161 | #ifdef __cplusplus | 
| 162 | } | 
| 163 | #endif | 
| 164 |  | 
| 165 | #endif /* not Expat_External_INCLUDED */ | 
| 166 |  |