1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 1997 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* Copyright (c) 1988 AT&T */ 28 /* All Rights Reserved */ 29 30 /* 31 * University Copyright- Copyright (c) 1982, 1986, 1988 32 * The Regents of the University of California 33 * All Rights Reserved 34 * 35 * University Acknowledgment- Portions of this document are derived from 36 * software developed by the University of California, Berkeley, and its 37 * contributors. 38 */ 39 40 #ifndef _COMPILER_H 41 #define _COMPILER_H 42 43 /* 44 * COPYRIGHT NOTICE 45 * 46 * This software is copyright(C) 1982 by Pavel Curtis 47 * 48 * Permission is granted to reproduce and distribute 49 * this file by any means so long as no fee is charged 50 * above a nominal handling fee and so long as this 51 * notice is always included in the copies. 52 * 53 * Other rights are reserved except as explicitly granted 54 * by written permission of the author. 55 * Pavel Curtis 56 * Computer Science Dept. 57 * 405 Upson Hall 58 * Cornell University 59 * Ithaca, NY 14853 60 * 61 * Ph- (607) 256-4934 62 * 63 * Pavel.Cornell@Udel-Relay(ARPAnet) 64 * decvax!cornell!pavel (UUCPnet) 65 */ 66 67 68 /* 69 * compiler.h - Global variables and structures for the terminfo 70 * compiler. 71 * 72 * $Header: RCS/compiler.v Revision 2.1 82/10/25 14:46:04 pavel Exp$ 73 * 74 * $Log: RCS/compiler.v $ 75 * Revision 2.1 82/10/25 14:46:04 pavel 76 * Added Copyright Notice 77 * 78 * Revision 2.0 82/10/24 15:17:20 pavel 79 * Beta-one Test Release 80 * 81 * Revision 1.3 82/08/23 22:30:09 pavel 82 * The REAL Alpha-one Release Version 83 * 84 * Revision 1.2 82/08/19 19:10:10 pavel 85 * Alpha Test Release One 86 * 87 * Revision 1.1 82/08/12 18:38:11 pavel 88 * Initial revision 89 * 90 */ 91 92 #include <stdio.h> 93 #include <signal.h> /* use this file to determine if this is SVR4.0 system */ 94 #include <time.h> 95 96 #ifdef __cplusplus 97 extern "C" { 98 #endif 99 100 #ifndef TRUE 101 #define TRUE 1 102 #define FALSE 0 103 #endif 104 105 #ifndef EXTERN /* for machines w/o multiple externs */ 106 #define EXTERN extern 107 #endif /* EXTERN */ 108 109 #define SINGLE /* only one terminal (actually none) */ 110 111 extern char *destination; /* destination directory for object files */ 112 113 EXTERN long start_time; /* time at start of compilation */ 114 115 EXTERN int curr_line; /* current line # in input */ 116 EXTERN long curr_file_pos; /* file offset of current line */ 117 118 EXTERN int debug_level; /* level of debugging output */ 119 120 #define DEBUG(level, fmt, a1) \ 121 if (debug_level >= level)\ 122 fprintf(stderr, fmt, a1); 123 124 /* 125 * These are the types of tokens returned by the scanner. 126 * The first three are also used in the hash table of capability 127 * names. The scanner returns one of these values after loading 128 * the specifics into the global structure curr_token. 129 * 130 */ 131 132 #define BOOLEAN 0 /* Boolean capability */ 133 #define NUMBER 1 /* Numeric capability */ 134 #define STRING 2 /* String-valued capability */ 135 #define CANCEL 3 /* Capability to be cancelled in following tc's */ 136 #define NAMES 4 /* The names for a terminal type */ 137 #define UNDEF 5 /* Invalid token type */ 138 139 #define MAXBOOLS 64 /* Maximum # of boolean caps we can handle */ 140 #define MAXNUMS 64 /* Maximum # of numeric caps we can handle */ 141 #define MAXSTRINGS 512 /* Maximum # of string caps we can handle */ 142 143 /* 144 * The global structure in which the specific parts of a 145 * scanned token are returned. 146 * 147 */ 148 149 struct token 150 { 151 char *tk_name; /* name of capability */ 152 int tk_valnumber; /* value of capability (if a number) */ 153 char *tk_valstring; /* value of capability (if a string) */ 154 }; 155 156 EXTERN struct token curr_token; 157 158 /* 159 * The file comp_captab.c contains an array of these structures, 160 * one per possible capability. These are then made into a hash 161 * table array of the same structures for use by the parser. 162 * 163 */ 164 165 struct name_table_entry 166 { 167 struct name_table_entry *nte_link; 168 char *nte_name; /* name to hash on */ 169 int nte_type; /* BOOLEAN, NUMBER or STRING */ 170 short nte_index; /* index of associated variable in its array */ 171 }; 172 173 extern struct name_table_entry cap_table[]; 174 extern struct name_table_entry *cap_hash_table[]; 175 176 extern int Captabsize; 177 extern int Hashtabsize; 178 extern int BoolCount; 179 extern int NumCount; 180 extern int StrCount; 181 182 #define NOTFOUND ((struct name_table_entry *)0) 183 /* 184 * Function types 185 * 186 */ 187 188 struct name_table_entry *find_entry(); /* look up entry in hash table */ 189 190 int next_char(); 191 int trans_string(); 192 193 #ifdef SIGSTOP /* SVR4.0 and beyond */ 194 #define SRCDIR "/usr/share/lib/terminfo" 195 #else 196 #define SRCDIR "/usr/lib/terminfo" 197 #endif 198 199 #ifdef __cplusplus 200 } 201 #endif 202 203 #endif /* _COMPILER_H */ 204