#include "string.h" #include #include static std::stack scopes_start; static std::vector strings; static std::vector string_constants; static int num_strings = 0; static int max_strings = 0; void string_scope_start() { scopes_start.push(num_strings); } void string_scope_end() { num_strings = scopes_start.top(); scopes_start.pop(); } const uint32_t string_add_variable() { num_strings++; if (max_strings < num_strings) max_strings = num_strings; return num_strings-1; } void string_init() { for (int i = 0; i < max_strings; i++) strings.push_back(""); } void string_set_variable(const uint32_t id, const std::string str) { strings[id] = str; } const std::string string_get_variable(const uint32_t id) { return strings[id]; } const uint32_t string_get_constant(const std::string str) { for (int i = 0; i < string_constants.size(); i++) { if (string_constants[i] == str) return i; } string_constants.push_back(str); return string_constants.size()-1; }