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-uintp.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  67 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                         GNAT COMPILER COMPONENTS                         */
  4. /*                                                                          */
  5. /*                              A - U I N T P                               */
  6. /*                                                                          */
  7. /*                              C Header File                               */
  8. /*                                                                          */
  9. /*                            $Revision: 1.16 $                             */
  10. /*                                                                          */
  11. /*           Copyright (c) 1992,1993,1994 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 Soft- */
  15. /* ware  Foundation;  either version 2,  or (at your option) any later ver- */
  16. /* sion.  GNAT is distributed in the hope that it will be useful, but WITH- */
  17. /* OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY */
  18. /* or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License */
  19. /* for  more details.  You should have  received  a copy of the GNU General */
  20. /* Public License  distributed 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. /* This file corresponds to the Ada package specification Uintp. It was
  26.    created manually from the files uintp.ads and uintp.adb  */
  27.  
  28. /* Support for universal integer arithmetic */
  29.  
  30. struct Uint_Entry
  31. {
  32.   Pos Length;
  33.   Int Loc;
  34. };
  35.  
  36. /* See if a Uint is within the range of an integer.  */
  37. #define UI_Is_In_Int_Range  uintp__ui_is_in_int_range
  38. extern Boolean Ui_Is_In_Int_Range PROTO((Uint));
  39.  
  40. /* Obtain Int value from Uint input. This will abort if the result is
  41.    out of range.  */
  42. #define UI_To_Int uintp__ui_to_int
  43. extern Int UI_To_Int    PROTO((Uint));
  44.  
  45. #ifdef TREE_CODE   /* Don't lose if tree.h not included.  */
  46. /* Similarly, but return a GCC INTEGER_CST.  Overflow is tested by the
  47.    constant-folding used to build the node.  TYPE is the GCC type of the
  48.    resulting node.  */
  49. extern tree UI_To_gnu        PROTO((Uint, tree));
  50. #endif
  51.  
  52. /* Universal integers are represented by the Uint type which is an index into
  53.    the Uints_Ptr table containing Uint_Entry values.  A Uint_Entry contains an
  54.    index and length for getting the "digits" of the universal integer from the
  55.    Udigits_Ptr table.
  56.  
  57.    For efficiency, this method is used only for integer values larger than the
  58.    constant Uint_Bias.  If a Uint is less than this constant, then it contains
  59.    the integer value itself.  The origin of the Uints_Ptr table is adjusted so
  60.    that a Uint value of Uint_Bias indexes the first element.  */
  61.  
  62. #define Uints_Ptr (uintp__uints__table - Uint_First_Entry)
  63. extern struct Uint_Entry *uintp__uints__table;
  64.  
  65. #define Udigits_Ptr uintp__udigits__table
  66. extern int *uintp__udigits__table;
  67.