A map of unique ids to symbol tables which can be used to represent local variables within a program. New scopes can be added and erased where necessary and iterated through using find(). Find assumes that tables are added through parented ascending ids.
More...
#include <openvdb_ax/codegen/SymbolTable.h>
|
| SymbolTableBlocks () |
|
| ~SymbolTableBlocks ()=default |
|
SymbolTable & | globals () |
| Access to the list of global variables which are always accessible. More...
|
|
const SymbolTable & | globals () const |
|
bool | erase (const size_t index) |
| Erase a given scoped indexed SymbolTable from the list of held SymbolTables. Returns true if the table previously existed. More...
|
|
SymbolTable * | getOrInsert (const size_t index) |
| Get or insert and get a SymbolTable with a unique index. More...
|
|
SymbolTable * | get (const size_t index) |
| Get a SymbolTable with a unique index. If it doesn't exist, nullptr is returned. More...
|
|
llvm::Value * | find (const std::string &name, const size_t startIndex) const |
| Find a variable within the program starting at a given table index. If the given index does not exist, the next descending index is used. More...
|
|
llvm::Value * | find (const std::string &name) const |
| Find a variable within the program starting at the lowest level SymbolTable. More...
|
|
bool | replace (const std::string &name, llvm::Value *value) |
| Replace the first occurrance of a variable with a given name with a replacement value. Returns true if a replacement occurred. More...
|
|
A map of unique ids to symbol tables which can be used to represent local variables within a program. New scopes can be added and erased where necessary and iterated through using find(). Find assumes that tables are added through parented ascending ids.
- Note
- The zero id is used to represent global variables
-
The block symbol table is fairly simple and currently only supports insertion by integer ids. Scopes that exist at the same level are expected to be built in isolation and erase and re-create the desired ids where necessary.
bool erase |
( |
const size_t |
index | ) |
|
|
inline |
Erase a given scoped indexed SymbolTable from the list of held SymbolTables. Returns true if the table previously existed.
- Note
- If the zero index is supplied, this function throws a runtime error
- Parameters
-
llvm::Value* find |
( |
const std::string & |
name, |
|
|
const size_t |
startIndex |
|
) |
| const |
|
inline |
Find a variable within the program starting at a given table index. If the given index does not exist, the next descending index is used.
- Note
- This function assumes that tables have been added in ascending order dictating their nested structure.
- Parameters
-
name | The variable name to find |
startIndex | The start SymbolTable index |
llvm::Value* find |
( |
const std::string & |
name | ) |
const |
|
inline |
Find a variable within the program starting at the lowest level SymbolTable.
- Parameters
-
name | The variable name to find |
Get a SymbolTable with a unique index. If it doesn't exist, nullptr is returned.
- Parameters
-
Get or insert and get a SymbolTable with a unique index.
- Parameters
-
Access to the list of global variables which are always accessible.
bool replace |
( |
const std::string & |
name, |
|
|
llvm::Value * |
value |
|
) |
| |
|
inline |
Replace the first occurrance of a variable with a given name with a replacement value. Returns true if a replacement occurred.
- Parameters
-
name | The variable name to find and replace |
value | The llvm::Value to replace |