home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / a-gettty.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  155 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                         GNAT COMPILER COMPONENTS                         */
  4. /*                                                                          */
  5. /*                            A - G E T T T Y                               */
  6. /*                                                                          */
  7. /*                                  Body                                    */
  8. /*                                                                          */
  9. /*                             $Revision: 1.4 $                             */
  10. /*                                                                          */
  11. /*        Copyright (c) 1992,1993,1994,1995 NYU, All Rights Reserved        */
  12. /*                                                                          */
  13. /* GNAT is free software;  you can  redistribute it  and/or modify it under */
  14. /* terms  of the GNU  General  Public  License  as  published  by the  Free */
  15. /* Software  Foundation;  either version 2,  or (at your option)  any later */
  16. /* version.  GNAT is distributed  in the hope  that it will be useful,  but */
  17. /* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT- */
  18. /* ABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public */
  19. /* License  for  more details.  You should have received  a copy of the GNU */
  20. /* General Public License along with GNAT;  see file COPYING. If not, write */
  21. /* to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  22. /*                                                                          */
  23. /****************************************************************************/
  24.  
  25. /* Functions for retrieving target types. See Ada package Get_Targ */
  26.  
  27. #include "config.h"
  28. #include "a-ada.h"
  29. #include "a-types.h"
  30. #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
  31.  
  32. /* Standard data type sizes.  Most of these are not used.  */
  33.  
  34. #ifndef CHAR_TYPE_SIZE
  35. #define CHAR_TYPE_SIZE BITS_PER_UNIT
  36. #endif
  37.  
  38. #ifndef SHORT_TYPE_SIZE
  39. #define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
  40. #endif
  41.  
  42. #ifndef INT_TYPE_SIZE
  43. #define INT_TYPE_SIZE BITS_PER_WORD
  44. #endif
  45.  
  46. #ifndef LONG_TYPE_SIZE
  47. #define LONG_TYPE_SIZE BITS_PER_WORD
  48. #endif
  49.  
  50. #ifndef LONG_LONG_TYPE_SIZE
  51. #define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
  52. #endif
  53.  
  54. #ifndef FLOAT_TYPE_SIZE
  55. #define FLOAT_TYPE_SIZE BITS_PER_WORD
  56. #endif
  57.  
  58. #ifndef DOUBLE_TYPE_SIZE
  59. #define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
  60. #endif
  61.  
  62. #ifndef LONG_DOUBLE_TYPE_SIZE
  63. #define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
  64. #endif
  65.  
  66. /* The choice of SIZE_TYPE here is very problematic.  We need a signed
  67.    type whose bit width is Pmode.  Assume "long" is such a type here.  */
  68. #undef SIZE_TYPE
  69. #define SIZE_TYPE "long int"
  70.  
  71.  
  72. /* The following provide a functional interface for the front end Ada code
  73.    to determine the sizes that are used for various C types. */
  74.  
  75. Pos
  76. get_target_bits_per_unit ()
  77. {
  78.   return BITS_PER_UNIT;
  79. }
  80.  
  81. Pos
  82. get_target_bits_per_word ()
  83. {
  84.   return BITS_PER_WORD;
  85. }
  86.  
  87. Pos
  88. get_target_char_size ()
  89. {
  90.   return CHAR_TYPE_SIZE;
  91. }
  92.  
  93. Pos
  94. get_target_short_size ()
  95. {
  96.   return SHORT_TYPE_SIZE;
  97. }
  98.  
  99. Pos
  100. get_target_int_size ()
  101. {
  102.   return INT_TYPE_SIZE;
  103. }
  104.  
  105. Pos
  106. get_target_long_size ()
  107. {
  108.   return LONG_TYPE_SIZE;
  109. }
  110.  
  111. Pos
  112. get_target_long_long_size ()
  113. {
  114.   return LONG_LONG_TYPE_SIZE;
  115. }
  116.  
  117. Pos
  118. get_target_float_size ()
  119. {
  120.   return FLOAT_TYPE_SIZE;
  121. }
  122.  
  123. Pos
  124. get_target_double_size ()
  125. {
  126.   return DOUBLE_TYPE_SIZE;
  127. }
  128.  
  129. Pos
  130. get_target_long_double_size ()
  131. {
  132.   return LONG_DOUBLE_TYPE_SIZE;
  133. }
  134.  
  135. Pos
  136. get_target_pointer_size ()
  137. {
  138.   return POINTER_SIZE;
  139. }
  140.  
  141. Pos
  142. get_target_maximum_alignment ()
  143. {
  144.   return BIGGEST_ALIGNMENT / BITS_PER_UNIT;
  145. }
  146.  
  147. #ifndef FLOAT_WORDS_BIG_ENDIAN
  148. #define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
  149. #endif
  150.  
  151. Nat get_float_words_be () {return FLOAT_WORDS_BIG_ENDIAN;}
  152. Nat get_words_be       () {return WORDS_BIG_ENDIAN;}
  153. Nat get_bytes_be       () {return BYTES_BIG_ENDIAN;}
  154. Nat get_bits_be        () {return BITS_BIG_ENDIAN;}
  155.