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 / stt.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  6KB  |  217 lines

  1. /* stt.h -- Private #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.       stt.c
  23.  
  24.    Modifications:
  25. */
  26.  
  27. /* Allow multiple inclusion to work. */
  28.  
  29. #ifndef _H_f_stt
  30. #define _H_f_stt
  31.  
  32. /* Simple definitions and enumerations. */
  33.  
  34.  
  35. /* Typedefs. */
  36.  
  37. typedef struct _ffest_case_list_ *ffesttCaseList;
  38. typedef struct _ffest_dim_list_ *ffesttDimList;
  39. typedef struct _ffest_expr_list_ *ffesttExprList;
  40. typedef struct _ffest_format_value_ ffesttFormatValue;
  41. typedef struct _ffest_format_list_ *ffesttFormatList;
  42. typedef struct _ffest_imp_list_ *ffesttImpList;
  43. typedef struct _ffest_token_item_ *ffesttTokenItem;
  44. typedef struct _ffest_token_list_ *ffesttTokenList;
  45.  
  46. /* Include files needed by this one. */
  47.  
  48. #include "top.h"
  49. #include "bld.h"
  50. #include "info.h"
  51. #include "lex.h"
  52. #include "stp.h"
  53.  
  54. /* Structure definitions. */
  55.  
  56. struct _ffest_case_list_
  57.   {
  58.     ffesttCaseList next;
  59.     ffesttCaseList previous;
  60.     ffelexToken t;
  61.     ffebld expr1;
  62.     ffebld expr2;
  63.     bool range;            /* TRUE if "[expr1]:[expr2]", FALSE if
  64.                    "expr1". */
  65.   };
  66.  
  67. struct _ffest_dim_list_
  68.   {
  69.     ffesttDimList next;
  70.     ffesttDimList previous;
  71.     ffelexToken t;
  72.     ffebld lower;
  73.     ffebld upper;
  74.   };
  75.  
  76. struct _ffest_expr_list_
  77.   {
  78.     ffesttExprList next;
  79.     ffesttExprList previous;
  80.     ffelexToken t;
  81.     ffebld expr;
  82.   };
  83.  
  84. struct _ffest_token_item_
  85.   {
  86.     ffesttTokenItem next;
  87.     ffesttTokenItem previous;
  88.     ffelexToken t;
  89.   };
  90.  
  91. struct _ffest_token_list_
  92.   {
  93.     ffesttTokenItem first;
  94.     ffesttTokenItem last;
  95.     int count;            /* Number of tokens in list. */
  96.   };
  97.  
  98. struct _ffest_format_value_
  99.   {
  100.     bool present;        /* TRUE if value supplied (needed for
  101.                    optional values only). */
  102.     bool rtexpr;        /* FALSE if constant value here, TRUE if
  103.                    run-time expr (VXT). */
  104.     ffelexToken t;        /* The first token, or perhaps just prior if
  105.                    can't get it. */
  106.     union
  107.       {
  108.     ffeUnionLongPtr unused;    /* Make sure all the info gets copied. */
  109.     long signed_val;    /* for R1011. */
  110.     unsigned long unsigned_val;    /* For other constant values. */
  111.     ffebld expr;        /* For run-time expression (VXT). */
  112.       }
  113.     u;
  114.   };
  115.  
  116. struct _ffest_format_list_
  117.   {
  118.     ffesttFormatList next;
  119.     ffesttFormatList previous;
  120.     ffelexToken t;        /* The NAME, CHARACTER, or HOLLERITH token. */
  121.     ffestpFormatType type;
  122.     union ffest_format_
  123.       {
  124.     struct
  125.       {
  126.         ffesttFormatValue R1004;    /* r, the repeat count. */
  127.         ffesttFormatValue R1006;    /* w, the field width. */
  128.         ffesttFormatValue R1007_or_R1008;    /* m, the minimum number of
  129.                            digits; d, the number of
  130.                            decimal digits. */
  131.         ffesttFormatValue R1009;    /* e, the number of exponent digits. */
  132.       }
  133.     R1005;            /* data-edit-desc. */
  134.     struct
  135.       {
  136.         ffesttFormatValue val;    /* r, the repeat count; k, the
  137.                        precision magnitude adjustment; n,
  138.                        the column number (abs or rel). */
  139.       }
  140.     R1010;            /* control-edit-desc. */
  141.     struct
  142.       {
  143.         ffesttFormatValue R1004;    /* r, the repeat count. */
  144.         ffesttFormatList format;    /* the parenthesized
  145.                        format-item-list. */
  146.       }
  147.     R1003D;            /* format-item of for [r](format-item-list). */
  148.     struct
  149.       {
  150.         ffesttFormatList parent;    /* NULL if outer list, else parent
  151.                        item. */
  152.       }
  153.     root;            /* FFESTP_formattypeNone case. */
  154.       }
  155.     u;
  156.   };
  157.  
  158. /* Global objects accessed by users of this module. */
  159.  
  160.  
  161. /* Declare functions with prototypes. */
  162.  
  163. void ffestt_caselist_append (ffesttCaseList list, bool range, ffebld case1,
  164.                  ffebld case2, ffelexToken t);
  165. ffesttCaseList ffestt_caselist_create (void);
  166. void ffestt_caselist_dump (ffesttCaseList list);
  167. void ffestt_caselist_kill (ffesttCaseList list);
  168. void ffestt_dimlist_append (ffesttDimList list, ffebld lower, ffebld upper,
  169.                 ffelexToken t);
  170. ffebld ffestt_dimlist_as_expr (ffesttDimList list, ffeinfoRank *rank,
  171.                    ffebld *array_size, ffebld *extents);
  172. ffesttDimList ffestt_dimlist_create (void);
  173. void ffestt_dimlist_dump (ffesttDimList list);
  174. void ffestt_dimlist_kill (ffesttDimList list);
  175. ffestpDimtype ffestt_dimlist_type (ffesttDimList dims);
  176. void ffestt_exprlist_append (ffesttExprList list, ffebld expr, ffelexToken t);
  177. ffesttExprList ffestt_exprlist_create (void);
  178. void ffestt_exprlist_drive (ffesttExprList list, void (*fn) ());
  179. void ffestt_exprlist_dump (ffesttExprList list);
  180. void ffestt_exprlist_kill (ffesttExprList list);
  181. ffesttFormatList ffestt_formatlist_append (ffesttFormatList list);
  182. ffesttFormatList ffestt_formatlist_create (ffesttFormatList parent,
  183.                        ffelexToken t);
  184. void ffestt_formatlist_dump (ffesttFormatList list);
  185. void ffestt_formatlist_kill (ffesttFormatList list);
  186. void ffestt_implist_append (ffesttImpList list, ffelexToken first,
  187.                 ffelexToken last);
  188. ffesttImpList ffestt_implist_create (void);
  189. void ffestt_implist_drive (ffesttImpList list, void (*fn) ());
  190. void ffestt_implist_dump (ffesttImpList list);
  191. void ffestt_implist_kill (ffesttImpList list);
  192. void ffestt_tokenlist_append (ffesttTokenList list, ffelexToken t);
  193. ffesttTokenList ffestt_tokenlist_create (void);
  194. void ffestt_tokenlist_drive (ffesttTokenList list, void (*fn) ());
  195. void ffestt_tokenlist_dump (ffesttTokenList list);
  196. ffelexHandler ffestt_tokenlist_handle (ffesttTokenList list,
  197.                        ffelexHandler handler);
  198. void ffestt_tokenlist_kill (ffesttTokenList list);
  199.  
  200. /* Define macros. */
  201.  
  202. #define ffestt_init_0()
  203. #define ffestt_init_1()
  204. #define ffestt_init_2()
  205. #define ffestt_init_3()
  206. #define ffestt_init_4()
  207. #define ffestt_terminate_0()
  208. #define ffestt_terminate_1()
  209. #define ffestt_terminate_2()
  210. #define ffestt_terminate_3()
  211. #define ffestt_terminate_4()
  212. #define ffestt_tokenlist_count(tl) ((tl)->count)
  213.  
  214. /* End of #include file. */
  215.  
  216. #endif
  217.