OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
svmdefinitions.cpp
Go to the documentation of this file.
1#include "svmdefinitions.h"
2#include "utils/string_frm.h"
3
4SvmDefinitions::SvmDefinitions(zenkit::DaedalusVm& vm):vm(vm) {
5 }
6
9
10std::string_view SvmDefinitions::find(std::string_view speech, int intId) {
11 if(!speech.empty() && speech[0]=='$' && intId>=0) {
12 const size_t id=size_t(intId);
13
14 string_frm name("SVM_",int(id));
15 if(svm.size()<=id)
16 svm.resize(id+1);
17
18 if(svm[id] == nullptr) {
19 auto* i = vm.find_symbol_by_name(name);
20 if (i == nullptr)
21 return "";
22 svm[id] = vm.init_opaque_instance(i);
23 }
24
25 speech = speech.substr(1);
26 name = string_frm("C_SVM.",speech);
27
28 auto* i = vm.find_symbol_by_name(name);
29 if(i==nullptr)
30 return "";
31 return i->get_string(0,svm[size_t(id)].get());
32 }
33
34 return "";
35 }
SvmDefinitions(zenkit::DaedalusVm &vm)
std::string_view find(std::string_view speech, int id)