1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-01 03:21:41 +00:00
OpenMW/components/lua/yamlloader.hpp
2024-03-16 16:26:26 +04:00

51 lines
1.3 KiB
C++

#ifndef COMPONENTS_LUA_YAMLLOADER_H
#define COMPONENTS_LUA_YAMLLOADER_H
#include <map>
#include <sol/sol.hpp>
#include <stdexcept>
#include <yaml-cpp/yaml.h>
namespace LuaUtil
{
class YamlLoader
{
public:
static sol::object load(const std::string& input, const sol::state_view& lua);
static sol::object load(std::istream& input, const sol::state_view& lua);
private:
enum class ScalarType
{
Boolean,
Decimal,
Float,
Hexadecimal,
Infinity,
NotNumber,
Null,
Octal,
String
};
static sol::object load(const std::vector<YAML::Node>& rootNodes, const sol::state_view& lua);
static sol::object getNode(const YAML::Node& node, const sol::state_view& lua, uint64_t depth);
static sol::table getMap(const YAML::Node& node, const sol::state_view& lua, uint64_t depth);
static sol::table getArray(const YAML::Node& node, const sol::state_view& lua, uint64_t depth);
static ScalarType getScalarType(const YAML::Node& node);
static sol::object getScalar(const YAML::Node& node, const sol::state_view& lua);
[[noreturn]] static void nodeError(const YAML::Node& node, const std::string& message);
};
}
#endif // COMPONENTS_LUA_YAMLLOADER_H