1 /* Interface definitions for Fortran type abstraction 2 Copyright (C) 1995 Free Software Foundation, Inc. 3 Contributed by James Craig Burley. 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, 59 Temple Place - Suite 330, Boston, MA 20 02111-1307, USA. */ 21 22 #ifndef GCC_F_TYPE_H 23 #define GCC_F_TYPE_H 24 25 typedef struct _ffetype_ *ffetype; 26 typedef struct _ffetype_indexes_ *ffetype_indexes_; 27 28 struct _ffetype_ 29 { 30 ffetype_indexes_ kinds_; 31 ffetype_indexes_ stars_; 32 int alignment_; 33 int modulo_; 34 int size_; 35 }; 36 37 struct _ffetype_indexes_ 38 { 39 ffetype type_[40]; /* *n, KIND=n: 0 <= n <= 39. */ 40 }; 41 42 #define ffetype_alignment(t) ((t)->alignment_) 43 #define ffetype_init_0() 44 #define ffetype_init_1() 45 #define ffetype_init_2() 46 #define ffetype_init_3() 47 #define ffetype_init_4() 48 ffetype ffetype_lookup_kind (ffetype base_type, int kind); 49 ffetype ffetype_lookup_star (ffetype base_type, int star); 50 #define ffetype_modulo(t) ((t)->modulo_) 51 ffetype ffetype_new (void); 52 #define ffetype_set_ams(t,a,m,s) ((t)->alignment_ = (a), \ 53 (t)->modulo_ = (m), \ 54 (t)->size_ = (s)) 55 void ffetype_set_kind (ffetype base_type, int kind, ffetype type); 56 void ffetype_set_star (ffetype base_type, int star, ffetype type); 57 #define ffetype_size(t) ((t)->size_) 58 #define ffetype_terminate_0() 59 #define ffetype_terminate_1() 60 #define ffetype_terminate_2() 61 #define ffetype_terminate_3() 62 #define ffetype_terminate_4() 63 64 #endif /* ! GCC_F_TYPE_H */ 65