1 /******************************************************************************
2   Copyright (c) 1992, 1995, 1996 Xerox Corporation.  All rights reserved.
3   Portions of this code were written by Stephen White, aka ghond.
4   Use and copying of this software and preparation of derivative works based
5   upon this software are permitted.  Any distribution of this software or
6   derivative works must comply with all applicable United States export
7   control laws.  This software is made available AS IS, and Xerox Corporation
8   makes no warranty about the software, its performance or its conformity to
9   any specification.  Any person obtaining a copy of this software is requested
10   to send their name and post office or electronic mail address to:
11     Pavel Curtis
12     Xerox PARC
13     3333 Coyote Hill Rd.
14     Palo Alto, CA 94304
15     Pavel@Xerox.Com
16  *****************************************************************************/
17 
18 #ifndef Sym_Table_h
19 #define Sym_Table_h 1
20 
21 #include "config.h"
22 #include "version.h"
23 
24 typedef struct {
25     unsigned max_size;
26     unsigned size;
27     const char **names;
28 } Names;
29 
30 extern Names *new_builtin_names(DB_Version);
31 extern int first_user_slot(DB_Version);
32 extern unsigned find_or_add_name(Names **, const char *);
33 extern int find_name(Names *, const char *);
34 extern void free_names(Names *);
35 
36 /* Environment slots for built-in variables */
37 #define SLOT_NUM	0
38 #define SLOT_OBJ	1
39 #define SLOT_STR	2
40 #define SLOT_LIST	3
41 #define SLOT_ERR	4
42 #define SLOT_PLAYER	5
43 #define SLOT_THIS	6
44 #define SLOT_CALLER	7
45 #define SLOT_VERB	8
46 #define SLOT_ARGS	9
47 #define SLOT_ARGSTR	10
48 #define SLOT_DOBJ	11
49 #define SLOT_DOBJSTR	12
50 #define SLOT_PREPSTR	13
51 #define SLOT_IOBJ	14
52 #define SLOT_IOBJSTR	15
53 
54 /* Added in DBV_Float: */
55 #define SLOT_INT	16
56 #define SLOT_FLOAT	17
57 
58 #endif				/* !Sym_Table_h */
59 
60 /*
61  * $Log: sym_table.h,v $
62  * Revision 1.3  1998/12/14 13:19:06  nop
63  * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims
64  *
65  * Revision 1.2  1997/03/03 04:19:30  nop
66  * GNU Indent normalization
67  *
68  * Revision 1.1.1.1  1997/03/03 03:45:04  nop
69  * LambdaMOO 1.8.0p5
70  *
71  * Revision 2.2  1996/03/10  01:15:53  pavel
72  * Removed a number of obsolete declarations.  Release 1.8.0.
73  *
74  * Revision 2.1  1996/02/08  06:11:23  pavel
75  * Made new_builtin_names() and first_user_slot() version-dependent to support
76  * version numbers on suspended-task frames.  Added SLOT_INT and SLOT_FLOAT.
77  * Updated copyright notice for 1996.  Release 1.8.0beta1.
78  *
79  * Revision 2.0  1995/11/30  04:55:57  pavel
80  * New baseline version, corresponding to release 1.8.0alpha1.
81  *
82  * Revision 1.4  1992/10/23  23:03:47  pavel
83  * Added copyright notice.
84  *
85  * Revision 1.3  1992/10/21  03:02:35  pavel
86  * Converted to use new automatic configuration system.
87  *
88  * Revision 1.2  1992/08/31  22:24:26  pjames
89  * Changed some `char *'s to `const char *'
90  *
91  * Revision 1.1  1992/07/20  23:23:12  pavel
92  * Initial RCS-controlled version.
93  */
94