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