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 / name.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  108 lines

  1. /* name.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.       name.c
  23.  
  24.    Modifications:
  25. */
  26.  
  27. /* Allow multiple inclusion to work. */
  28.  
  29. #ifndef _H_f_name
  30. #define _H_f_name
  31.  
  32. /* Simple definitions and enumerations. */
  33.  
  34.  
  35. /* Typedefs. */
  36.  
  37. typedef struct _ffename_ *ffename;
  38. typedef struct _ffename_space_ *ffenameSpace;
  39.  
  40. /* Include files needed by this one. */
  41.  
  42. #include "global.h"
  43. #include "lex.h"
  44. #include "malloc.h"
  45. #include "symbol.h"
  46.  
  47. /* Structure definitions. */
  48.  
  49. struct _ffename_
  50.   {
  51.     ffename next;
  52.     ffename previous;
  53.     ffelexToken t;
  54.     union
  55.       {
  56.     ffesymbol s;
  57.     ffeglobal g;
  58.       }
  59.     u;
  60.   };
  61.  
  62. struct _ffename_space_
  63.   {
  64.     ffename first;
  65.     ffename last;
  66.     mallocPool pool;
  67.   };
  68.  
  69. /* Global objects accessed by users of this module. */
  70.  
  71.  
  72. /* Declare functions with prototypes. */
  73.  
  74. ffename ffename_find (ffenameSpace ns, ffelexToken t);
  75. void ffename_kill (ffenameSpace ns, ffename n);
  76. ffename ffename_lookup (ffenameSpace ns, ffelexToken t);
  77. void ffename_space_drive_global (ffenameSpace ns, ffeglobal (*fn) ());
  78. void ffename_space_drive_symbol (ffenameSpace ns, ffesymbol (*fn) ());
  79. void ffename_space_kill (ffenameSpace ns);
  80. ffenameSpace ffename_space_new (mallocPool pool);
  81.  
  82. /* Define macros. */
  83.  
  84. #define ffename_first_token(n) ((n)->t)
  85. #define ffename_global(n) ((n)->u.g)
  86. #define ffename_init_0()
  87. #define ffename_init_1()
  88. #define ffename_init_2()
  89. #define ffename_init_3()
  90. #define ffename_init_4()
  91. #define ffename_terminate_0()
  92. #define ffename_terminate_1()
  93. #define ffename_terminate_2()
  94. #define ffename_terminate_3()
  95. #define ffename_terminate_4()
  96. #define ffename_set_global(n,glob) ((n)->u.g = (glob))
  97. #define ffename_set_symbol(n,sym) ((n)->u.s = (sym))
  98. #define ffename_symbol(n) ((n)->u.s)
  99. #define ffename_text(n) ffelex_token_text((n)->t)
  100. #define ffename_where_filename(n) ffelex_token_where_filename((n)->t)
  101. #define ffename_where_filelinenum(n) ffelex_token_where_filelinenum((n)->t)
  102. #define ffename_where_line(n) ffelex_token_where_line((n)->t)
  103. #define ffename_where_column(n) ffelex_token_where_column((n)->t)
  104.  
  105. /* End of #include file. */
  106.  
  107. #endif
  108.