Files
FEX-Emu--FEX/Source/Common/Config.h
T
Lioncash 525d50f07e config: Pass strings by const reference where applicable
In a few cases, the strings aren't ever directly modified, so they can
be passed by reference to eliminate a few trivial copies.
2021-06-04 12:46:34 -04:00

61 lines
1.3 KiB
C++

#pragma once
#include <FEXCore/Config/Config.h>
#include <cassert>
#include <list>
#include <string>
#include <string_view>
/**
* @brief This is a singleton for storing global configuration state
*/
namespace FEX::Config {
class EmptyMapper : public FEXCore::Config::Layer {
public:
explicit EmptyMapper()
: FEXCore::Config::Layer(FEXCore::Config::LayerType::LAYER_MAIN) {
}
void Load() override {}
protected:
};
class OptionMapper : public FEXCore::Config::Layer {
public:
explicit OptionMapper(FEXCore::Config::LayerType Layer);
protected:
void MapNameToOption(const char *ConfigName, const char *ConfigString);
};
class MainLoader final : public FEX::Config::OptionMapper {
public:
explicit MainLoader();
explicit MainLoader(std::string ConfigFile);
void Load() override;
private:
std::string Config;
};
class AppLoader final : public FEX::Config::OptionMapper {
public:
explicit AppLoader(const std::string& Filename, bool Global);
void Load();
private:
std::string Config;
};
class EnvLoader final : public FEXCore::Config::Layer {
public:
explicit EnvLoader(char *const _envp[]);
void Load() override;
private:
char *const *envp;
};
void SaveLayerToJSON(const std::string& Filename, FEXCore::Config::Layer *const Layer);
}