/* * Definition of the value universe and related functions. * * For implementation speed reasons, right now the value universe is represented * by a Symtab. The type slots are SymtabEntrys -- const -- that have a value of a valuestruct. * * Universe functions: * void InitUniverse() * * Universe access functions: * int UniverseGetSize() * ValueList UniverseGetValueList(char *) * ValueStruct UniverseGetValueStructAt(int) * ValueStruct UniverseGetValueStructFromType(char *) * char* UniverseGetSymbolAt(int) * bool UniverseContainsType(char *) * bool UniverseContainsValue(char *, ValueStruct) * * Universe manipulation functions: * ValueList UniverseAddType(char *) * void UniverseAddValue1(char *, ValueStruct) * void UniverseAddValue(ValueStruct) * * ValueList functions: * ValueStruct ValueListGetNth(ValueList, int) * int ValueListLength(ValueList) */ #ifndef universe_h #define universe_h #include #include #include "list.h" #include "sym.h" #include "interp.h" #define UNIVERSE_SIZE 1024 typedef Symtab *Universe; /* universe type */ typedef SymtabEntry *TypeSlot; /* universe contains type slots */ typedef List *ValueList; /* type slots point to value lists */ #ifdef USEWITHCPP extern "C" #endif Universe ValueUniverse; /* The global value universe */ #ifdef USEWITHCPP extern "C" #endif void InitUniverse(); #ifdef USEWITHCPP extern "C" #endif int UniverseGetSize(); #ifdef USEWITHCPP extern "C" #endif ValueList UniverseGetValueList(char *typename); #ifdef USEWITHCPP extern "C" #endif ValueStruct UniverseGetValueStructAt(int n); #ifdef USEWITHCPP extern "C" #endif ValueStruct UniverseGetValueStructFromType(char *typename); #ifdef USEWITHCPP extern "C" #endif char* UniverseGetSymbolAt(int n); #ifdef USEWITHCPP extern "C" #endif bool UniverseContainsType(char *typename); #ifdef USEWITHCPP extern "C" #endif bool UniverseContainsValue(char *typename, ValueStruct value); #ifdef USEWITHCPP extern "C" #endif ValueList UniverseAddType(char *typename); #ifdef USEWITHCPP extern "C" #endif void UniverseAddValue(ValueStruct value); #ifdef USEWITHCPP extern "C" #endif void UniverseAddValue1(char *typename, ValueStruct value); #ifdef USEWITHCPP extern "C" #endif ValueStruct ValueListGetNth(ValueList list, int n); #ifdef USEWITHCPP extern "C" #endif int ValueListLength(ValueList list); #endif