增加INI读写

This commit is contained in:
xx
2024-06-04 17:07:04 +08:00
parent eee37e1329
commit eac18d720d
2 changed files with 132 additions and 0 deletions

102
src/module/ini.cpp Normal file
View File

@@ -0,0 +1,102 @@
#include "ini.h"
module::ini::ini()
{
}
module::ini::~ini()
{
}
bool module::ini::open(const std::string& filepath)
{
return m_ini.open(filepath);
}
void module::ini::close()
{
m_ini.close();
}
std::string module::ini::read(const std::string& node, const std::string& key, const std::string& default_value) const
{
return m_ini.read(node,key,default_value);
}
bool module::ini::write(const std::string& node, const std::string& key, const std::string& value)
{
return m_ini.write(node,key,value);
}
bool module::ini::del(const std::string& node, const std::string& key)
{
return m_ini.del(node, key);
}
sol::table module::ini::nodes(sol::this_state s)
{
sol::state_view lua(s);
sol::table result_table = lua.create_table();
int row_num = 1;
auto names = m_ini.names();
for_iter(iter, names)
result_table[row_num++] = *iter;
return result_table;
}
sol::table module::ini::keys(const std::string& node, sol::this_state s)
{
sol::state_view lua(s);
sol::table result_table = lua.create_table();
int row_num = 1;
auto names = m_ini.keys(node);
for_iter(iter, names)
result_table[row_num++] = *iter;
return result_table;
}
bool module::ini::exist_key(const std::string& node, const std::string& key)
{
return m_ini.exist_key(node, key);
}
bool module::ini::exist_node(const std::string& node)
{
return m_ini.exist_name(node);
}
sol::table module::ini::table(sol::this_state s)
{
sol::state_view lua(s);
sol::table result_table = lua.create_table();
auto nodes = m_ini.names();
for_iter(iter, nodes)
{
sol::table node_table = lua.create_table();
auto keys = m_ini.keys(*iter);
for (size_t i = 0; i < keys.size(); i++)
{
node_table[keys[i]] = m_ini.read(*iter,keys[i]);
}
result_table[*iter] = node_table;
}
return result_table;
}
void module::ini::regist(sol::state* lua)
{
lua->new_usertype<module::ini>("ini",
"new", sol::constructors<module::ini()>(),
"close", &module::ini::close,
"del", &module::ini::del,
"exist_key", &module::ini::exist_key,
"exist_node", &module::ini::exist_node,
"keys", &module::ini::keys,
"nodes", &module::ini::nodes,
"open", &module::ini::open,
"read", &module::ini::read,
"table", &module::ini::table,
"write", &module::ini::write
);
}

30
src/module/ini.h Normal file
View File

@@ -0,0 +1,30 @@
#pragma once
#include "sol/sol.hpp"
#include "util/ini.h"
namespace module
{
/// <summary>
/// INI配置
/// </summary>
class ini {
public:
ini();
~ini();
bool open(const std::string& filepath);
void close();
std::string read(const std::string& node, const std::string& key, const std::string& default_value) const;
bool write(const std::string& node, const std::string& key, const std::string& value);
bool del(const std::string& node, const std::string& key);
sol::table nodes(sol::this_state s);
sol::table keys(const std::string& node, sol::this_state s);
bool exist_key(const std::string& node, const std::string& key);
bool exist_node(const std::string& node);
sol::table table(sol::this_state s);
static void regist(sol::state* lua);
private:
ylib::ini m_ini;
};
}