internal.h
上传用户:hmc_gdtv
上传日期:2013-08-04
资源大小:798k
文件大小:2k
源码类别:

Windows Mobile

开发平台:

Visual C++

  1. /* internal.h
  2.    Internal definitions used by Expat.  This is not needed to compile
  3.    client code.
  4.    The following calling convention macros are defined for frequently
  5.    called functions:
  6.    FASTCALL    - Used for those internal functions that have a simple
  7.                  body and a low number of arguments and local variables.
  8.    PTRCALL     - Used for functions called though function pointers.
  9.    PTRFASTCALL - Like PTRCALL, but for low number of arguments.
  10.    inline      - Used for selected internal functions for which inlining
  11.                  may improve performance on some platforms.
  12.    Note: Use of these macros is based on judgement, not hard rules,
  13.          and therefore subject to change.
  14. */
  15. #if defined(__GNUC__)
  16. /* Instability reported with egcs on a RedHat Linux 7.3.
  17.    Let's comment it out:
  18.    #define FASTCALL __attribute__((stdcall, regparm(3)))
  19.    and let's try this:
  20. */
  21. #define FASTCALL __attribute__((regparm(3)))
  22. #define PTRCALL
  23. #define PTRFASTCALL __attribute__((regparm(3)))
  24. #elif defined(WIN32)
  25. /* Using __fastcall seems to have an unexpected negative effect under
  26.    MS VC++, especially for function pointers, so we won't use it for
  27.    now on that platform. It may be reconsidered for a future release
  28.    if it can be made more effective.
  29.    Likely reason: __fastcall on Windows is like stdcall, therefore
  30.    the compiler cannot perform stack optimizations for call clusters.
  31. */
  32. #define FASTCALL
  33. #define PTRCALL
  34. #define PTRFASTCALL
  35. #endif
  36. #ifndef FASTCALL
  37. #define FASTCALL
  38. #endif
  39. #ifndef PTRCALL
  40. #define PTRCALL
  41. #endif
  42. #ifndef PTRFASTCALL
  43. #define PTRFASTCALL
  44. #endif
  45. #ifndef XML_MIN_SIZE
  46. #if !defined(__cplusplus) && !defined(inline)
  47. #ifdef __GNUC__
  48. #define inline __inline
  49. #endif /* __GNUC__ */
  50. #endif
  51. #endif /* XML_MIN_SIZE */
  52. #ifdef __cplusplus
  53. #define inline inline
  54. #else
  55. #ifndef inline
  56. #define inline
  57. #endif
  58. #endif