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 2 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, write to the Free Software 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 */ 20 21 22/* Frustrating header junk */ 23 24#include "config.h" 25 26#include <stdio.h> 27#include <ctype.h> 28 29#ifdef HAVE_STRING_H 30#include <string.h> 31#else 32#ifdef HAVE_STRINGS_H 33#include <strings.h> 34#endif 35#endif 36 37#ifdef HAVE_STDLIB_H 38#include <stdlib.h> 39#endif 40 41#if !defined (__attribute__) && (!defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)) 42#define __attribute__(arg) 43#endif 44 45 46 47#include "filter_filename.h" 48 49extern void error 50(char *msg, ...); 51 52#define ASSERT(EXPRESSION) \ 53do { \ 54 if (!(EXPRESSION)) { \ 55 error("%s:%d: assertion failed - %s\n", \ 56 filter_filename (__FILE__), __LINE__, #EXPRESSION); \ 57 } \ 58} while (0) 59 60#define ZALLOC(TYPE) (TYPE*)zalloc(sizeof(TYPE)) 61#define NZALLOC(TYPE,N) ((TYPE*) zalloc (sizeof(TYPE) * (N))) 62 63extern void *zalloc 64(long size); 65 66extern void dumpf 67(int indent, char *msg, ...); 68 69extern unsigned target_a2i 70(int ms_bit_nr, 71 const char *a); 72 73extern unsigned i2target 74(int ms_bit_nr, 75 unsigned bit); 76 77extern unsigned a2i 78(const char *a); 79 80/* Try looking for name in the map table (returning the corresponding 81 integer value). If that fails, try converting the name into an 82 integer */ 83 84typedef struct _name_map { 85 const char *name; 86 int i; 87} name_map; 88 89extern int name2i 90(const char *name, 91 const name_map *map); 92 93extern const char *i2name 94(const int i, 95 const name_map *map); 96