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-gtran3.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  79 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                         GNAT COMPILER COMPONENTS                         */
  4. /*                                                                          */
  5. /*                             A - G T R A N 3                              */
  6. /*                                                                          */
  7. /*                              C Header File                               */
  8. /*                                                                          */
  9. /*                            $Revision: 1.25 $                             */
  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. /*  Definitions to access the front-end's eval functions. */
  26. #define Expr_Value   sem_eval__expr_value
  27. #define Expr_Value_S sem_eval__expr_value_s
  28.  
  29. /* Given GNAT_ENTITY, a GNAT defining identifier node, which denotes some Ada
  30.    entity, this routine returns the equivalent GCC tree for that entity
  31.    (an ..._DECL node) and associates the ..._DECL node with the input GNAT
  32.    defining identifier.
  33.  
  34.    If GNAT_ENTITY is a variable or a constant declaration, GNU_EXPR gives its
  35.    initial value (in GCC tree form). This is optional for variables.
  36.    For renamed entities, GNU_EXPR gives the object being renamed.
  37.  
  38.    DEFINITION is nonzero if this call is intended for a definition.  This is
  39.    used for separate compilation where it necessary to know whether an
  40.    external declaration or a definition should be created if the GCC equivalent
  41.    was not created previously.  The value of 1 is normally used for a non-zero
  42.    DEFINITION, but a value of 2 is used in special circumstances, defined in
  43.    the code.  */
  44. extern tree gnat_to_gnu_entity    PROTO((Entity_Id, tree, int));
  45.  
  46. /* Given GNAT_ENTITY, an entity in the incoming GNAT tree, return a
  47.    GCC type corresponding to that entity.  GNAT_ENTITY is assumed to
  48.    refer to an Ada type.  */
  49. extern tree gnat_to_gnu_type    PROTO((Entity_Id));
  50.  
  51. /* Given GNAT_ENTITY, elaborate all expressions that are required to
  52.    be elaborated at the point of its definition, but do nothing else.  */
  53. extern void elaborate_entity    PROTO((Entity_Id));
  54.  
  55. /* Make a dummy type corresponding to GNAT_TYPE.  */
  56. extern tree make_dummy_type    PROTO((Entity_Id));
  57.  
  58. /* Given GNAT_ENTITY of kind E_Function or E_Procedure, modify the declaration
  59.    to include the attribute, if it is valid for this configuration */
  60. extern tree maybe_machine_attribute PROTO((Entity_Id));
  61.  
  62. /* Called when we need to protect a variable object using a save_expr.  */
  63. extern tree maybe_variable    PROTO((tree));
  64.  
  65. /* Given a GNU tree and a GNAT list of choices, generate an expression to test
  66.    the value passed against the list of choices.  */
  67. extern tree choices_to_gnu    PROTO((tree, Node_Id));
  68.  
  69. /* Given a type T, a FIELD_DECL F, and a replacement value R,
  70.    return a new type with all size expressions that contain F
  71.    updated by replacing F with R.  This is identical to GCC's
  72.    substitute_in_type except that it knows about TYPE_INDEX_TYPE.  */
  73. extern tree gnat_substitute_in_type PROTO((tree, tree, tree));
  74.  
  75. /* Return a name for GNAT_ENTITY concatenated with two underscores and
  76.    STRING.  */
  77.  
  78. extern char *create_concat_name PROTO((Entity_Id, char *));
  79.