Macros | |
| #define | QFOSTR(q, s) QFO_GETSTR (q, s) |
| #define | QFOTYPE(t) |
| #define | REF(r) (work->spaces[(r)->space].defs + (r)->def) |
| Retreive a def from a defref. More... | |
| #define | WORKSTR(s) QFOSTR (work, s) |
| #define | WORKTYPE(t) |
Typedefs | |
| typedef struct builtin_sym_s | builtin_sym_t |
| typedef struct defref_s | defref_t |
| Safe handling of defs in hash tables and other containers. More... | |
| typedef struct path_s | path_t |
| typedef int(* | space_func )(qfo_t *qfo, qfo_mspace_t *space, int pass) |
Functions | |
| void | linker_add_def (const char *name, type_t *type, unsigned flags, void *val) |
| int | linker_add_lib (const char *libname) |
| int | linker_add_object_file (const char *filename) |
| void | linker_add_path (const char *path) |
| int | linker_add_qfo (qfo_t *qfo) |
| int | linker_add_string (const char *str) |
| Add a string to the working qfo string pool. More... | |
| void | linker_begin (void) |
| Initialize the linker state. More... | |
| qfo_def_t * | linker_find_def (const char *name) |
| qfo_t * | linker_finish (void) |
| #define QFOSTR | ( | q, | |
| s | |||
| ) | QFO_GETSTR (q, s) |
| #define QFOTYPE | ( | t | ) |
Retreive a def from a defref.
| r | The defref pointing to the def (defref_t *). |
| #define WORKSTR | ( | s | ) | QFOSTR (work, s) |
| #define WORKTYPE | ( | t | ) |
| typedef struct builtin_sym_s builtin_sym_t |
| typedef struct defref_s defref_t |
Safe handling of defs in hash tables and other containers.
As defs are stored in dynamic arrays, storing pointers to the defs is a recipe for disaster when using realloc(). By storing the address of the pointer to the array and the index into that that array, realloc is allowed to do its magic.
| typedef struct path_s path_t |
| typedef int(* space_func)(qfo_t *qfo, qfo_mspace_t *space, int pass) |
| void linker_add_path | ( | const char * | path | ) |
Add a string to the working qfo string pool.
If the string is already in the string pool, the already existing string index will be returned instead of adding a second copy of the string.
The strings space in the working qfo is kept up to date.
| str | The string to add. |
| void linker_begin | ( | void | ) |
Initialize the linker state.
| qfo_t* linker_finish | ( | void | ) |