libyasm
symrec.h
Go to the documentation of this file.
1 
30 #ifndef YASM_SYMREC_H
31 #define YASM_SYMREC_H
32 
33 #ifndef YASM_LIB_DECL
34 #define YASM_LIB_DECL
35 #endif
36 
41 typedef enum yasm_sym_status {
43  YASM_SYM_USED = 1 << 0,
44  YASM_SYM_DEFINED = 1 << 1,
45  YASM_SYM_VALUED = 1 << 2,
48 
52 typedef enum yasm_sym_vis {
54  YASM_SYM_GLOBAL = 1 << 0,
55  YASM_SYM_COMMON = 1 << 1,
56  YASM_SYM_EXTERN = 1 << 2,
57  YASM_SYM_DLOCAL = 1 << 3
58 } yasm_sym_vis;
59 
61 YASM_LIB_DECL
63 
69 YASM_LIB_DECL
70 void yasm_symtab_destroy(/*@only@*/ yasm_symtab *symtab);
71 
77 YASM_LIB_DECL
78 void yasm_symtab_set_case_sensitive(yasm_symtab *symtab, int sensitive);
79 
87 YASM_LIB_DECL
88 /*@dependent@*/ yasm_symrec *yasm_symtab_abs_sym(yasm_symtab *symtab);
89 
97 YASM_LIB_DECL
98 /*@dependent@*/ yasm_symrec *yasm_symtab_use
99  (yasm_symtab *symtab, const char *name, unsigned long line);
100 
109 YASM_LIB_DECL
110 /*@null@*/ /*@dependent@*/ yasm_symrec *yasm_symtab_get
111  (yasm_symtab *symtab, const char *name);
112 
120 YASM_LIB_DECL
121 /*@dependent@*/ yasm_symrec *yasm_symtab_define_equ
122  (yasm_symtab *symtab, const char *name, /*@keep@*/ yasm_expr *e,
123  unsigned long line);
124 
134 YASM_LIB_DECL
135 /*@dependent@*/ yasm_symrec *yasm_symtab_define_label
136  (yasm_symtab *symtab, const char *name,
137  /*@dependent@*/ yasm_bytecode *precbc, int in_table, unsigned long line);
138 
149 YASM_LIB_DECL
150 /*@dependent@*/ yasm_symrec *yasm_symtab_define_curpos
151  (yasm_symtab *symtab, const char *name,
152  /*@dependent@*/ yasm_bytecode *precbc, unsigned long line);
153 
162 YASM_LIB_DECL
164  (yasm_symtab *symtab, const char *name, yasm_sym_vis vis);
165 
174 YASM_LIB_DECL
175 /*@dependent@*/ yasm_symrec *yasm_symtab_declare
176  (yasm_symtab *symtab, const char *name, yasm_sym_vis vis,
177  unsigned long line);
178 
185 YASM_LIB_DECL
187  unsigned long line);
188 
194 typedef int (*yasm_symtab_traverse_callback)
195  (yasm_symrec *sym, /*@null@*/ void *d);
196 
204 YASM_LIB_DECL
205 int /*@alt void@*/ yasm_symtab_traverse
206  (yasm_symtab *symtab, /*@null@*/ void *d,
208 
211 
216 YASM_LIB_DECL
217 const yasm_symtab_iter *yasm_symtab_first(const yasm_symtab *symtab);
218 
223 YASM_LIB_DECL
224 /*@null@*/ const yasm_symtab_iter *yasm_symtab_next
225  (const yasm_symtab_iter *prev);
226 
231 YASM_LIB_DECL
233 
241 YASM_LIB_DECL
242 void yasm_symtab_parser_finalize(yasm_symtab *symtab, int undef_extern,
243  yasm_errwarns *errwarns);
244 
250 YASM_LIB_DECL
251 void yasm_symtab_print(yasm_symtab *symtab, FILE *f, int indent_level);
252 
257 YASM_LIB_DECL
258 /*@observer@*/ const char *yasm_symrec_get_name(const yasm_symrec *sym);
259 
265 YASM_LIB_DECL
266 /*@only@*/ char *yasm_symrec_get_global_name(const yasm_symrec *sym,
267  const yasm_object *object);
268 
273 YASM_LIB_DECL
275 
280 YASM_LIB_DECL
282 
287 YASM_LIB_DECL
288 unsigned long yasm_symrec_get_def_line(const yasm_symrec *sym);
289 
294 YASM_LIB_DECL
295 unsigned long yasm_symrec_get_decl_line(const yasm_symrec *sym);
296 
301 YASM_LIB_DECL
302 unsigned long yasm_symrec_get_use_line(const yasm_symrec *sym);
303 
308 YASM_LIB_DECL
309 /*@observer@*/ /*@null@*/ const yasm_expr *yasm_symrec_get_equ
310  (const yasm_symrec *sym);
311 
314 
321 YASM_LIB_DECL
322 int yasm_symrec_get_label(const yasm_symrec *sym,
323  /*@out@*/ yasm_symrec_get_label_bytecodep *precbc);
324 
329 YASM_LIB_DECL
330 void yasm_symrec_set_size(yasm_symrec *sym, int size);
331 
336 YASM_LIB_DECL
337 int yasm_symrec_get_size(const yasm_symrec *sym);
338 
343 YASM_LIB_DECL
344 void yasm_symrec_set_segment(yasm_symrec *sym, const char *segment);
345 
350 YASM_LIB_DECL
351 const char *yasm_symrec_get_segment(const yasm_symrec *sym);
352 
358 YASM_LIB_DECL
359 int yasm_symrec_is_abs(const yasm_symrec *sym);
360 
365 YASM_LIB_DECL
366 int yasm_symrec_is_special(const yasm_symrec *sym);
367 
372 YASM_LIB_DECL
373 int yasm_symrec_is_curpos(const yasm_symrec *sym);
374 
379 YASM_LIB_DECL
381  (yasm_symrec *sym, /*@only@*/ yasm_valparamhead *objext_valparams);
382 
388 YASM_LIB_DECL
389 /*@null@*/ /*@dependent@*/ yasm_valparamhead *yasm_symrec_get_objext_valparams
390  (yasm_symrec *sym);
391 
396 YASM_LIB_DECL
398  (yasm_symrec *sym, /*@only@*/ yasm_expr *common_size);
399 
405 YASM_LIB_DECL
406 /*@dependent@*/ /*@null@*/ yasm_expr **yasm_symrec_get_common_size
407  (yasm_symrec *sym);
408 
414 YASM_LIB_DECL
415 /*@dependent@*/ /*@null@*/ void *yasm_symrec_get_data
416  (yasm_symrec *sym, const yasm_assoc_data_callback *callback);
417 
424 YASM_LIB_DECL
426  const yasm_assoc_data_callback *callback,
427  /*@only@*/ /*@null@*/ void *data);
428 
434 YASM_LIB_DECL
435 void yasm_symrec_print(const yasm_symrec *sym, FILE *f, int indent_level);
436 
437 #endif