68 lines
2 KiB
C++
68 lines
2 KiB
C++
/* Copyright 2022, Michele Santullo
|
|
* This file is part of duckticker.
|
|
*
|
|
* Wrenpp is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Wrenpp is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with duckticker. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "bitcoinity_ticker_price.hpp"
|
|
#include "configure.hpp"
|
|
#include <wrenpp/vm_fun.hpp>
|
|
#include <wrenpp/def_configuration.hpp>
|
|
#include <fstream>
|
|
|
|
namespace {
|
|
class MyWrenConfiguration : public wren::DefConfiguration {
|
|
public:
|
|
char* load_module_fn(wren::VM* vm, std::string_view module_name) {
|
|
std::string_view wren_code;
|
|
|
|
if (module_name == "bitcoinity")
|
|
wren_code = duck::g_bitcoinity_wren_module;
|
|
else if (module_name == "ticker_price")
|
|
wren_code = duck::g_ticker_price_wren_module;
|
|
else
|
|
return nullptr;
|
|
|
|
const std::size_t buff_sz = wren_code.size();
|
|
char* const buff = static_cast<char*>(MyWrenConfiguration::reallocate_fn(nullptr, buff_sz));
|
|
std::copy(wren_code.cbegin(), wren_code.cend(), buff);
|
|
return buff;
|
|
}
|
|
};
|
|
|
|
std::string load_string_from_file (const std::string& path) {
|
|
std::ifstream ifs(path);
|
|
ifs >> std::noskipws;
|
|
|
|
return std::string(
|
|
std::istreambuf_iterator<char>(ifs),
|
|
std::istreambuf_iterator<char>()
|
|
);
|
|
}
|
|
} //unnamed namespace
|
|
|
|
int main() {
|
|
using duck::TickerPrice;
|
|
|
|
MyWrenConfiguration config;
|
|
wren::VM vm(&config, nullptr);
|
|
|
|
duck::register_bitcoinity_to_wren(vm);
|
|
|
|
std::string main_script = load_string_from_file(std::string{duck::g_script_path} + "main.wren");
|
|
vm.interpret("main", main_script.c_str());
|
|
wren::call<void>(vm, {"main", "the_app"}, "start");
|
|
|
|
return 0;
|
|
}
|