Added xmltok_impl.c and xmltok_ns.c to source files.
[mirror-ossqm-expat.git] / lib / internal.h
blobdd5454831da2b4e8f3a8406a2a7c72cc79c6539e
1 /* internal.h
3 Internal definitions used by Expat. This is not needed to compile
4 client code.
6 The following calling convention macros are defined for frequently
7 called functions:
9 FASTCALL - Used for those internal functions that have a simple
10 body and a low number of arguments and local variables.
12 PTRCALL - Used for functions called though function pointers.
14 PTRFASTCALL - Like PTRCALL, but for low number of arguments.
16 inline - Used for selected internal functions for which inlining
17 may improve performance on some platforms.
19 Note: Use of these macros is based on judgement, not hard rules,
20 and therefore subject to change.
23 #if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
24 /* We'll use this version by default only where we know it helps.
26 regparm() generates warnings on Solaris boxes. See SF bug #692878.
28 Instability reported with egcs on a RedHat Linux 7.3.
29 Let's comment out:
30 #define FASTCALL __attribute__((stdcall, regparm(3)))
31 and let's try this:
33 #define FASTCALL __attribute__((regparm(3)))
34 #define PTRFASTCALL __attribute__((regparm(3)))
35 #endif
37 /* Using __fastcall seems to have an unexpected negative effect under
38 MS VC++, especially for function pointers, so we won't use it for
39 now on that platform. It may be reconsidered for a future release
40 if it can be made more effective.
41 Likely reason: __fastcall on Windows is like stdcall, therefore
42 the compiler cannot perform stack optimizations for call clusters.
45 /* Make sure all of these are defined if they aren't already. */
47 #ifndef FASTCALL
48 #define FASTCALL
49 #endif
51 #ifndef PTRCALL
52 #define PTRCALL
53 #endif
55 #ifndef PTRFASTCALL
56 #define PTRFASTCALL
57 #endif
59 #ifndef XML_MIN_SIZE
60 #if !defined(__cplusplus) && !defined(inline)
61 #ifdef __GNUC__
62 #define inline __inline
63 #endif /* __GNUC__ */
64 #endif
65 #endif /* XML_MIN_SIZE */
67 #ifdef __cplusplus
68 #define inline inline
69 #else
70 #ifndef inline
71 #define inline
72 #endif
73 #endif