Files
jailbasic/string.cpp

43 lines
1.0 KiB
C++

#include "string.h"
#include <stack>
#include <vector>
static std::stack<int> scopes_start;
static std::vector<std::string> strings;
static std::vector<std::string> 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;
}