home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / top.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  7KB  |  204 lines

  1. /* top.h -- Public #include File (module.h template V1.0)
  2.    Copyright (C) 1995 Free Software Foundation, Inc.
  3.    Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
  4.  
  5. This file is part of GNU Fortran.
  6.  
  7. GNU Fortran is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2, or (at your option)
  10. any later version.
  11.  
  12. GNU Fortran is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU Fortran; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21.    Owning Modules:
  22.       top.c
  23.  
  24.    Modifications:
  25. */
  26.  
  27. /* Allow multiple inclusion to work. */
  28.  
  29. #ifndef _H_f_parse
  30. #define _H_f_parse
  31.  
  32. /* Simple definitions and enumerations. */
  33.  
  34. enum _ffe_case_
  35.   {
  36.     FFE_caseNONE,        /* No case conversion, match
  37.                    case-insensitive. */
  38.     FFE_caseUPPER,        /* Convert lowercase to uppercase, match
  39.                    upper. */
  40.     FFE_caseLOWER,        /* Convert uppercase to lowercase, match
  41.                    lower. */
  42.     FFE_caseINITCAP,        /* Match InitialCap (no meaning for
  43.                    conversion). */
  44.     FFE_case
  45.   };
  46. typedef enum _ffe_case_ ffeCase;
  47.  
  48. enum _ffeintrinsic_state_
  49.   {                /* State of a family of intrinsics. NOTE:
  50.                    order IS important, see
  51.                    ffe_intrinsic_state_max (). */
  52.     FFE_intrinsicstateDELETED,    /* Doesn't exist at all. */
  53.     FFE_intrinsicstateDISABLED,    /* Diagnostic if used as intrinsic. */
  54.     FFE_intrinsicstateHIDDEN,    /* Exists only if INTRINSIC stmt. */
  55.     FFE_intrinsicstateENABLED,    /* Exists as normal. */
  56.     FFE_intrinsicstate
  57.   };
  58. typedef enum _ffeintrinsic_state_ ffeIntrinsicState;
  59.  
  60. /* Typedefs. */
  61.  
  62. typedef unsigned long ffeCounter;
  63. #define ffeCounter_f "l"
  64. typedef unsigned int ffeKwIndex;
  65. typedef unsigned long int ffeTokenLength;
  66. #define ffeTokenLength_f "l"
  67. typedef void *ffeUnionLongPtr;    /* unused type to cover union of long and
  68.                    ptr. */
  69.  
  70. /* Include files needed by this one. */
  71.  
  72. #include "malloc.h"
  73. #include "where.h"
  74.  
  75. /* Structure definitions. */
  76.  
  77.  
  78. /* Global objects accessed by users of this module. */
  79.  
  80. extern bool ffe_is_90_;
  81. extern bool ffe_is_automatic_;
  82. extern bool ffe_is_backslash_;
  83. extern bool ffe_is_dollar_ok_;
  84. extern bool ffe_is_f2c_;
  85. extern bool ffe_is_f2c_library_;
  86. extern bool ffe_is_ffedebug_;
  87. extern bool ffe_is_free_form_;
  88. extern bool ffe_is_init_local_zero_;
  89. extern bool ffe_is_mainprog_;
  90. extern bool ffe_is_pedantic_;
  91. extern bool ffe_is_saveall_;
  92. extern bool ffe_is_ugly_;
  93. extern bool ffe_is_ugly_args_;
  94. extern bool ffe_is_ugly_init_;
  95. extern bool ffe_is_version_;
  96. extern bool ffe_is_vxt_not_90_;
  97. extern bool ffe_is_warn_implicit_;
  98. extern ffeCase ffe_case_intrin_;
  99. extern ffeCase ffe_case_match_;
  100. extern ffeCase ffe_case_source_;
  101. extern ffeCase ffe_case_symbol_;
  102. extern ffeIntrinsicState ffe_intrinsic_state_dcp_;
  103. extern ffeIntrinsicState ffe_intrinsic_state_f2c_;
  104. extern ffeIntrinsicState ffe_intrinsic_state_f90_;
  105. extern ffeIntrinsicState ffe_intrinsic_state_mil_;
  106. extern ffeIntrinsicState ffe_intrinsic_state_vxt_;
  107. extern int ffe_fixed_line_length_;
  108. extern mallocPool ffe_file_pool_;
  109. extern mallocPool ffe_any_unit_pool_;
  110. extern mallocPool ffe_program_unit_pool_;
  111. extern ffeCounter ffe_count_0;
  112. extern ffeCounter ffe_count_1;
  113. extern ffeCounter ffe_count_2;
  114. extern ffeCounter ffe_count_3;
  115. extern ffeCounter ffe_count_4;
  116. extern bool ffe_in_0;
  117. extern bool ffe_in_1;
  118. extern bool ffe_in_2;
  119. extern bool ffe_in_3;
  120. extern bool ffe_in_4;
  121.  
  122. /* Declare functions with prototypes. */
  123.  
  124. int ffe_decode_option (char *opt);
  125. void ffe_file (ffewhereFile wf, FILE *f);
  126. void ffe_init_0 (void);
  127. void ffe_init_1 (void);
  128. void ffe_init_2 (void);
  129. void ffe_init_3 (void);
  130. void ffe_init_4 (void);
  131. void ffe_terminate_0 (void);
  132. void ffe_terminate_1 (void);
  133. void ffe_terminate_2 (void);
  134. void ffe_terminate_3 (void);
  135. void ffe_terminate_4 (void);
  136.  
  137. /* Define macros. */
  138.  
  139. #define ffe_case_intrin() ffe_case_intrin_
  140. #define ffe_case_match() ffe_case_match_
  141. #define ffe_case_source() ffe_case_source_
  142. #define ffe_case_symbol() ffe_case_symbol_
  143. #define ffe_intrinsic_state_dcp() ffe_intrinsic_state_dcp_
  144. #define ffe_intrinsic_state_f2c() ffe_intrinsic_state_f2c_
  145. #define ffe_intrinsic_state_f90() ffe_intrinsic_state_f90_
  146. #define ffe_intrinsic_state_mil() ffe_intrinsic_state_mil_
  147. #define ffe_intrinsic_state_vxt() ffe_intrinsic_state_vxt_
  148. #define ffe_is_90() ffe_is_90_
  149. #define ffe_is_automatic() ffe_is_automatic_
  150. #define ffe_is_backslash() ffe_is_backslash_
  151. #define ffe_is_dollar_ok() ffe_is_dollar_ok_
  152. #define ffe_is_f2c() ffe_is_f2c_
  153. #define ffe_is_f2c_library() ffe_is_f2c_library_
  154. #define ffe_is_ffedebug() ffe_is_ffedebug_
  155. #define ffe_is_free_form() ffe_is_free_form_
  156. #define ffe_is_init_local_zero() ffe_is_init_local_zero_
  157. #define ffe_is_mainprog() ffe_is_mainprog_
  158. #define ffe_is_pedantic() ffe_is_pedantic_
  159. #define ffe_is_pedantic_not_90() (ffe_is_pedantic_ && !ffe_is_90_)
  160. #define ffe_is_saveall() ffe_is_saveall_
  161. #define ffe_is_ugly() ffe_is_ugly_
  162. #define ffe_is_ugly_args() ffe_is_ugly_args_
  163. #define ffe_is_ugly_init() ffe_is_ugly_init_
  164. #define ffe_is_version() ffe_is_version_
  165. #define ffe_is_vxt_not_90() ffe_is_vxt_not_90_
  166. #define ffe_is_warn_implicit() ffe_is_warn_implicit_
  167. #define ffe_fixed_line_length() ffe_fixed_line_length_
  168. #define ffe_pool_file() (ffe_file_pool_)
  169. #define ffe_pool_any_unit() (ffe_any_unit_pool_)
  170. #define ffe_pool_program_unit() (ffe_program_unit_pool_)
  171. #define ffe_set_case_intrin(f) (ffe_case_intrin_ = (f))
  172. #define ffe_set_case_match(f) (ffe_case_match_ = (f))
  173. #define ffe_set_case_source(f) (ffe_case_source_ = (f))
  174. #define ffe_set_case_symbol(f) (ffe_case_symbol_ = (f))
  175. #define ffe_set_intrinsic_state_dcp(s) (ffe_intrinsic_state_dcp_ = (s))
  176. #define ffe_set_intrinsic_state_f2c(s) (ffe_intrinsic_state_f2c_ = (s))
  177. #define ffe_set_intrinsic_state_f90(s) (ffe_intrinsic_state_f90_ = (s))
  178. #define ffe_set_intrinsic_state_mil(s) (ffe_intrinsic_state_mil_ = (s))
  179. #define ffe_set_intrinsic_state_vxt(s) (ffe_intrinsic_state_vxt_ = (s))
  180. #define ffe_set_is_90(f) (ffe_is_90_ = (f))
  181. #define ffe_set_is_automatic(f) (ffe_is_automatic_ = (f))
  182. #define ffe_set_is_backslash(f) (ffe_is_backslash_ = (f))
  183. #define ffe_set_is_dollar_ok(f) (ffe_is_dollar_ok_ = (f))
  184. #define ffe_set_is_f2c(f) (ffe_is_f2c_ = (f))
  185. #define ffe_set_is_f2c_library(f) (ffe_is_f2c_library_ = (f))
  186. #define ffe_set_is_ffedebug(f) (ffe_is_ffedebug_ = (f))
  187. #define ffe_set_is_free_form(f) (ffe_is_free_form_ = (f))
  188. #define ffe_set_is_init_local_zero(f) (ffe_is_init_local_zero_ = (f))
  189. #define ffe_set_is_mainprog(f) (ffe_is_mainprog_ = (f))
  190. #define ffe_set_is_pedantic(f) (ffe_is_pedantic_ = (f))
  191. #define ffe_set_is_saveall(f) (ffe_is_saveall_ = (f))
  192. #define ffe_set_is_ugly(f) (ffe_is_ugly_ = (f))
  193. #define ffe_set_is_ugly_args(f) (ffe_is_ugly_args_ = (f))
  194. #define ffe_set_is_ugly_init(f) (ffe_is_ugly_init_ = (f))
  195. #define ffe_set_is_version(f) (ffe_is_version_ = (f))
  196. #define ffe_set_is_vxt_not_90(f) (ffe_is_vxt_not_90_ = (f))
  197. #define ffe_set_is_warn_implicit(f) (ffe_is_warn_implicit_ = (f))
  198. #define ffe_set_fixed_line_length(l) (ffe_fixed_line_length_ = (l))
  199. #define ffe_state_max(s1,s2) ((s1) > (s2) ? (s1) : (s2))
  200.  
  201. /* End of #include file. */
  202.  
  203. #endif
  204.