EABase.html 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>EABase Future Plans</title>
  5. <style type="text/css">
  6. .SmallBody{
  7. font-size: 10pt
  8. }
  9. body
  10. {
  11. font-family: Palatino Linotype, Book Antiqua, Times New Roman;
  12. font-size: 11pt;
  13. }
  14. h1
  15. {
  16. font-family: Verdana;
  17. display: block;
  18. background-color: #FFF0B0;
  19. border: solid 2px black;
  20. font-size: 16pt;
  21. font-weight: bold;
  22. padding: 6px;
  23. }
  24. h2
  25. {
  26. font-size: 14pt;
  27. font-family: Verdana;
  28. border-bottom: 2px solid black;
  29. }
  30. h3
  31. {
  32. font-family: Verdana;
  33. font-size: 13pt;
  34. font-weight: bold;
  35. }
  36. .code-example
  37. {
  38. display: block;
  39. background-color: #e0e0f0;
  40. margin-left: 3em;
  41. margin-right: 3em;
  42. margin-top: 1em;
  43. margin-bottom: 1em;
  44. padding: 8px;
  45. border: solid 2px #a0a0d0;
  46. font-family: monospace;
  47. font-size: 10pt;
  48. white-space: pre;
  49. }
  50. .code-example-span
  51. {
  52. font-family: monospace;
  53. font-size: 10pt;
  54. white-space: pre;
  55. }
  56. .code-example-comment
  57. {
  58. background-color: #e0e0f0;
  59. padding: 0px 0px;
  60. font-family: monospace;
  61. font-size: 10pt;
  62. white-space: pre;
  63. color: #999999;
  64. margin: auto auto;
  65. }
  66. .faq-question
  67. {
  68. background-color: #D0E0D0;
  69. font-size: 12pt;
  70. font-weight: bold;
  71. margin-bottom: 0.5em;
  72. margin-top: 0em;
  73. padding-left:8px;
  74. padding-right:8px;
  75. padding-top:2px;
  76. padding-bottom:2px
  77. }
  78. .faq-answer
  79. {
  80. display: block;
  81. margin: 4pt 1em 0.5em 1em;
  82. }
  83. </style>
  84. </head>
  85. <body>
  86. <h1>EABase
  87. </h1>
  88. <h3>What is EABase?
  89. </h3>
  90. <p>EABase is a small set of header files that define platform-independent
  91. data types and macros. As such it is similar to many projects that have
  92. a platform.h, system.h, defines.h, etc. file. The difference is that
  93. EABase is very comprehensive and is the annointed Electronic Arts
  94. worldwide standard for new projects. </p>
  95. <p>With respect to the base types and definitions, many of these are
  96. already present in the most recent C language standard, though the C++
  97. standard has yet to formally adopt them. EABase bridges the gap and
  98. defines these values if they aren't already defined. With respect to
  99. compiler and platform definitions, EABase provides a standard reliable
  100. means of identifying or specifying compilers, platforms, endian-ness,
  101. alignment attributes, etc. </p>
  102. <h3>Usage notes </h3>
  103. <p>You probably don't want to use float_t and double_t. They are there for C99 compatibility but are rarely what you want to use, since their size is variable.</p>
  104. <p>Prid8, etc. are somewhat painful and ugly to use and you may find you don't like them. They too are for C99 compatibility.</p>
  105. <p>intptr_t is not a pointer to an int; it's an int with the same size as a pointer, so you can safely store pointers in it.</p>
  106. <p>EA::result_type is rarely used and exists for backwards compatibility.</p>
  107. <h3>What specifically does EABase define?</h3>
  108. <p>Here we list the things EABase defines, grouped by category. These
  109. defines are up to date as of the file modification date listed at the
  110. top of this file.</p>
  111. <h4>Base Types and Definitions<br>
  112. </h4>
  113. <div style="margin-left: 40px;">bool8_t, int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, float_t, double_t, (EAStdC package implements int128_t)<br>
  114. intptr_t, uintptr_t, intmax_t, uintmax_t, ssize_t<br>
  115. char8_t, char16_t, char32_t<br>
  116. INT8_C(), UINT8_C(), etc.<br>
  117. INT8_MIN, INT8_MAX, UINT8_MAX, etc.<br>
  118. PRId8, PRId16, PRId32, etc, SCNd8, SCNd16, SCNd32, etc.</div>
  119. <h4>Result Types and Definitions<br>
  120. </h4>
  121. <div style="margin-left: 40px;">EA::result_type<br>
  122. EA::SUCCESS, EA::FAILURE<br>
  123. EA_SUCCEEDED(), EA_FAILED()</div>
  124. <h4>Compiler Definitions<br>
  125. </h4>
  126. <div style="margin-left: 40px;">EA_COMPILER_GNUC<br>
  127. EA_COMPILER_SN<br>
  128. EA_COMPILER_MSVC<br>
  129. EA_COMPILER_METROWERKS<br>
  130. EA_COMPILER_INTEL<br>
  131. EA_COMPILER_BORLANDC<br>
  132. <br>
  133. EA_COMPILER_VERSION = &lt;integer&gt;<br>
  134. EA_COMPILER_NAME = &lt;string&gt;<br>
  135. EA_COMPILER_STRING = &lt;string&gt;<br>
  136. <br>
  137. EA_COMPILER_NO_STATIC_CONSTANTS<br>
  138. EA_COMPILER_NO_TEMPLATE_SPECIALIZATION<br>
  139. EA_COMPILER_NO_TEMPLATE_PARTIAL_SPECIALIZATION<br>
  140. EA_COMPILER_NO_MEMBER_TEMPLATES<br>
  141. EA_COMPILER_NO_MEMBER_TEMPLATE_SPECIALIZATION<br>
  142. EA_COMPILER_NO_TEMPLATE_TEMPLATES<br>
  143. EA_COMPILER_NO_MEMBER_TEMPLATE_FRIENDS<br>
  144. EA_COMPILER_NO_VOID_RETURNS<br>
  145. EA_COMPILER_NO_COVARIANT_RETURN_TYPE<br>
  146. EA_COMPILER_NO_DEDUCED_TYPENAME<br>
  147. EA_COMPILER_NO_ARGUMENT_DEPENDENT_LOOKUP<br>
  148. EA_COMPILER_NO_EXCEPTION_STD_NAMESPACE<br>
  149. EA_COMPILER_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS<br>
  150. EA_COMPILER_NO_EXCEPTIONS<br>
  151. EA_COMPILER_NO_UNWIND<br>
  152. <br>
  153. EA_COMPILER_IS_ANSIC<br>
  154. EA_COMPILER_IS_C99<br>
  155. EA_COMPILER_HAS_C99_TYPES<br>
  156. EA_COMPILER_IS_CPLUSPLUS<br>
  157. EA_COMPILER_MANAGED_CPP</div>
  158. <h4>Utilities<br>
  159. </h4>
  160. <div style="margin-left: 40px;">
  161. <p>EA_ALIGN_OF()<br>
  162. EA_PREFIX_ALIGN()<br>
  163. EA_POSTFIX_ALIGN()<br>
  164. EA_ALIGNED()<br>
  165. EA_PACKED()<br>
  166. EA_LIKELY()<br>
  167. EA_UNLIKELY()<br>
  168. EA_ASSUME()<br>
  169. EA_PURE<br>
  170. EA_WCHAR_T_NON_NATIVE<br>
  171. EA_WCHAR_SIZE<br>
  172. EA_RESTRICT<br>
  173. EA_DEPRECATED<br>
  174. EA_PREFIX_DEPRECATED<br>
  175. EA_POSTFIX_DEPRECATED <br>
  176. EA_FORCE_INLINE<br>
  177. EA_NO_INLINE<br>
  178. EA_PREFIX_NO_INLINE<br>
  179. EA_POSTFIX_NO_INLINE <br>
  180. EA_PASCAL<br>
  181. EA_PASCAL_FUNC()<br>
  182. EA_SSE = [0 | 1]<br>
  183. EA_IMPORT<br>
  184. EA_EXPORT<br>
  185. EA_OVERRIDE<br>
  186. EA_INIT_PRIORITY<br>
  187. EA_MAY_ALIAS<br>
  188. </p>
  189. </div>
  190. <h4>Platform Definitions<br>
  191. </h4>
  192. <div style="margin-left: 40px;"><br>
  193. EA_PLATFORM_MAC<br>
  194. EA_PLATFORM_OSX<br>
  195. EA_PLATFORM_IPHONE<br>
  196. EA_PLATFORM_ANDROID<br>
  197. EA_PLATFORM_LINUX<br>
  198. EA_PLATFORM_WINDOWS<br>
  199. EA_PLATFORM_WIN32<br>
  200. EA_PLATFORM_WIN64<br>
  201. EA_PLATFORM_HPUX<br>
  202. EA_PLATFORM_SUN<br>
  203. <br>
  204. EA_PLATFORM_NAME<br>
  205. EA_PLATFORM_DESCRIPTION<br>
  206. EA_PROCESSOR_POWERPC, EA_PROCESSOR_X86, EA_PROCESSOR_ARM, etc.<br>
  207. EA_SYSTEM_LITTLE_ENDIAN, EA_SYSTEM_BIG_ENDIAN<br>
  208. EA_ASM_STYLE_ATT, EA_ASM_STYLE_INTEL, EA_ASM_STYLE_MOTOROLA<br>
  209. EA_PLATFORM_PTR_SIZE<br>
  210. EA_PLATFORM_WORD_SIZE</div>
  211. <br>
  212. <hr style="width: 100%; height: 2px;"><br>
  213. <br>
  214. <br>
  215. <br>
  216. <br>
  217. <br>
  218. </body>
  219. </html>