home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / gcc / c-lang.c < prev    next >
C/C++ Source or Header  |  1995-12-29  |  4KB  |  181 lines

  1. /* Language-specific hook definitions for C front end.
  2.    Copyright (C) 1991, 1995 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21.  
  22. #include "config.h"
  23. #include "tree.h"
  24. #include <stdio.h>
  25. #include "input.h"
  26.  
  27. /* Each of the functions defined here
  28.    is an alternative to a function in objc-actions.c.  */
  29.    
  30. int
  31. lang_decode_option (p)
  32.      char *p;
  33. {
  34.   return c_decode_option (p);
  35. }
  36.  
  37. void
  38. lang_init ()
  39. {
  40.   /* the beginning of the file is a new line; check for # */
  41.   /* With luck, we discover the real source file's name from that
  42.      and put it in input_filename.  */
  43.   ungetc (check_newline (), finput);
  44. }
  45.  
  46. void
  47. lang_finish ()
  48. {
  49. }
  50.  
  51. char *
  52. lang_identify ()
  53. {
  54.   return "c";
  55. }
  56.  
  57. void
  58. print_lang_statistics ()
  59. {
  60. }
  61.  
  62. /* Used by c-lex.c, but only for objc.  */
  63.  
  64. tree
  65. lookup_interface (arg)
  66.      tree arg;
  67. {
  68.   return 0;
  69. }
  70.  
  71. tree
  72. is_class_name (arg)
  73.     tree arg;
  74. {
  75.   return 0;
  76. }
  77.  
  78. void
  79. maybe_objc_check_decl (decl)
  80.      tree decl;
  81. {
  82. }
  83.  
  84. int
  85. maybe_objc_comptypes (lhs, rhs, reflexive)
  86.      tree lhs, rhs;
  87.      int reflexive;
  88. {
  89.   return -1;
  90. }
  91.  
  92. tree
  93. maybe_building_objc_message_expr ()
  94. {
  95.   return 0;
  96. }
  97.  
  98. int
  99. recognize_objc_keyword ()
  100. {
  101.   return 0;
  102. }
  103.  
  104. tree
  105. build_objc_string (len, str)
  106.     int len;
  107.     char *str;
  108. {
  109.   abort ();
  110.   return NULL_TREE;
  111. }
  112.  
  113. int
  114. is_protocol_qualified_id (type)
  115.    tree type;
  116. {
  117.     return 0;
  118. }
  119.  
  120. void
  121. GNU_xref_begin ()
  122. {
  123.   fatal ("GCC does not yet support XREF");
  124. }
  125.  
  126. void
  127. GNU_xref_end ()
  128. {
  129.   fatal ("GCC does not yet support XREF");
  130. }
  131.  
  132. /* called at end of parsing, but before end-of-file processing.  */
  133. void
  134. finish_file ()
  135. {
  136.   extern tree static_ctors, static_dtors;
  137.   extern tree get_file_function_name ();
  138.   extern tree build_function_call                 PROTO((tree, tree));
  139.   tree void_list_node = build_tree_list (NULL_TREE, void_type_node);
  140. #ifndef ASM_OUTPUT_CONSTRUCTOR
  141.   if (static_ctors)
  142.     {
  143.       tree fnname = get_file_function_name ('I');
  144.       start_function (void_list_node,
  145.               build_parse_node (CALL_EXPR, fnname, void_list_node,
  146.                     NULL_TREE),
  147.               NULL_TREE, NULL_TREE, 0);
  148.       fnname = DECL_ASSEMBLER_NAME (current_function_decl);
  149.       store_parm_decls ();
  150.  
  151.       for (; static_ctors; static_ctors = TREE_CHAIN (static_ctors))
  152.     expand_expr_stmt (build_function_call (TREE_VALUE (static_ctors),
  153.                            NULL_TREE));
  154.  
  155.       finish_function (0);
  156.  
  157.       assemble_constructor (IDENTIFIER_POINTER (fnname));
  158.     }
  159. #endif
  160. #ifndef ASM_OUTPUT_DESTRUCTOR
  161.   if (static_dtors)
  162.     {
  163.       tree fnname = get_file_function_name ('D');
  164.       start_function (void_list_node,
  165.               build_parse_node (CALL_EXPR, fnname, void_list_node,
  166.                     NULL_TREE),
  167.               NULL_TREE, NULL_TREE, 0);
  168.       fnname = DECL_ASSEMBLER_NAME (current_function_decl);
  169.       store_parm_decls ();
  170.  
  171.       for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors))
  172.     expand_expr_stmt (build_function_call (TREE_VALUE (static_dtors),
  173.                            NULL_TREE));
  174.  
  175.       finish_function (0);
  176.  
  177.       assemble_destructor (IDENTIFIER_POINTER (fnname));
  178.     }
  179. #endif
  180. }
  181.