Geant4 Cross Reference |
1 /* internal.h 1 /* internal.h 2 2 3 Internal definitions used by Expat. This i 3 Internal definitions used by Expat. This is not needed to compile 4 client code. 4 client code. 5 5 6 The following calling convention macros are 6 The following calling convention macros are defined for frequently 7 called functions: 7 called functions: 8 8 9 FASTCALL - Used for those internal funct 9 FASTCALL - Used for those internal functions that have a simple 10 body and a low number of argu 10 body and a low number of arguments and local variables. 11 11 12 PTRCALL - Used for functions called tho 12 PTRCALL - Used for functions called though function pointers. 13 13 14 PTRFASTCALL - Like PTRCALL, but for low num 14 PTRFASTCALL - Like PTRCALL, but for low number of arguments. 15 15 16 inline - Used for selected internal fu 16 inline - Used for selected internal functions for which inlining 17 may improve performance on so 17 may improve performance on some platforms. 18 18 19 Note: Use of these macros is based on judge 19 Note: Use of these macros is based on judgement, not hard rules, 20 and therefore subject to change. 20 and therefore subject to change. 21 __ __ << 22 ___\ \/ /_ __ __ _| << 23 / _ \\ /| '_ \ / _` | << 24 | __// \| |_) | (_| | << 25 \___/_/\_\ .__/ \__,_| << 26 |_| XML parse << 27 << 28 Copyright (c) 2002-2003 Fred L. Drake, Jr. << 29 Copyright (c) 2002-2006 Karl Waclawek <karl << 30 Copyright (c) 2003 Greg Stein <gstein@ << 31 Copyright (c) 2016-2022 Sebastian Pipping < << 32 Copyright (c) 2018 Yury Gribov <tetra2 << 33 Copyright (c) 2019 David Loffredo <lof << 34 Licensed under the MIT license: << 35 << 36 Permission is hereby granted, free of cha << 37 a copy of this software and associat << 38 "Software"), to deal in the Software w << 39 without limitation the rights to use, c << 40 distribute, sublicense, and/or sell copies << 41 persons to whom the Software is furnish << 42 following conditions: << 43 << 44 The above copyright notice and this permis << 45 in all copies or substantial portions of th << 46 << 47 THE SOFTWARE IS PROVIDED "AS IS", WIT << 48 EXPRESS OR IMPLIED, INCLUDING BUT NOT L << 49 MERCHANTABILITY, FITNESS FOR A PARTICULAR P << 50 NO EVENT SHALL THE AUTHORS OR COPYRIGHT HO << 51 DAMAGES OR OTHER LIABILITY, WHETHER IN AN << 52 OTHERWISE, ARISING FROM, OUT OF OR IN CONNE << 53 USE OR OTHER DEALINGS IN THE SOFTWARE. << 54 */ 21 */ 55 22 56 #if defined(__GNUC__) && defined(__i386__) && << 23 #if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) 57 /* We'll use this version by default only wher 24 /* We'll use this version by default only where we know it helps. 58 25 59 regparm() generates warnings on Solaris box 26 regparm() generates warnings on Solaris boxes. See SF bug #692878. 60 27 61 Instability reported with egcs on a RedHat 28 Instability reported with egcs on a RedHat Linux 7.3. 62 Let's comment out: 29 Let's comment out: 63 #define FASTCALL __attribute__((stdcall, re 30 #define FASTCALL __attribute__((stdcall, regparm(3))) 64 and let's try this: 31 and let's try this: 65 */ 32 */ 66 # define FASTCALL __attribute__((regparm(3))) << 33 #define FASTCALL __attribute__((regparm(3))) 67 # define PTRFASTCALL __attribute__((regparm(3 << 34 #define PTRFASTCALL __attribute__((regparm(3))) 68 #endif 35 #endif 69 36 70 /* Using __fastcall seems to have an unexpecte 37 /* Using __fastcall seems to have an unexpected negative effect under 71 MS VC++, especially for function pointers, 38 MS VC++, especially for function pointers, so we won't use it for 72 now on that platform. It may be reconsidere 39 now on that platform. It may be reconsidered for a future release 73 if it can be made more effective. 40 if it can be made more effective. 74 Likely reason: __fastcall on Windows is lik 41 Likely reason: __fastcall on Windows is like stdcall, therefore 75 the compiler cannot perform stack optimizat 42 the compiler cannot perform stack optimizations for call clusters. 76 */ 43 */ 77 44 78 /* Make sure all of these are defined if they 45 /* Make sure all of these are defined if they aren't already. */ 79 46 80 #ifndef FASTCALL 47 #ifndef FASTCALL 81 # define FASTCALL << 48 #define FASTCALL 82 #endif 49 #endif 83 50 84 #ifndef PTRCALL 51 #ifndef PTRCALL 85 # define PTRCALL << 52 #define PTRCALL 86 #endif 53 #endif 87 54 88 #ifndef PTRFASTCALL 55 #ifndef PTRFASTCALL 89 # define PTRFASTCALL << 56 #define PTRFASTCALL 90 #endif 57 #endif 91 58 92 #ifndef XML_MIN_SIZE 59 #ifndef XML_MIN_SIZE 93 # if ! defined(__cplusplus) && ! defined(inli << 60 #if !defined(__cplusplus) && !defined(inline) 94 # ifdef __GNUC__ << 61 #ifdef __GNUC__ 95 # define inline __inline << 62 #define inline __inline 96 # endif /* __GNUC__ */ << 63 #endif /* __GNUC__ */ 97 # endif << 64 #endif 98 #endif /* XML_MIN_SIZE */ 65 #endif /* XML_MIN_SIZE */ 99 66 100 #ifdef __cplusplus 67 #ifdef __cplusplus 101 # define inline inline << 68 #define inline inline 102 #else << 103 # ifndef inline << 104 # define inline << 105 # endif << 106 #endif << 107 << 108 #include <limits.h> // ULONG_MAX << 109 << 110 #if defined(_WIN32) << 111 && (! defined(__USE_MINGW_ANSI_STDIO) << 112 || (1 - __USE_MINGW_ANSI_STDIO - 1 == << 113 # define EXPAT_FMT_ULL(midpart) "%" midpart " << 114 # if defined(_WIN64) // Note: modifiers "td" << 115 # define EXPAT_FMT_PTRDIFF_T(midpart) "%" m << 116 # define EXPAT_FMT_SIZE_T(midpart) "%" midp << 117 # else << 118 # define EXPAT_FMT_PTRDIFF_T(midpart) "%" m << 119 # define EXPAT_FMT_SIZE_T(midpart) "%" midp << 120 # endif << 121 #else 69 #else 122 # define EXPAT_FMT_ULL(midpart) "%" midpart " << 70 #ifndef inline 123 # if ! defined(ULONG_MAX) << 71 #define inline 124 # error Compiler did not define ULONG_MAX f << 125 # elif ULONG_MAX == 18446744073709551615u // << 126 # define EXPAT_FMT_PTRDIFF_T(midpart) "%" m << 127 # define EXPAT_FMT_SIZE_T(midpart) "%" midp << 128 # else << 129 # define EXPAT_FMT_PTRDIFF_T(midpart) "%" m << 130 # define EXPAT_FMT_SIZE_T(midpart) "%" midp << 131 # endif << 132 #endif << 133 << 134 #ifndef UNUSED_P << 135 # define UNUSED_P(p) (void)p << 136 #endif << 137 << 138 /* NOTE BEGIN If you ever patch these defaults << 139 for non-attack XML payload in yo << 140 please file a bug report with li << 141 */ << 142 #define EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION << 143 100.0f << 144 #define EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION << 145 8388608 // 8 MiB, 2^23 << 146 /* NOTE END */ << 147 << 148 #include "expat.h" // so we can use type XML_P << 149 << 150 #ifdef __cplusplus << 151 extern "C" { << 152 #endif 72 #endif 153 << 154 void _INTERNAL_trim_to_complete_utf8_character << 155 << 156 << 157 #if defined(XML_DTD) << 158 unsigned long long testingAccountingGetCountBy << 159 unsigned long long testingAccountingGetCountBy << 160 const char *unsignedCharToPrintable(unsigned c << 161 #endif << 162 << 163 #ifdef __cplusplus << 164 } << 165 #endif 73 #endif 166 74