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. 4 5This file is part of GNU Fortran. 6 7GNU Fortran is free software; you can redistribute it and/or modify 8it under the terms of the GNU General Public License as published by 9the Free Software Foundation; either version 2, or (at your option) 10any later version. 11 12GNU Fortran is distributed in the hope that it will be useful, 13but WITHOUT ANY WARRANTY; without even the implied warranty of 14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15GNU General Public License for more details. 16 17You should have received a copy of the GNU General Public License 18along with GNU Fortran; see the file COPYING. If not, write to 19the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2002111-1307, USA. 21 22 Owning Modules: 23 name.c 24 25 Modifications: 26*/ 27 28/* Allow multiple inclusion to work. */ 29 30#ifndef _H_f_name 31#define _H_f_name 32 33/* Simple definitions and enumerations. */ 34 35 36/* Typedefs. */ 37 38typedef struct _ffename_ *ffename; 39typedef struct _ffename_space_ *ffenameSpace; 40 41/* Include files needed by this one. */ 42 43#include "global.h" 44#include "lex.h" 45#include "malloc.h" 46#include "symbol.h" 47 48/* Structure definitions. */ 49 50struct _ffename_ 51 { 52 ffename next; 53 ffename previous; 54 ffelexToken t; 55 union 56 { 57 ffesymbol s; 58 ffeglobal g; 59 } 60 u; 61 }; 62 63struct _ffename_space_ 64 { 65 ffename first; 66 ffename last; 67 mallocPool pool; 68 }; 69 70/* Global objects accessed by users of this module. */ 71 72 73/* Declare functions with prototypes. */ 74 75ffename ffename_find (ffenameSpace ns, ffelexToken t); 76void ffename_kill (ffenameSpace ns, ffename n); 77ffename ffename_lookup (ffenameSpace ns, ffelexToken t); 78void ffename_space_drive_global (ffenameSpace ns, ffeglobal (*fn) (ffeglobal)); 79void ffename_space_drive_symbol (ffenameSpace ns, ffesymbol (*fn) (ffesymbol)); 80void ffename_space_kill (ffenameSpace ns); 81ffenameSpace ffename_space_new (mallocPool pool); 82 83/* Define macros. */ 84 85#define ffename_first_token(n) ((n)->t) 86#define ffename_global(n) ((n)->u.g) 87#define ffename_init_0() 88#define ffename_init_1() 89#define ffename_init_2() 90#define ffename_init_3() 91#define ffename_init_4() 92#define ffename_set_global(n,glob) ((n)->u.g = (glob)) 93#define ffename_set_symbol(n,sym) ((n)->u.s = (sym)) 94#define ffename_symbol(n) ((n)->u.s) 95#define ffename_terminate_0() 96#define ffename_terminate_1() 97#define ffename_terminate_2() 98#define ffename_terminate_3() 99#define ffename_terminate_4() 100#define ffename_text(n) ffelex_token_text((n)->t) 101#define ffename_token(n) ((n)->t) 102#define ffename_where_filename(n) ffelex_token_where_filename((n)->t) 103#define ffename_where_filelinenum(n) ffelex_token_where_filelinenum((n)->t) 104#define ffename_where_line(n) ffelex_token_where_line((n)->t) 105#define ffename_where_column(n) ffelex_token_where_column((n)->t) 106 107/* End of #include file. */ 108 109#endif 110