1/* $NetBSD: inittyp.c,v 1.3 2002/01/30 06:55:02 thorpej Exp $ */ 2 3/* 4 * Copyright (c) 1994, 1995 Jochen Pohl 5 * All Rights Reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by Jochen Pohl for 18 * The NetBSD Project. 19 * 4. The name of the author may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34#include <sys/cdefs.h> 35#if defined(__RCSID) && !defined(lint) 36__RCSID("$NetBSD: inittyp.c,v 1.3 2002/01/30 06:55:02 thorpej Exp $"); 37#endif 38 39#include <ctype.h> 40#include <limits.h> 41#include <stdlib.h> 42 43#include "lint.h" 44 45/* various type information */ 46ttab_t ttab[NTSPEC]; 47 48void 49inittyp(void) 50{ 51 int i; 52 static const struct { 53 tspec_t it_tspec; 54 ttab_t it_ttab; 55 } ittab[NTSPEC] = { 56 { SIGNED, { 0, 0, 57 SIGNED, UNSIGN, 58 0, 0, 0, 0, 0, "signed" } }, 59 { UNSIGN, { 0, 0, 60 SIGNED, UNSIGN, 61 0, 0, 0, 0, 0, "unsigned" } }, 62 { CHAR, { CHAR_SIZE, CHAR_BIT, 63 SCHAR, UCHAR, 64 1, 0, 0, 1, 1, "char" } }, 65 { SCHAR, { CHAR_SIZE, CHAR_BIT, 66 SCHAR, UCHAR, 67 1, 0, 0, 1, 1, "signed char" } }, 68 { UCHAR, { CHAR_SIZE, CHAR_BIT, 69 SCHAR, UCHAR, 70 1, 1, 0, 1, 1, "unsigned char" } }, 71 { SHORT, { SHORT_SIZE, 2 * CHAR_BIT, 72 SHORT, USHORT, 73 1, 0, 0, 1, 1, "short" } }, 74 { USHORT, { SHORT_SIZE, 2 * CHAR_BIT, 75 SHORT, USHORT, 76 1, 1, 0, 1, 1, "unsigned short" } }, 77 { INT, { INT_SIZE, 3 * CHAR_BIT, 78 INT, UINT, 79 1, 0, 0, 1, 1, "int" } }, 80 { UINT, { INT_SIZE, 3 * CHAR_BIT, 81 INT, UINT, 82 1, 1, 0, 1, 1, "unsigned int" } }, 83 { LONG, { LONG_SIZE, 4 * CHAR_BIT, 84 LONG, ULONG, 85 1, 0, 0, 1, 1, "long" } }, 86 { ULONG, { LONG_SIZE, 4 * CHAR_BIT, 87 LONG, ULONG, 88 1, 1, 0, 1, 1, "unsigned long" } }, 89 { QUAD, { QUAD_SIZE, 8 * CHAR_BIT, 90 QUAD, UQUAD, 91 1, 0, 0, 1, 1, "long long" } }, 92 { UQUAD, { QUAD_SIZE, 8 * CHAR_BIT, 93 QUAD, UQUAD, 94 1, 1, 0, 1, 1, "unsigned long long" } }, 95 { FLOAT, { FLOAT_SIZE, 4 * CHAR_BIT, 96 FLOAT, FLOAT, 97 0, 0, 1, 1, 1, "float" } }, 98 { DOUBLE, { DOUBLE_SIZE, 8 * CHAR_BIT, 99 DOUBLE, DOUBLE, 100 0, 0, 1, 1, 1, "double" } }, 101 { LDOUBLE, { LDOUBLE_SIZE, 10 * CHAR_BIT, 102 LDOUBLE, LDOUBLE, 103 0, 0, 1, 1, 1, "long double" } }, 104 { VOID, { -1, -1, 105 VOID, VOID, 106 0, 0, 0, 0, 0, "void" } }, 107 { STRUCT, { -1, -1, 108 STRUCT, STRUCT, 109 0, 0, 0, 0, 0, "struct" } }, 110 { UNION, { -1, -1, 111 UNION, UNION, 112 0, 0, 0, 0, 0, "union" } }, 113 { ENUM, { ENUM_SIZE, 3 * CHAR_BIT, 114 ENUM, ENUM, 115 1, 0, 0, 1, 1, "enum" } }, 116 { PTR, { PTR_SIZE, 4 * CHAR_BIT, 117 PTR, PTR, 118 0, 1, 0, 0, 1, "pointer" } }, 119 { ARRAY, { -1, -1, 120 ARRAY, ARRAY, 121 0, 0, 0, 0, 0, "array" } }, 122 { FUNC, { -1, -1, 123 FUNC, FUNC, 124 0, 0, 0, 0, 0, "function" } }, 125 }; 126 127 for (i = 0; i < sizeof (ittab) / sizeof (ittab[0]); i++) 128 STRUCT_ASSIGN(ttab[ittab[i].it_tspec], ittab[i].it_ttab); 129 if (!pflag) { 130 for (i = 0; i < NTSPEC; i++) 131 ttab[i].tt_psz = ttab[i].tt_sz; 132 } 133} 134