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

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*                         GNAT COMPILER COMPONENTS                         */
  4. /*                                                                          */
  5. /*                              A - T R A N S                               */
  6. /*                                                                          */
  7. /*                              C Header File                               */
  8. /*                                                                          */
  9. /*                            $Revision: 1.21 $                             */
  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. #define BAD_GNAT_TREE ((Node_Id) -1)
  26.  
  27. /* This function isn't in sinfo.h since we don't make the setting functions,
  28.    just the retreival functions.  This is the single exception to the rule
  29.    that Gigi doesn't modify the tree.  */
  30. #define Set_Has_No_Elab_Code sinfo__set_has_no_elab_code
  31. extern void Set_Has_No_Elab_Code    PROTO((Node_Id, Boolean));
  32.  
  33. /* Offset from first sloc in file.  Set in parallel with LINENO
  34.    and CURRENT_FILE_NAME.  */
  35. extern int sloc_offset;
  36.  
  37. /* For most front-ends, this is the parser for the language.  For us, we
  38.    process the GNAT tree.  */
  39. extern int yyparse        PROTO((void));
  40.  
  41. /* This function is the driver of the GNAT to GCC tree transformation process.
  42.    GNAT_NODE is the root of some gnat tree.  It generates code for that
  43.    part of the tree.  */
  44. extern void gnat_to_code    PROTO((Node_Id));
  45.  
  46. /* GNAT_NODE is the root of some GNAT tree.  Return the root of the
  47.    GCC tree corresponding to that GNAT tree.  Normally, no code is generated;
  48.    we just return an equivalent tree which is used elsewhere to generate
  49.    code.  */
  50. extern tree gnat_to_gnu        PROTO((Node_Id));
  51.  
  52. /* Determine the input_filename and the lineno from the source location
  53.    (Sloc) of GNAT_NODE node.  Set the global variable input_filename and
  54.    lineno.  If WRITE_NOTE_P is true, emit a line number note. */
  55. extern void set_lineno        PROTO((Node_Id, int));
  56.  
  57. /* Post an error message.  MSG is the error message, properly annotated.
  58.    NODE is the node at which to post the error and the node to use for the
  59.    "&" substitution.  */
  60. extern void post_error        PROTO((char *, Node_Id));
  61.  
  62. /* Surround EXP with a SAVE_EXPR, but handle unconstrained objects specially
  63.    since it doesn't make any sense to put them in a SAVE_EXPR.  */
  64. extern tree make_save_expr    PROTO((tree));
  65.  
  66. /* Signal abort, with "Gigi abort" as the error label, and error_gnat_node
  67.    as the relevant node that provides the location info for the error.
  68.    The single parameter CODE is an integer code that is included in the
  69.    additional error message generated */
  70. extern void gigi_abort          PROTO((int))  __attribute__ ((noreturn));
  71.  
  72. /* Initialize the table that maps GNAT codes to GCC codes for simple
  73.    binary and unary operations.  */
  74. extern void init_code_table    PROTO((void));
  75.  
  76. /* process all implicit types entities attached to a node */
  77. extern void process_implicit_types PROTO ((Node_Id));
  78.