44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
/**
|
|
* @file Config.h
|
|
* @author apio (cloudapio.eu)
|
|
* @brief Configuration file parsing.
|
|
*
|
|
* @copyright Copyright (c) 2024, the Luna authors.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include <luna/HashMap.h>
|
|
#include <luna/RefString.h>
|
|
#include <os/File.h>
|
|
#include <os/Path.h>
|
|
|
|
namespace os
|
|
{
|
|
class ConfigFile
|
|
{
|
|
public:
|
|
static Result<OwnedPtr<ConfigFile>> open(os::Path path);
|
|
|
|
Option<StringView> read_string(StringView key);
|
|
StringView read_string_or(StringView key, StringView default_value);
|
|
|
|
Option<i64> read_number(StringView key);
|
|
i64 read_number_or(StringView key, i64 default_value);
|
|
|
|
Option<bool> read_boolean(StringView key);
|
|
bool read_boolean_or(StringView key, bool default_value);
|
|
|
|
Result<void> write_string(StringView key, StringView value);
|
|
Result<void> write_number(StringView key, int value);
|
|
Result<void> write_boolean(StringView key, bool value);
|
|
|
|
Result<void> sync();
|
|
|
|
private:
|
|
os::Path m_path { "" };
|
|
|
|
HashMap<RefString, RefString> m_data;
|
|
};
|
|
}
|