1 /* This file is part of the program psim. 2 3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, see <http://www.gnu.org/licenses/>. 17 18 */ 19 20 21 /* Frustrating header junk */ 22 23 #include "build-config.h" 24 25 #include <stdio.h> 26 #include <ctype.h> 27 #include <string.h> 28 #include <stdlib.h> 29 30 #include "ansidecl.h" 31 #include "filter_filename.h" 32 33 extern void error (const char *msg, ...) 34 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2); 35 36 #define ASSERT(EXPRESSION) \ 37 do { \ 38 if (!(EXPRESSION)) { \ 39 error("%s:%d: assertion failed - %s\n", \ 40 filter_filename (__FILE__), __LINE__, #EXPRESSION); \ 41 } \ 42 } while (0) 43 44 #define ZALLOC(TYPE) (TYPE*)zalloc(sizeof(TYPE)) 45 #define NZALLOC(TYPE,N) ((TYPE*) zalloc (sizeof(TYPE) * (N))) 46 47 extern void *zalloc 48 (long size); 49 50 extern void dumpf (int indent, const char *msg, ...) 51 ATTRIBUTE_PRINTF (2, 3); 52 53 extern unsigned target_a2i 54 (int ms_bit_nr, 55 const char *a); 56 57 extern unsigned i2target 58 (int ms_bit_nr, 59 unsigned bit); 60 61 extern unsigned a2i 62 (const char *a); 63 64 /* Try looking for name in the map table (returning the corresponding 65 integer value). If that fails, try converting the name into an 66 integer */ 67 68 typedef struct _name_map { 69 const char *name; 70 int i; 71 } name_map; 72 73 extern int name2i 74 (const char *name, 75 const name_map *map); 76 77 extern const char *i2name 78 (const int i, 79 const name_map *map); 80