/* * Context.cpp * * Created on: Dec 30, 2012 * Author: att */ #include "Context.h" Context::Context(std::string name) { // TODO Auto-generated constructor stub this->index = 0; this->name = name; } Context::~Context() { // TODO Auto-generated destructor stub } void Context::register_function(std::string name, PointerToNativeFunction f) { registered_functions[name] = f; } SenchaObject Context::execute_native_function(std::string name, std::vector arguments) { SenchaObject result; if(registered_functions.count(name) == 1) result = registered_functions[name](arguments); return result; } ObjectIndex Context::add_to_store(SenchaObject & object) { index++; object_store[index] = object; return index; } SenchaObject Context::get_from_store(ObjectIndex index) { return object_store[index]; } void Context::add(std::string name, SenchaObject object) { interpreter_context[name] = add_to_store(object); } void Context::set(std::string name, SenchaObject object) { if(interpreter_context[name] != 0) { object_store[interpreter_context[name]] = object; } else { add(name, object); } } SenchaObject Context::get(std::string name) { return get_from_store(interpreter_context[name]); } std::string Context::debug() { std::string debug_note = ""; for( auto iter = this->interpreter_context.begin(); iter != this->interpreter_context.end(); iter++) { debug_note += "Context: " + to_string((*iter).second) + ": " + (*iter).first + " " + object_store[(*iter).second].repr() + "\n"; } return debug_note; }