My Project
symbol.h
Go to the documentation of this file.
1 #ifndef __SYMBOL_H__
2 #define __SYMBOL_H__
3 
4 /*
5  * "Copyright (c) 2014 by Fritz Sieker."
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation for any purpose, without fee, and without written
9  * agreement is hereby granted, provided that the above copyright notice
10  * and the following two paragraphs appear in all copies of this software.
11  *
12  * IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT,
13  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
14  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR
15  * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16  *
17  * THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
20  * BASIS, AND THE AUTHOR NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
21  * UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
22  */
23 
35 #define SYMBOL_SIZE 997
43 typedef struct sym_table sym_table_t;
44 
49 typedef struct symbol {
50  char* name;
51  int addr;
52 } symbol_t;
53 
60 sym_table_t* symbol_init (int lookup_by_addr);
61 
66 void symbol_term(sym_table_t* symTab);
67 
73 void symbol_reset (sym_table_t* symTab);
74 
85 int symbol_add (sym_table_t* symTab, const char* name, int addr);
86 
97 struct node* symbol_search (sym_table_t* symTab, const char* name, int* hash, int* index);
98 
105 symbol_t* symbol_find_by_name (sym_table_t* symTab, const char* name);
106 
113 char* symbol_find_by_addr (sym_table_t* symTab, int addr);
114 
133 typedef void (*iterate_fnc_t)(symbol_t* sym, void* data);
134 
143 void symbol_iterate (sym_table_t* symTab, iterate_fnc_t fnc, void* data);
144 
145 #endif /* __SYMBOL_H__ */
146 
Definition: symbol.c:28
int addr
Definition: symbol.h:51
struct node * symbol_search(sym_table_t *symTab, const char *name, int *hash, int *index)
Definition: symbol.c:76
void symbol_iterate(sym_table_t *symTab, iterate_fnc_t fnc, void *data)
Definition: symbol.c:92
sym_table_t * symbol_init(int lookup_by_addr)
Definition: symbol.c:58
void(* iterate_fnc_t)(symbol_t *sym, void *data)
Definition: symbol.h:133
char * name
Definition: symbol.h:50
struct symbol symbol_t
int hash
Definition: symbol.c:30
char * symbol_find_by_addr(sym_table_t *symTab, int addr)
Definition: symbol.c:87
symbol_t * symbol_find_by_name(sym_table_t *symTab, const char *name)
Definition: symbol.c:82
Definition: symbol.c:35
Definition: symbol.h:49
void symbol_reset(sym_table_t *symTab)
Definition: symbol.c:67
int symbol_add(sym_table_t *symTab, const char *name, int addr)
Definition: symbol.c:71
void symbol_term(sym_table_t *symTab)
Definition: symbol.c:63