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 / info.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  5KB  |  182 lines

  1. /* info.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.       info.c
  23.  
  24.    Modifications:
  25.       30-Aug-90     JCB  2.0
  26.      Extensive rewrite for new cleaner approach.
  27. */
  28.  
  29. /* Allow multiple inclusion to work. */
  30.  
  31. #ifndef _H_f_info
  32. #define _H_f_info
  33.  
  34. /* Simple definitions and enumerations. */
  35.  
  36. typedef enum
  37.   {
  38. #define FFEINFO_BASICTYPE(KWD,LNAM,SNAM) KWD,
  39. #include "info-b.def"
  40. #undef FFEINFO_BASICTYPE
  41.     FFEINFO_basictype
  42.   } ffeinfoBasictype;
  43.  
  44. typedef enum
  45.   {                /* If these kindtypes aren't in size order,
  46.                    change _kindtype_max. */
  47.     FFEINFO_kindtypeNONE,
  48.     FFEINFO_kindtypeINTEGER1,
  49.     FFEINFO_kindtypeINTEGER2,
  50.     FFEINFO_kindtypeINTEGER3,
  51.     FFEINFO_kindtypeINTEGER4,
  52.     FFEINFO_kindtypeINTEGER5,
  53.     FFEINFO_kindtypeINTEGER6,
  54.     FFEINFO_kindtypeINTEGER7,
  55.     FFEINFO_kindtypeINTEGER8,
  56.     FFEINFO_kindtypeLOGICAL1 = 1,    /* Ok to omit, but ok to overlap. */
  57.     FFEINFO_kindtypeLOGICAL2,
  58.     FFEINFO_kindtypeLOGICAL3,
  59.     FFEINFO_kindtypeLOGICAL4,
  60.     FFEINFO_kindtypeLOGICAL5,
  61.     FFEINFO_kindtypeLOGICAL6,
  62.     FFEINFO_kindtypeLOGICAL7,
  63.     FFEINFO_kindtypeLOGICAL8,
  64.     FFEINFO_kindtypeREAL1 = 1,    /* Ok to omit, but ok to overlap. */
  65.     FFEINFO_kindtypeREAL2,
  66.     FFEINFO_kindtypeREAL3,
  67.     FFEINFO_kindtypeREAL4,
  68.     FFEINFO_kindtypeREAL5,
  69.     FFEINFO_kindtypeREAL6,
  70.     FFEINFO_kindtypeREAL7,
  71.     FFEINFO_kindtypeREAL8,
  72.     FFEINFO_kindtypeCHARACTER1 = 1,    /* Ok to omit, but ok to overlap. */
  73.     FFEINFO_kindtypeCHARACTER2,
  74.     FFEINFO_kindtypeCHARACTER3,
  75.     FFEINFO_kindtypeCHARACTER4,
  76.     FFEINFO_kindtypeCHARACTER5,
  77.     FFEINFO_kindtypeCHARACTER6,
  78.     FFEINFO_kindtypeCHARACTER7,
  79.     FFEINFO_kindtypeCHARACTER8,
  80.     FFEINFO_kindtypeANY,
  81.     FFEINFO_kindtype
  82.   } ffeinfoKindtype;
  83.  
  84. typedef enum
  85.   {
  86. #define FFEINFO_KIND(KWD,LNAM,SNAM) KWD,
  87. #include "info-k.def"
  88. #undef FFEINFO_KIND
  89.     FFEINFO_kind
  90.   } ffeinfoKind;
  91.  
  92. typedef enum
  93.   {
  94. #define FFEINFO_WHERE(KWD,LNAM,SNAM) KWD,
  95. #include "info-w.def"
  96. #undef FFEINFO_WHERE
  97.     FFEINFO_where
  98.   } ffeinfoWhere;
  99.  
  100. /* Typedefs. */
  101.  
  102. typedef struct _ffeinfo_ ffeinfo;
  103. typedef char ffeinfoRank;
  104.  
  105. /* Include files needed by this one. */
  106.  
  107. #include "target.h"
  108. #include "type.h"
  109.  
  110. /* Structure definitions. */
  111.  
  112. struct _ffeinfo_
  113.   {
  114.     ffeinfoBasictype basictype;
  115.     ffeinfoKindtype kindtype;
  116.     ffeinfoRank rank;
  117.     ffeinfoKind kind;
  118.     ffeinfoWhere where;
  119.     ffetargetCharacterSize size;
  120.   };
  121.  
  122. /* Global objects accessed by users of this module. */
  123.  
  124.  
  125. /* Declare functions with prototypes. */
  126.  
  127. ffeinfoBasictype ffeinfo_basictype_combine (ffeinfoBasictype l,
  128.                         ffeinfoBasictype r);
  129. char *ffeinfo_basictype_string (ffeinfoBasictype basictype);
  130. void ffeinfo_init_0 (void);
  131. char *ffeinfo_kind_message (ffeinfoKind kind);
  132. char *ffeinfo_kind_string (ffeinfoKind kind);
  133. char *ffeinfo_kindtype_string (ffeinfoKindtype kind_type);
  134. char *ffeinfo_where_string (ffeinfoWhere where);
  135. ffeinfo ffeinfo_new (ffeinfoBasictype basictype, ffeinfoKindtype kindtype,
  136.              ffeinfoRank rank, ffeinfoKind kind, ffeinfoWhere where,
  137.              ffetargetCharacterSize size);
  138. void ffeinfo_set_type (ffeinfoBasictype basictype, ffeinfoKindtype kindtype,
  139.                ffetype type);
  140. ffetype ffeinfo_type (ffeinfoBasictype basictype, ffeinfoKindtype kindtype);
  141.  
  142. /* Define macros. */
  143.  
  144. #define ffeinfo_basictype(i) (i.basictype)
  145. #define ffeinfo_init_1()
  146. #define ffeinfo_init_2()
  147. #define ffeinfo_init_3()
  148. #define ffeinfo_init_4()
  149. #define ffeinfo_kind(i) (i.kind)
  150. #define ffeinfo_kindtype(i) (i.kindtype)
  151. #define ffeinfo_kindtype_max(bt,i,j) (((i) > (j)) ? (i) : (j))
  152. #define ffeinfo_new(bt,kt,r,k,w,sz) \
  153.   ((ffeinfo) {(bt), (kt), (r), (k), (w), (sz)})
  154. #define ffeinfo_new_any()                              \
  155.   ffeinfo_new (FFEINFO_basictypeANY, FFEINFO_kindtypeANY, 0,              \
  156.            FFEINFO_kindANY, FFEINFO_whereANY,                  \
  157.            FFETARGET_charactersizeNONE)
  158. #define ffeinfo_new_null()                              \
  159.   ffeinfo_new (FFEINFO_basictypeNONE, FFEINFO_kindtypeNONE, 0,              \
  160.            FFEINFO_kindNONE, FFEINFO_whereNONE,                  \
  161.            FFETARGET_charactersizeNONE)
  162. #define ffeinfo_rank(i) (i.rank)
  163. #define ffeinfo_size(i) (i.size)
  164. #define ffeinfo_terminate_0()
  165. #define ffeinfo_terminate_1()
  166. #define ffeinfo_terminate_2()
  167. #define ffeinfo_terminate_3()
  168. #define ffeinfo_terminate_4()
  169. #define ffeinfo_use(i) i
  170. #define ffeinfo_where(i) (i.where)
  171.  
  172. #define FFEINFO_kindtypeINTEGERDEFAULT FFEINFO_kindtypeINTEGER1
  173. #define FFEINFO_kindtypeLOGICALDEFAULT FFEINFO_kindtypeLOGICAL1
  174. #define FFEINFO_kindtypeREALDEFAULT FFEINFO_kindtypeREAL1
  175. #define FFEINFO_kindtypeREALDOUBLE FFEINFO_kindtypeREAL2
  176. #define FFEINFO_kindtypeREALQUAD FFEINFO_kindtypeREAL3
  177. #define FFEINFO_kindtypeCHARACTERDEFAULT FFEINFO_kindtypeCHARACTER1
  178.  
  179. /* End of #include file. */
  180.  
  181. #endif
  182.