diff --git a/vm/symboltable.cpp b/vm/symboltable.cpp new file mode 100644 index 0000000..b3586da --- /dev/null +++ b/vm/symboltable.cpp @@ -0,0 +1,39 @@ +#include "symboltable.hpp" + +namespace rubinius { + SymbolPair::SymbolPair(long sym, char* str, SymbolPair* next) { + + } + + SymbolPair::~SymbolPair() { + + } + + + SymbolTable::SymbolTable(long first_symbol) { + base = first_symbol; + } + + SymbolTable::~SymbolTable() { + + } + + long SymbolTable::allocate_symbol() { + return ++base; + } + + SYMBOL SymbolTable::lookup(STATE, const char* str, size_t size) { + SYMBOL sym; + return sym; + } + + SYMBOL SymbolTable::lookup(STATE, String* str) { + SYMBOL sym; + return sym; + } + + String* SymbolTable::symbol_to_string(STATE, Symbol* sym) { + String* str; + return str; + } +} diff --git a/vm/symboltable.hpp b/vm/symboltable.hpp new file mode 100644 index 0000000..449353f --- /dev/null +++ b/vm/symboltable.hpp @@ -0,0 +1,35 @@ +#include "oop.hpp" +#include "prelude.hpp" + +#include +#include + +namespace rubinius { + class SymbolPair { + public: + long symbol; + std::string str; + SymbolPair* next; + + SymbolPair(long sym, char* str, SymbolPair* next); + ~SymbolPair(); + }; + + typedef std::map symbol_map; + + class String; + + class SymbolTable { + public: + SymbolTable(long first_symbol = 0); + ~SymbolTable(); + + SYMBOL lookup(STATE, const char* str, size_t size = 0); + SYMBOL lookup(STATE, String* str); + String* symbol_to_string(STATE, Symbol* sym); + + private: + symbol_map symbols; + long base; + }; +};