1 /***************************************************************************
5 ----------------------------------------------------------------------------
7 FUNCTION: Header file for symbol table routines
9 ----------------------------------------------------------------------------
11 MODULE STATUS: production
13 ----------------------------------------------------------------------------
15 GENEALOGY: Created 930629 by E. B. Jackson
17 ----------------------------------------------------------------------------
19 DESIGNED BY: Bruce Jackson
25 ----------------------------------------------------------------------------
31 950227 Added header and declarations for ls_print_findsym_error(),
32 ls_get_double(), and ls_get_double() routines. EBJ
34 950302 Added structure for symbol description. EBJ
36 950306 Added ls_get_sym_val() and ls_set_sym_val() routines.
37 This is now the production version. EBJ
43 Revision 1.1 2002/09/10 01:14:02 curt
46 Revision 1.1.1.1 1999/06/17 18:07:33 curt
49 Revision 1.1.1.1 1999/04/05 21:32:45 curt
50 Start of 0.6.x branch.
52 Revision 1.3 1998/08/06 12:46:40 curt
55 Revision 1.2 1998/01/22 02:59:34 curt
56 Changed #ifdef FILE_H to #ifdef _FILE_H
58 Revision 1.1 1997/05/29 00:10:00 curt
59 Initial Flight Gear revision.
61 * Revision 1.9 1995/03/07 12:52:33 bjax
62 * This production version now specified ls_get_sym_val() and ls_put_sym_val().
64 * Revision 1.6.1.2 1995/03/06 18:45:41 bjax
65 * Added def'n of ls_get_sym_val() and ls_set_sym_val(); changed symbol_rec
66 * Addr field from void * to char *.
69 * Revision 1.6.1.1 1995/03/03 01:17:44 bjax
70 * Experimental version with just ls_get_double and ls_set_double() routines.
72 * Revision 1.6 1995/02/27 19:50:49 bjax
73 * Added header and declarations for ls_print_findsym_error(),
74 * ls_get_double(), and ls_set_double(). EBJ
77 ----------------------------------------------------------------------------
81 ----------------------------------------------------------------------------
85 ----------------------------------------------------------------------------
89 ----------------------------------------------------------------------------
93 ----------------------------------------------------------------------------
97 --------------------------------------------------------------------------*/
105 #define SYM_NOT_LOADED -2
106 #define SYM_UNEXPECTED_ERR -1
108 #define SYM_OPEN_ERR 1
109 #define SYM_NO_SYMS 2
110 #define SYM_MOD_NOT_FOUND 3
111 #define SYM_VAR_NOT_FOUND 4
112 #define SYM_NOT_SCALAR 5
113 #define SYM_NOT_STATIC 6
114 #define SYM_MEMORY_ERR 7
115 #define SYM_UNMATCHED_PAREN 8
116 #define SYM_BAD_SYNTAX 9
117 #define SYM_INDEX_BOUNDS_ERR 10
119 typedef enum {Unknown, Char, UChar, SHint, USHint, Sint, Uint, Slng, Ulng, flt, dbl} vartype;
121 typedef char SYMBOL_NAME[64];
122 typedef vartype SYMBOL_TYPE;
128 SYMBOL_NAME Mod_Name;
129 SYMBOL_NAME Par_Name;
130 SYMBOL_TYPE Par_Type;
136 extern int ls_findsym( const char *modname, const char *varname,
137 char **addr, vartype *vtype );
139 extern void ls_print_findsym_error(int result,
143 extern double ls_get_double(vartype sym_type, void *addr );
145 extern void ls_set_double(vartype sym_type, void *addr, double value );
147 extern double ls_get_sym_val( symbol_rec *symrec, int *error );
149 /* This routine attempts to return the present value of the symbol
150 described in symbol_rec. If Addr is non-zero, the value of that
151 location, interpreted as type double, will be returned. If Addr
152 is zero, and Mod_Name and Par_Name are both not null strings,
153 the ls_findsym() routine is used to try to obtain the address
154 by looking at debugger symbol tables in the executable image, and
155 the value of the double contained at that address is returned,
156 and the symbol record is updated to contain the address of that
157 symbol. If an error is discovered, 'error' will be non-zero and
158 and error message is printed on stderr. */
160 extern void ls_set_sym_val( symbol_rec *symrec, double value );
162 /* This routine sets the value of a double at the location pointed
163 to by the symbol_rec's Addr field, if Addr is non-zero. If Addr
164 is zero, and Mod_Name and Par_Name are both not null strings,
165 the ls_findsym() routine is used to try to obtain the address
166 by looking at debugger symbol tables in the executable image, and
167 the value of the double contained at that address is returned,
168 and the symbol record is updated to contain the address of that
169 symbol. If an error is discovered, 'error' will be non-zero and
170 and error message is printed on stderr. */
173 #endif /* _LS_SYM_H */