started working with the string module
This commit is contained in:
42
string.cpp
Normal file
42
string.cpp
Normal 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
11
string.h
Normal 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);
|
||||||
Reference in New Issue
Block a user