LispBM
Typedefs | Functions | Variables
symrepr.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include "lbm_types.h"
#include "lbm_defines.h"
Include dependency graph for symrepr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef void(* symrepr_name_iterator_fun) (const char *)
 

Functions

int lbm_symrepr_init (void)
 
void lbm_symrepr_name_iterator (symrepr_name_iterator_fun f)
 
int lbm_add_symbol (char *name, lbm_uint *id)
 
int lbm_add_symbol_flash (char *name, lbm_uint *id)
 
int lbm_str_to_symbol (char *name, lbm_uint *sym_id)
 
int lbm_add_variable_symbol (char *name, lbm_uint *id)
 
int lbm_add_variable_symbol_const (char *name, lbm_uint *id)
 
int lbm_add_symbol_const (char *name, lbm_uint *id)
 
int lbm_add_extension_symbol (char *name, lbm_uint *id)
 
int lbm_add_extension_symbol_const (char *name, lbm_uint *id)
 
int lbm_get_symbol_by_name (char *name, lbm_uint *id)
 
const char * lbm_get_name_by_symbol (lbm_uint id)
 
int lbm_get_num_variables (void)
 
lbm_uint lbm_get_symbol_table_size (void)
 
lbm_uint lbm_get_symbol_table_size_flash (void)
 
lbm_uint lbm_get_symbol_table_size_names (void)
 
lbm_uint lbm_get_symbol_table_size_names_flash (void)
 

Variables

lbm_value symbol_x
 
lbm_value symbol_y
 

Detailed Description

symrepr.h implements the symbol table and symbol creation and lookup functions.

The symbol table is implemented as a linked list in the arrays and symbols memory defined in lispbm_memory.h. So lbm_memory_init must be run before the symbol table is initialized and used.

Function Documentation

◆ lbm_add_extension_symbol()

int lbm_add_extension_symbol ( char *  name,
lbm_uint *  id 
)

Add an extension symbol to the symbol table. The name is assumed to be a statically allocated constant.

Parameters
nameName of the symbol.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_extension_symbol_const()

int lbm_add_extension_symbol_const ( char *  name,
lbm_uint *  id 
)

Add an extension symbol to the symbol table. The name is assumed to be statically allocated.

Parameters
nameStatically allocated name string.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_symbol()

int lbm_add_symbol ( char *  name,
lbm_uint *  id 
)

Add a symbol to the symbol table. The symbol name string is copied to arrays and symbols memory.

Parameters
nameString representation of the symbol.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_symbol_const()

int lbm_add_symbol_const ( char *  name,
lbm_uint *  id 
)

Add a symbol to the symbol table. The name is assumed to be a statically allocated string.

Parameters
nameStatically allocated name string.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_symbol_flash()

int lbm_add_symbol_flash ( char *  name,
lbm_uint *  id 
)

Add a symbol to the symbol table. The symbol name string is copied to flash.

Parameters
nameString representation of the symbol.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_variable_symbol()

int lbm_add_variable_symbol ( char *  name,
lbm_uint *  id 
)

Add a variable-symbol to the symbol table. The symbol name string is copied to arrays and symbols memory.

Parameters
nameString representation of the symbol.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_add_variable_symbol_const()

int lbm_add_variable_symbol_const ( char *  name,
lbm_uint *  id 
)

Add a variable-symbol to the symbol table. The symbol name is considered to be a statically allocated constant.

Parameters
nameString representation of the symbol.
idResulting id is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_get_name_by_symbol()

const char* lbm_get_name_by_symbol ( lbm_uint  id)

Look up a symbol name from the symbol table given an id.

Parameters
idThe id to look up in the symbol table.
Returns
pointer to the name string if success otherwise NULL.

◆ lbm_get_symbol_by_name()

int lbm_get_symbol_by_name ( char *  name,
lbm_uint *  id 
)

Look up an id from the symbol table given a name.

Parameters
nameName string to look up.
idResulting id is returned through this argument.
Returns
1 on success (name was found) and 0 for failure.

◆ lbm_get_symbol_table_size()

lbm_uint lbm_get_symbol_table_size ( void  )
Returns
The total amount of lbm_memory space occupied by the symbol table in bytes.

◆ lbm_get_symbol_table_size_flash()

lbm_uint lbm_get_symbol_table_size_flash ( void  )
Returns
The total amount of flash space occupied by the symbol table in bytes.

◆ lbm_get_symbol_table_size_names()

lbm_uint lbm_get_symbol_table_size_names ( void  )
Returns
The size in bytes of all symbol strings stored in the symbol table.

◆ lbm_get_symbol_table_size_names_flash()

lbm_uint lbm_get_symbol_table_size_names_flash ( void  )
Returns
The size in bytes of all symbol strings stored in flash from the symbol table.

◆ lbm_str_to_symbol()

int lbm_str_to_symbol ( char *  name,
lbm_uint *  sym_id 
)

Name of symbol to symbol. If the symbol exists the ID of the symbol is returned. If the name does not match any existing symbol, one is created and that ID is returned.

Parameters
nameString name of symbol.
idResulting ID is returned through this argument.
Returns
1 for success and 0 for failure.

◆ lbm_symrepr_init()

int lbm_symrepr_init ( void  )

Initialize the symbol table.

Returns
1

◆ lbm_symrepr_name_iterator()

void lbm_symrepr_name_iterator ( symrepr_name_iterator_fun  f)

Iterate over all symbol names as strings

Parameters
symrepr_name_iterator_funfunction taking a string