Alien-TinyCCx
view release on metacpan or search on metacpan
src/tccexsymtab.h view on Meta::CPAN
/* ram hash */
/****************************************************************************/
struct ram_hash_linked_list {
struct ram_hash_linked_list * next;
void * key;
void * value;
};
typedef struct ram_hash_linked_list ram_hash_linked_list;
typedef struct {
unsigned int N;
unsigned int N_buckets;
ram_hash_linked_list * buckets;
} ram_hash;
ram_hash * ram_hash_new();
void ** ram_hash_get_ref(ram_hash * rh, void * old);
void ** ram_hash_iterate(ram_hash * rh, void ** p_next_data);
void ram_hash_free(ram_hash * rh);
/******************************************************************************/
/* extended symtab struct */
/******************************************************************************/
typedef struct extended_symtab {
union {
ram_hash * sym_rh;
Sym * sym_list;
};
union {
ram_hash * def_rh;
Sym * def_list;
};
token_string_hash * tsh;
int N_syms; /* zero for Sym collections stored in ram_hash */
int N_defs; /* zero for Sym collections stored in ram_hash */
int tok_start;
int tok_start_offset;
int N_inline_funcs;
InlineFunc ** inline_funcs;
TokenSym ** tokenSym_last;
TokenSym * tokenSym_list [1];
} extended_symtab;
/******************************************************************************/
/* compiled symbol lookup */
/******************************************************************************/
void dump_sym_names(TCCState *state);
void copy_extended_symbols_to_exsymtab(TCCState *state);
/* tcc_get_extended_symbol_table in libtcc.h */
/* tcc_get_extended_tokensym in libtcc.h */
/* tcc_get_extended_symbol in libtcc.h */
/* tcc_get_next_extended_symbol_name in libtcc.h */
/******************************************************************************/
/* extended symtab copy */
/******************************************************************************/
/* tcc_set_extended_symtab_callbacks is in libtcc.h */
/* tcc_save_extended_symtab is in libtcc.h */
Sym * get_new_symtab_pointer (Sym * old, ram_hash * rh);
Sym * get_new_deftab_pointer (Sym * old, ram_hash * rh);
int tokenstream_copy (int * stream, int * to_stream, extended_symtab * symtab);
#define tokenstream_len(stream) tokenstream_copy(stream, 0, 0)
void copy_extended_symtab (TCCState * s, Sym * define_start, int tok_start);
LIBTCCAPI void tcc_delete_extended_symbol_table (extended_symtab * symtab);
LIBTCCAPI int tcc_extended_symtab_test(extended_symtab * symtab, int to_test, const char * name);
/* tcc_get_extended_tokensym declared in libtcc.h */
/* tcc_get_extended_symbol declared in libtcc.h */
/*****************************************************************************/
/* Pre-compilation TokenSym Prep */
/*****************************************************************************/
LIBTCCAPI void tcc_prep_tokensym_list(extended_symtab * symtab);
/*****************************************************************************/
/* copy extended symbol into local */
/*****************************************************************************/
void local_stack_off();
void local_stack_on();
ST_FUNC TokenSym** symtab_tok_find(const char *str, int len); /* in tccpp.c */
TokenSym * get_local_ts_for_extended_ts(TokenSym* orig_symtab_ts, extended_symtab* orig_symtab);
Sym * copy_extended_sym (extended_symtab* symtab, Sym * from, int to_tok);
void copy_extended_tokensym (extended_symtab* symtab, TokenSym * from, TokenSym * to);
void copy_ctype(CType * to_type, Sym * from, extended_symtab*symtab);
int get_local_tok_for_extended_tok(int orig_tok, extended_symtab* symtab);
/*****************************************************************************/
/* Extended Symbol Table Caching */
/*****************************************************************************/
/* tcc_set_extended_symbol is in libtcc.h; this assumes that the token exists in the tsh */
/* tcc_deserialize_extended_symtab declared in libtcc.h */
/* tcc_serialize_extended_symtab declared in libtcc.h */
( run in 0.540 second using v1.01-cache-2.11-cpan-d7f47b0818f )