summaryrefslogtreecommitdiff
path: root/usr/src/lib/libcurses/screen/compiler.h
blob: c1d6f82be0a54c3a258997efa3a67f1c28ec89b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 1997 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*	Copyright (c) 1988 AT&T	*/
/*	  All Rights Reserved	*/

/*
 * University Copyright- Copyright (c) 1982, 1986, 1988
 * The Regents of the University of California
 * All Rights Reserved
 *
 * University Acknowledgment- Portions of this document are derived from
 * software developed by the University of California, Berkeley, and its
 * contributors.
 */

#ifndef	_COMPILER_H
#define	_COMPILER_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

/*
 *			COPYRIGHT NOTICE
 *
 *	This software is copyright(C) 1982 by Pavel Curtis
 *
 *	Permission is granted to reproduce and distribute
 *	this file by any means so long as no fee is charged
 *	above a nominal handling fee and so long as this
 *	notice is always included in the copies.
 *
 *	Other rights are reserved except as explicitly granted
 *	by written permission of the author.
 *		Pavel Curtis
 *		Computer Science Dept.
 *		405 Upson Hall
 *		Cornell University
 *		Ithaca, NY 14853
 *
 *		Ph- (607) 256-4934
 *
 *		Pavel.Cornell@Udel-Relay(ARPAnet)
 *		decvax!cornell!pavel		(UUCPnet)
 */


/*
 *	compiler.h - Global variables and structures for the terminfo
 *			compiler.
 *
 *  $Header:   RCS/compiler.v  Revision 2.1  82/10/25  14:46:04  pavel  Exp$
 *
 *  $Log:	RCS/compiler.v $
 * Revision 2.1  82/10/25  14:46:04  pavel
 * Added Copyright Notice
 *
 * Revision 2.0  82/10/24  15:17:20  pavel
 * Beta-one Test Release
 *
 * Revision 1.3  82/08/23  22:30:09  pavel
 * The REAL Alpha-one Release Version
 *
 * Revision 1.2  82/08/19  19:10:10  pavel
 * Alpha Test Release One
 *
 * Revision 1.1  82/08/12  18:38:11  pavel
 * Initial revision
 *
 */

#include <stdio.h>
#include <signal.h>   /* use this file to determine if this is SVR4.0 system */
#include <time.h>

#ifdef	__cplusplus
extern "C" {
#endif

#ifndef TRUE
#define	TRUE	1
#define	FALSE	0
#endif

#ifndef EXTERN				/* for machines w/o multiple externs */
#define	EXTERN extern
#endif /* EXTERN */

#define	SINGLE			/* only one terminal (actually none) */

extern char	*destination;	/* destination directory for object files */

EXTERN long	start_time;	/* time at start of compilation */

EXTERN int	curr_line;	/* current line # in input */
EXTERN long	curr_file_pos;	/* file offset of current line */

EXTERN int	debug_level;	/* level of debugging output */

#define	DEBUG(level, fmt, a1) \
		if (debug_level >= level)\
		    fprintf(stderr, fmt, a1);

	/*
	 *	These are the types of tokens returned by the scanner.
	 *	The first three are also used in the hash table of capability
	 *	names.  The scanner returns one of these values after loading
	 *	the specifics into the global structure curr_token.
	 *
	 */

#define	BOOLEAN 0	/* Boolean capability */
#define	NUMBER 1	/* Numeric capability */
#define	STRING 2	/* String-valued capability */
#define	CANCEL 3	/* Capability to be cancelled in following tc's */
#define	NAMES  4	/* The names for a terminal type */

#define	MAXBOOLS 64	/* Maximum # of boolean caps we can handle */
#define	MAXNUMS	64	/* Maximum # of numeric caps we can handle */
#define	MAXSTRINGS 512	/* Maximum # of string caps we can handle */

	/*
	 *	The global structure in which the specific parts of a
	 *	scanned token are returned.
	 *
	 */

struct token
{
	char	*tk_name;		/* name of capability */
	int	tk_valnumber;	/* value of capability (if a number) */
	char	*tk_valstring;	/* value of capability (if a string) */
};

EXTERN struct token	curr_token;

	/*
	 *	The file comp_captab.c contains an array of these structures,
	 *	one per possible capability.  These are then made into a hash
	 *	table array of the same structures for use by the parser.
	 *
	 */

struct name_table_entry
{
	struct name_table_entry *nte_link;
	char	*nte_name;	/* name to hash on */
	int	nte_type;	/* BOOLEAN, NUMBER or STRING */
	short	nte_index;	/* index of associated variable in its array */
};

extern struct name_table_entry	cap_table[];
extern struct name_table_entry	*cap_hash_table[];

extern int	Captabsize;
extern int	Hashtabsize;
extern int	BoolCount;
extern int	NumCount;
extern int	StrCount;

#define	NOTFOUND	((struct name_table_entry *)0)
	/*
	 *	Function types
	 *
	 */

struct name_table_entry	*find_entry();	/* look up entry in hash table */

int	next_char();
int	trans_string();

#ifdef SIGSTOP	/* SVR4.0 and beyond */
#define	SRCDIR "/usr/share/lib/terminfo"
#else
#define	SRCDIR "/usr/lib/terminfo"
#endif

#ifdef	__cplusplus
}
#endif

#endif	/* _COMPILER_H */