started working with the string module

This commit is contained in:
2021-04-28 22:25:57 +02:00
parent f1f590735b
commit fd53606ffc
2 changed files with 53 additions and 0 deletions

42
string.cpp Normal file
View File

@@ -0,0 +1,42 @@
#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;
}

11
string.h Normal file
View File

@@ -0,0 +1,11 @@
#pragma once
#include <stdint.h>
#include <string>
void string_init();
void string_scope_start();
void string_scope_end();
const uint32_t string_get_constant(const std::string str);
const uint32_t string_add_variable();
void string_set_variable(const uint32_t id, const std::string str);
const std::string string_get_variable(const uint32_t id);