grino/lib/core.cpp

39 lines
847 B
C++
Raw Normal View History

2023-09-11 10:14:01 +00:00
#include "../src/Loader.hpp"
2023-09-11 11:46:41 +00:00
#include "src/Logger.hpp"
GRINO_ERROR(assertion_error);
2023-09-11 10:14:01 +00:00
extern "C" void lib(grino::Loader& loader)
{
loader.add_native("dump", [](auto args){
std::string sep;
std::stringstream ss;
for (auto arg: args)
{
ss << sep << arg->string();
sep = " ";
}
std::cout << ss.str() << std::endl;
2023-09-11 11:46:41 +00:00
return grino::Value::make_nil(args.back()->loc());
});
loader.add_native("assert", [](auto args){
for (auto value: args)
{
if (!value->as_bool())
{
grino::Logger logger;
logger.log<assertion_error>(grino::LOG_ASSERT,
value->loc(),
"assertion failed");
}
}
return grino::Value::make_bool(args.front()->loc(), true);
2023-09-11 10:14:01 +00:00
});
}