123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /* internal.h
- Internal definitions used by Expat. This is not needed to compile
- client code.
- The following calling convention macros are defined for frequently
- called functions:
- FASTCALL - Used for those internal functions that have a simple
- body and a low number of arguments and local variables.
- PTRCALL - Used for functions called though function pointers.
- PTRFASTCALL - Like PTRCALL, but for low number of arguments.
- inline - Used for selected internal functions for which inlining
- may improve performance on some platforms.
- Note: Use of these macros is based on judgement, not hard rules,
- and therefore subject to change.
- */
- #if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
- /* We'll use this version by default only where we know it helps.
- regparm() generates warnings on Solaris boxes. See SF bug #692878.
- Instability reported with egcs on a RedHat Linux 7.3.
- Let's comment out:
- #define FASTCALL __attribute__((stdcall, regparm(3)))
- and let's try this:
- */
- #define FASTCALL __attribute__((regparm(3)))
- #define PTRFASTCALL __attribute__((regparm(3)))
- #endif
- /* Using __fastcall seems to have an unexpected negative effect under
- MS VC++, especially for function pointers, so we won't use it for
- now on that platform. It may be reconsidered for a future release
- if it can be made more effective.
- Likely reason: __fastcall on Windows is like stdcall, therefore
- the compiler cannot perform stack optimizations for call clusters.
- */
- /* Make sure all of these are defined if they aren't already. */
- #ifndef FASTCALL
- #define FASTCALL
- #endif
- #ifndef PTRCALL
- #define PTRCALL
- #endif
- #ifndef PTRFASTCALL
- #define PTRFASTCALL
- #endif
- #ifndef XML_MIN_SIZE
- #if !defined(__cplusplus) && !defined(inline)
- #ifdef __GNUC__
- #define inline __inline
- #endif /* __GNUC__ */
- #endif
- #endif /* XML_MIN_SIZE */
- #ifdef __cplusplus
- #define inline inline
- #else
- #ifndef inline
- #define inline
- #endif
- #endif
- #ifndef UNUSED_P
- # ifdef __GNUC__
- # define UNUSED_P(p) UNUSED_ ## p __attribute__((__unused__))
- # else
- # define UNUSED_P(p) UNUSED_ ## p
- # endif
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- void
- align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef);
- #ifdef __cplusplus
- }
- #endif
|