| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |                             __  __            _ | 
					
						
							|  |  |  |                          ___\ \/ /_ __   __ _| |_ | 
					
						
							|  |  |  |                         / _ \\  /| '_ \ / _` | __| | 
					
						
							|  |  |  |                        |  __//  \| |_) | (_| | |_
 | 
					
						
							|  |  |  |                         \___/_/\_\ .__/ \__,_|\__| | 
					
						
							|  |  |  |                                  |_| XML parser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Copyright (c) 1997-2000 Thai Open Source Software Center Ltd | 
					
						
							|  |  |  |    Copyright (c) 2000-2017 Expat development team | 
					
						
							|  |  |  |    Licensed under the MIT license: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Permission is  hereby granted,  free of charge,  to any  person obtaining | 
					
						
							|  |  |  |    a  copy  of  this  software   and  associated  documentation  files  (the | 
					
						
							|  |  |  |    "Software"),  to  deal in  the  Software  without restriction,  including | 
					
						
							|  |  |  |    without  limitation the  rights  to use,  copy,  modify, merge,  publish, | 
					
						
							|  |  |  |    distribute, sublicense, and/or sell copies of the Software, and to permit | 
					
						
							|  |  |  |    persons  to whom  the Software  is  furnished to  do so,  subject to  the | 
					
						
							|  |  |  |    following conditions: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The above copyright  notice and this permission notice  shall be included | 
					
						
							|  |  |  |    in all copies or substantial portions of the Software. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND, | 
					
						
							|  |  |  |    EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF | 
					
						
							|  |  |  |    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | 
					
						
							|  |  |  |    NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | 
					
						
							|  |  |  |    DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR | 
					
						
							|  |  |  |    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | 
					
						
							|  |  |  |    USE OR OTHER DEALINGS IN THE SOFTWARE. | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef Expat_External_INCLUDED
 | 
					
						
							|  |  |  | #define Expat_External_INCLUDED 1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* External API definitions */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XML_USE_MSC_EXTENSIONS 1
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Expat tries very hard to make the API boundary very specifically
 | 
					
						
							|  |  |  |    defined.  There are two macros defined to control this boundary; | 
					
						
							|  |  |  |    each of these can be defined before including this header to | 
					
						
							|  |  |  |    achieve some different behavior, but doing so it not recommended or | 
					
						
							|  |  |  |    tested frequently. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    XMLCALL    - The calling convention to use for all calls across the | 
					
						
							|  |  |  |                 "library boundary."  This will default to cdecl, and | 
					
						
							|  |  |  |                 try really hard to tell the compiler that's what we | 
					
						
							|  |  |  |                 want. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    XMLIMPORT  - Whatever magic is needed to note that a function is | 
					
						
							|  |  |  |                 to be imported from a dynamically loaded library | 
					
						
							|  |  |  |                 (.dll, .so, or .sl, depending on your platform). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The XMLCALL macro was added in Expat 1.95.7.  The only one which is | 
					
						
							|  |  |  |    expected to be directly useful in client code is XMLCALL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Note that on at least some Unix versions, the Expat library must be | 
					
						
							|  |  |  |    compiled with the cdecl calling convention as the default since | 
					
						
							|  |  |  |    system headers may assume the cdecl convention. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | #ifndef XMLCALL
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # if defined(_MSC_VER)
 | 
					
						
							|  |  |  | #  define XMLCALL __cdecl
 | 
					
						
							|  |  |  | # elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
 | 
					
						
							|  |  |  | #  define XMLCALL __attribute__((cdecl))
 | 
					
						
							|  |  |  | # else
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | /* For any platform which uses this definition and supports more than
 | 
					
						
							|  |  |  |    one calling convention, we need to extend this definition to | 
					
						
							|  |  |  |    declare the convention used on that platform, if it's possible to | 
					
						
							|  |  |  |    do so. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    If this is the case for your platform, please file a bug report | 
					
						
							|  |  |  |    with information on how to identify your platform via the C | 
					
						
							|  |  |  |    pre-processor and how to specify the same calling convention as the | 
					
						
							|  |  |  |    platform's malloc() implementation. | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | #  define XMLCALL
 | 
					
						
							|  |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif  /* not defined XMLCALL */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if !defined(XML_STATIC) && !defined(XMLIMPORT)
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # ifndef XML_BUILDING_EXPAT
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | /* using Expat from an application */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | #  ifdef XML_USE_MSC_EXTENSIONS
 | 
					
						
							|  |  |  | #   define XMLIMPORT __declspec(dllimport)
 | 
					
						
							|  |  |  | #  endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif  /* not defined XML_STATIC */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if !defined(XMLIMPORT) && defined(__GNUC__) && (__GNUC__ >= 4)
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XMLIMPORT __attribute__ ((visibility ("default")))
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* If we didn't define it above, define it away: */ | 
					
						
							|  |  |  | #ifndef XMLIMPORT
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XMLIMPORT
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XML_ATTR_MALLOC __attribute__((__malloc__))
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XML_ATTR_MALLOC
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XML_ATTR_ALLOC_SIZE(x)  __attribute__((__alloc_size__(x)))
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # define XML_ATTR_ALLOC_SIZE(x)
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef XML_UNICODE_WCHAR_T
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # ifndef XML_UNICODE
 | 
					
						
							|  |  |  | #  define XML_UNICODE
 | 
					
						
							|  |  |  | # endif
 | 
					
						
							|  |  |  | # if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2)
 | 
					
						
							|  |  |  | #  error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc"
 | 
					
						
							|  |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef XML_UNICODE     /* Information is UTF-16 encoded. */
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # ifdef XML_UNICODE_WCHAR_T
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | typedef wchar_t XML_Char; | 
					
						
							|  |  |  | typedef wchar_t XML_LChar; | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # else
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | typedef unsigned short XML_Char; | 
					
						
							|  |  |  | typedef char XML_LChar; | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # endif /* XML_UNICODE_WCHAR_T */
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #else                  /* Information is UTF-8 encoded. */
 | 
					
						
							|  |  |  | typedef char XML_Char; | 
					
						
							|  |  |  | typedef char XML_LChar; | 
					
						
							|  |  |  | #endif /* XML_UNICODE */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
 | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | typedef __int64 XML_Index;  | 
					
						
							|  |  |  | typedef unsigned __int64 XML_Size; | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # else
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | typedef long long XML_Index; | 
					
						
							|  |  |  | typedef unsigned long long XML_Size; | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | # endif
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | #else
 | 
					
						
							|  |  |  | typedef long XML_Index; | 
					
						
							|  |  |  | typedef unsigned long XML_Size; | 
					
						
							|  |  |  | #endif /* XML_LARGE_SIZE */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* not Expat_External_INCLUDED */
 |