system.h
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:4k
开发平台:

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  system.h
  6. +
  7. +  Copyright (c) 1995  by  Max-Planck-Institut fuer Informatik
  8. +  Im Stadtwald, 66123 Saarbruecken, Germany     
  9. +  All rights reserved.
  10. *******************************************************************************/
  11. #ifndef LEDA_SYSTEM_H
  12. #define LEDA_SYSTEM_H
  13. //----------------------------------------------------------------------------
  14. // system/compiler dependent definitions 
  15. //----------------------------------------------------------------------------
  16. // In the first section of this file some flags are defined indicating
  17. // that certain c++ features are supported or not by particular compilers. 
  18. // If your compiler does not appear you may have to add it.
  19. // 
  20. // __BUILTIN_BOOL__         : built-in boolean
  21. // __NEW_SCOPE_RULES__      : new scope rules 
  22. // __ELSE_SCOPE_BUG__       : else-part does not begin a new scope
  23. // __TEMPLATE_FUNCTIONS__   : function templates  
  24. // __EXPLICIT_DESTRUCTION__ : explicit destructor call
  25. // __INPLACE_NEW__          : in-place new operator
  26. //----------------------------------------------------------------------------
  27. // define __BUILTIN_BOOL__ for compilers supporting type bool  
  28. // currently only g++ >= 2.6
  29. //----------------------------------------------------------------------------
  30. #if (__GNUC__ > 2 || __GNUC_MINOR__ >= 6)
  31. #define __BUILTIN_BOOL__
  32. #endif
  33. //----------------------------------------------------------------------------
  34. // define __NEW_SCOPE_RULES__ for compilers supporting  the new scope rules
  35. // currently only g++ >= 2.7
  36. //----------------------------------------------------------------------------
  37. #if (__GNUC__ > 2 || __GNUC_MINOR__ >= 7)
  38. #define __NEW_SCOPE_RULES__
  39. #endif
  40. //----------------------------------------------------------------------------
  41. // define __ELSE_SCOPE_BUG__ for compilers not starting a new scope for the
  42. // else-part of an if-statement  
  43. //----------------------------------------------------------------------------
  44. #if defined(__ZTC__) && (__ZTC__ <= 0x310)
  45. #define __ELSE_SCOPE_BUG__
  46. #endif
  47. #if defined(sgi) &&  ! defined(__GNUC__) && _COMPILER_VERSION < 602
  48. #define __ELSE_SCOPE_BUG__
  49. #endif
  50. #if defined(hpux) &&  ! defined(__GNUC__)
  51. #define __ELSE_SCOPE_BUG__
  52. #endif
  53. //----------------------------------------------------------------------------
  54. // define  __TEMPLATE_FUNCTIONS__ except for compilers  having problems
  55. // with function templates  (g++ <= 2.5, ztc <= 3.1, bcc <= 4.1, DEC C++, ...)
  56. //----------------------------------------------------------------------------
  57. #define __TEMPLATE_FUNCTIONS__
  58. #if (__GNUC__ == 2 && __GNUC_MINOR__ <= 5)
  59. #undef __TEMPLATE_FUNCTIONS__
  60. #endif
  61. #if defined(__BORLANDC__) && (__BORLANDC__ <= 0x410)
  62. #undef __TEMPLATE_FUNCTIONS__
  63. #endif
  64. #if defined(__ZTC__) && (__ZTC__ <= 0x310)
  65. #undef __TEMPLATE_FUNCTIONS__
  66. #endif
  67. #if defined(__DECCXX)
  68. #undef __TEMPLATE_FUNCTIONS__
  69. #endif
  70. //----------------------------------------------------------------------------
  71. // define __EXPLICIT_DESTRUCTION__ except for compilers not supporting
  72. // this feature (AT&T cfront, borland, sgi, aix)
  73. //----------------------------------------------------------------------------
  74. #define __EXPLICIT_DESTRUCTION__
  75. #if defined(__ATTCFRONT__)
  76. #undef __EXPLICIT_DESTRUCTION__
  77. #endif
  78. #if defined(__BORLANDC__) && (__BORLANDC__ <= 0x410)
  79. #undef __EXPLICIT_DESTRUCTION__
  80. #endif
  81. #if defined(sgi) && ! defined(__GNUC__) && _COMPILER_VERSION < 602
  82. #undef __EXPLICIT_DESTRUCTION__
  83. #endif
  84. #if defined(_AIX) && ! defined(__GNUC__)
  85. #undef __EXPLICIT_DESTRUCTION__
  86. #endif
  87. //----------------------------------------------------------------------------
  88. // define  __INPLACE_NEW__ except for compilers not supporting this feature 
  89. //----------------------------------------------------------------------------
  90. #define __INPLACE_NEW__
  91. #if defined(__BORLANDC__) && (__BORLANDC__ <= 0x410)
  92. #undef __INPLACE_NEW__
  93. #endif
  94. #if defined(__ZTC__) && (__ZTC__ <= 0x310)
  95. #undef __INPLACE_NEW__
  96. #endif
  97. //------------------------------------------------------------------------------
  98. //  Other Flags
  99. //------------------------------------------------------------------------------
  100. #if defined(__SVR4) || defined(__SOLARIS_23) || defined(__SOLARIS_24) 
  101. #if !defined(__svr4__)
  102. #define __svr4__
  103. #endif
  104. #endif
  105. #if defined(_AIX)
  106. #define unix
  107. #endif
  108. #if defined(__STDC__)
  109. #define STRINGIZE(x) #x
  110. #else
  111. #define STRINGIZE(x) "x"
  112. #endif
  113. #if defined(min)
  114. #undef min
  115. #endif
  116. #if defined(max)
  117. #undef max
  118. #endif
  119. #if defined(random)
  120. #undef random
  121. #endif
  122. #endif