]> git.mxchange.org Git - flightgear.git/blob - src/FDM/LaRCsim/ls_sym.h
source tree reorganization prior to flightgear 0.7
[flightgear.git] / src / FDM / LaRCsim / ls_sym.h
1 /***************************************************************************
2
3         TITLE:          ls_sym.h
4         
5 ----------------------------------------------------------------------------
6
7         FUNCTION:       Header file for symbol table routines
8
9 ----------------------------------------------------------------------------
10
11         MODULE STATUS:  production
12
13 ----------------------------------------------------------------------------
14
15         GENEALOGY:      Created 930629 by E. B. Jackson
16
17 ----------------------------------------------------------------------------
18
19         DESIGNED BY:    Bruce Jackson
20         
21         CODED BY:       same
22         
23         MAINTAINED BY:  
24
25 ----------------------------------------------------------------------------
26
27         MODIFICATION HISTORY:
28         
29         DATE    PURPOSE                                         BY
30
31         950227  Added header and declarations for ls_print_findsym_error(),
32                 ls_get_double(), and ls_get_double() routines.  EBJ
33
34         950302  Added structure for symbol description.         EBJ
35         
36         950306  Added ls_get_sym_val() and ls_set_sym_val() routines.
37                 This is now the production version.             EBJ
38         
39         CURRENT RCS HEADER:
40
41 $Header$
42 $Log$
43 Revision 1.1  1999/04/05 21:32:45  curt
44 Initial revision
45
46 Revision 1.3  1998/08/06 12:46:40  curt
47 Header change.
48
49 Revision 1.2  1998/01/22 02:59:34  curt
50 Changed #ifdef FILE_H to #ifdef _FILE_H
51
52 Revision 1.1  1997/05/29 00:10:00  curt
53 Initial Flight Gear revision.
54
55  * Revision 1.9  1995/03/07  12:52:33  bjax
56  * This production version now specified ls_get_sym_val() and ls_put_sym_val().
57  *
58  * Revision 1.6.1.2  1995/03/06  18:45:41  bjax
59  * Added def'n of ls_get_sym_val() and ls_set_sym_val(); changed symbol_rec
60  * Addr field from void * to char *.
61  *  EBJ
62  *
63  * Revision 1.6.1.1  1995/03/03  01:17:44  bjax
64  * Experimental version with just ls_get_double and ls_set_double() routines.
65  *
66  * Revision 1.6  1995/02/27  19:50:49  bjax
67  * Added header and declarations for ls_print_findsym_error(),
68  * ls_get_double(), and ls_set_double().  EBJ
69  *
70
71 ----------------------------------------------------------------------------
72
73         REFERENCES:
74
75 ----------------------------------------------------------------------------
76
77         CALLED BY:
78
79 ----------------------------------------------------------------------------
80
81         CALLS TO:
82
83 ----------------------------------------------------------------------------
84
85         INPUTS:
86
87 ----------------------------------------------------------------------------
88
89         OUTPUTS:
90
91 --------------------------------------------------------------------------*/
92
93 #ifndef _LS_SYM_H
94 #define _LS_SYM_H
95
96
97 /* Return codes */
98
99 #define SYM_NOT_LOADED -2
100 #define SYM_UNEXPECTED_ERR -1
101 #define SYM_OK 0
102 #define SYM_OPEN_ERR 1
103 #define SYM_NO_SYMS 2
104 #define SYM_MOD_NOT_FOUND 3
105 #define SYM_VAR_NOT_FOUND 4
106 #define SYM_NOT_SCALAR 5
107 #define SYM_NOT_STATIC 6
108 #define SYM_MEMORY_ERR 7 
109 #define SYM_UNMATCHED_PAREN 8
110 #define SYM_BAD_SYNTAX 9
111 #define SYM_INDEX_BOUNDS_ERR 10
112
113 typedef enum {Unknown, Char, UChar, SHint, USHint, Sint, Uint, Slng, Ulng, flt, dbl} vartype;
114
115 typedef char            SYMBOL_NAME[64];
116 typedef vartype         SYMBOL_TYPE;
117
118
119
120 typedef struct
121 {
122     SYMBOL_NAME Mod_Name;
123     SYMBOL_NAME Par_Name;
124     SYMBOL_TYPE Par_Type;
125     SYMBOL_NAME Alias;
126     char        *Addr;
127 }       symbol_rec;
128
129
130 extern int      ls_findsym( const char *modname, const char *varname, 
131                             char **addr, vartype *vtype );
132   
133 extern void     ls_print_findsym_error(int result, 
134                                        char *mod_name, 
135                                        char *var_name);
136   
137 extern double   ls_get_double(vartype sym_type, void *addr );
138   
139 extern void     ls_set_double(vartype sym_type, void *addr, double value );
140
141 extern double   ls_get_sym_val( symbol_rec *symrec, int *error );
142
143         /* This routine attempts to return the present value of the symbol
144            described in symbol_rec. If Addr is non-zero, the value of that
145            location, interpreted as type double, will be returned. If Addr
146            is zero, and Mod_Name and Par_Name are both not null strings, 
147            the ls_findsym() routine is used to try to obtain the address
148            by looking at debugger symbol tables in the executable image, and
149            the value of the double contained at that address is returned, 
150            and the symbol record is updated to contain the address of that
151            symbol. If an error is discovered, 'error' will be non-zero and
152            and error message is printed on stderr.                      */
153
154 extern void     ls_set_sym_val( symbol_rec *symrec, double value );
155
156         /* This routine sets the value of a double at the location pointed
157            to by the symbol_rec's Addr field, if Addr is non-zero. If Addr
158            is zero, and Mod_Name and Par_Name are both not null strings, 
159            the ls_findsym() routine is used to try to obtain the address
160            by looking at debugger symbol tables in the executable image, and
161            the value of the double contained at that address is returned, 
162            and the symbol record is updated to contain the address of that
163            symbol. If an error is discovered, 'error' will be non-zero and
164            and error message is printed on stderr.                      */
165
166
167 #endif /* _LS_SYM_H */
168
169