make setting constructors private

This commit is contained in:
HJfod 2024-08-20 12:50:04 +03:00
parent 1032d9afa8
commit f061dd4bf2
2 changed files with 63 additions and 27 deletions

View file

@ -133,8 +133,12 @@ namespace geode {
protected: protected:
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
TitleSettingV3(); TitleSettingV3(PrivateMarker);
std::string getTitle() const; std::string getTitle() const;
@ -157,8 +161,12 @@ namespace geode {
protected: protected:
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
UnresolvedCustomSettingV3(); UnresolvedCustomSettingV3(PrivateMarker);
bool load(matjson::Value const& json) override; bool load(matjson::Value const& json) override;
bool save(matjson::Value& json) const override; bool save(matjson::Value& json) const override;
@ -180,8 +188,12 @@ namespace geode {
bool& getValueMut() const override; bool& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
BoolSettingV3(); BoolSettingV3(PrivateMarker);
bool getDefaultValue() const override; bool getDefaultValue() const override;
Result<> isValid(bool value) const override; Result<> isValid(bool value) const override;
@ -203,8 +215,12 @@ namespace geode {
int64_t& getValueMut() const override; int64_t& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
IntSettingV3(); IntSettingV3(PrivateMarker);
int64_t getDefaultValue() const override; int64_t getDefaultValue() const override;
Result<> isValid(int64_t value) const override; Result<> isValid(int64_t value) const override;
@ -237,8 +253,12 @@ namespace geode {
double& getValueMut() const override; double& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
FloatSettingV3(); FloatSettingV3(PrivateMarker);
double getDefaultValue() const override; double getDefaultValue() const override;
Result<> isValid(double value) const override; Result<> isValid(double value) const override;
@ -271,8 +291,12 @@ namespace geode {
std::string& getValueMut() const override; std::string& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
StringSettingV3(); StringSettingV3(PrivateMarker);
std::string getDefaultValue() const override; std::string getDefaultValue() const override;
Result<> isValid(std::string_view value) const override; Result<> isValid(std::string_view value) const override;
@ -298,8 +322,12 @@ namespace geode {
std::filesystem::path& getValueMut() const override; std::filesystem::path& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
FileSettingV3(); FileSettingV3(PrivateMarker);
std::filesystem::path getDefaultValue() const override; std::filesystem::path getDefaultValue() const override;
Result<> isValid(std::filesystem::path const& value) const override; Result<> isValid(std::filesystem::path const& value) const override;
@ -323,8 +351,12 @@ namespace geode {
cocos2d::ccColor3B& getValueMut() const override; cocos2d::ccColor3B& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
Color3BSettingV3(); Color3BSettingV3(PrivateMarker);
cocos2d::ccColor3B getDefaultValue() const override; cocos2d::ccColor3B getDefaultValue() const override;
Result<> isValid(cocos2d::ccColor3B value) const override; Result<> isValid(cocos2d::ccColor3B value) const override;
@ -346,8 +378,12 @@ namespace geode {
cocos2d::ccColor4B& getValueMut() const override; cocos2d::ccColor4B& getValueMut() const override;
Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override; Result<> onParse(std::string const& key, std::string const& modID, matjson::Value const& json) override;
private:
class PrivateMarker {};
friend class SettingV3;
public: public:
Color4BSettingV3(); Color4BSettingV3(PrivateMarker);
cocos2d::ccColor4B getDefaultValue() const override; cocos2d::ccColor4B getDefaultValue() const override;
Result<> isValid(cocos2d::ccColor4B value) const override; Result<> isValid(cocos2d::ccColor4B value) const override;

View file

@ -38,16 +38,16 @@ Result<std::shared_ptr<SettingV3>> SettingV3::parseBuiltin(std::string const& ke
root.needs("type").into(type); root.needs("type").into(type);
std::shared_ptr<SettingV3> ret; std::shared_ptr<SettingV3> ret;
switch (hash(type)) { switch (hash(type)) {
case hash("bool"): ret = std::make_shared<BoolSettingV3>(); break; case hash("bool"): ret = std::make_shared<BoolSettingV3>(BoolSettingV3::PrivateMarker()); break;
case hash("int"): ret = std::make_shared<IntSettingV3>(); break; case hash("int"): ret = std::make_shared<IntSettingV3>(IntSettingV3::PrivateMarker()); break;
case hash("float"): ret = std::make_shared<FloatSettingV3>(); break; case hash("float"): ret = std::make_shared<FloatSettingV3>(FloatSettingV3::PrivateMarker()); break;
case hash("string"): ret = std::make_shared<StringSettingV3>(); break; case hash("string"): ret = std::make_shared<StringSettingV3>(StringSettingV3::PrivateMarker()); break;
case hash("rgb"): case hash("color"): ret = std::make_shared<Color3BSettingV3>(); break; case hash("rgb"): case hash("color"): ret = std::make_shared<Color3BSettingV3>(Color3BSettingV3::PrivateMarker()); break;
case hash("rgba"): ret = std::make_shared<Color4BSettingV3>(); break; case hash("rgba"): ret = std::make_shared<Color4BSettingV3>(Color4BSettingV3::PrivateMarker()); break;
case hash("path"): case hash("file"): ret = std::make_shared<FileSettingV3>(); break; case hash("path"): case hash("file"): ret = std::make_shared<FileSettingV3>(FileSettingV3::PrivateMarker()); break;
case hash("title"): ret = std::make_shared<TitleSettingV3>(); break; case hash("title"): ret = std::make_shared<TitleSettingV3>(TitleSettingV3::PrivateMarker()); break;
default: default:
case hash("custom"): ret = std::make_shared<UnresolvedCustomSettingV3>(); break; case hash("custom"): ret = std::make_shared<UnresolvedCustomSettingV3>(UnresolvedCustomSettingV3::PrivateMarker()); break;
} }
GEODE_UNWRAP(ret->parse(key, modID, json)); GEODE_UNWRAP(ret->parse(key, modID, json));
return root.ok(std::move(ret)); return root.ok(std::move(ret));
@ -100,7 +100,7 @@ public:
std::string title; std::string title;
}; };
TitleSettingV3::TitleSettingV3() : m_impl(std::make_shared<Impl>()) {} TitleSettingV3::TitleSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
std::string TitleSettingV3::getTitle() const { std::string TitleSettingV3::getTitle() const {
return m_impl->title; return m_impl->title;
@ -134,7 +134,7 @@ void TitleSettingV3::reset() {}
// replace this comment with it // replace this comment with it
// put it riiiiiight here // put it riiiiiight here
UnresolvedCustomSettingV3::UnresolvedCustomSettingV3() : m_impl(std::make_shared<Impl>()) {} UnresolvedCustomSettingV3::UnresolvedCustomSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
Result<> UnresolvedCustomSettingV3::onParse(std::string const& key, std::string const& modID, matjson::Value const& json) { Result<> UnresolvedCustomSettingV3::onParse(std::string const& key, std::string const& modID, matjson::Value const& json) {
m_impl->json = json; m_impl->json = json;
@ -177,7 +177,7 @@ public:
bool defaultValue; bool defaultValue;
}; };
BoolSettingV3::BoolSettingV3() : m_impl(std::make_shared<Impl>()) {} BoolSettingV3::BoolSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
bool& BoolSettingV3::getValueMut() const { bool& BoolSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -244,7 +244,7 @@ public:
} controls; } controls;
}; };
IntSettingV3::IntSettingV3() : m_impl(std::make_shared<Impl>()) {} IntSettingV3::IntSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
int64_t& IntSettingV3::getValueMut() const { int64_t& IntSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -374,7 +374,7 @@ public:
} controls; } controls;
}; };
FloatSettingV3::FloatSettingV3() : m_impl(std::make_shared<Impl>()) {} FloatSettingV3::FloatSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
double& FloatSettingV3::getValueMut() const { double& FloatSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -496,7 +496,7 @@ public:
std::optional<std::vector<std::string>> oneOf; std::optional<std::vector<std::string>> oneOf;
}; };
StringSettingV3::StringSettingV3() : m_impl(std::make_shared<Impl>()) {} StringSettingV3::StringSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
std::string& StringSettingV3::getValueMut() const { std::string& StringSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -580,7 +580,7 @@ public:
std::optional<std::vector<utils::file::FilePickOptions::Filter>> filters; std::optional<std::vector<utils::file::FilePickOptions::Filter>> filters;
}; };
FileSettingV3::FileSettingV3() : m_impl(std::make_shared<Impl>()) {} FileSettingV3::FileSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
std::filesystem::path& FileSettingV3::getValueMut() const { std::filesystem::path& FileSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -669,7 +669,7 @@ public:
ccColor3B defaultValue; ccColor3B defaultValue;
}; };
Color3BSettingV3::Color3BSettingV3() : m_impl(std::make_shared<Impl>()) {} Color3BSettingV3::Color3BSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
ccColor3B& Color3BSettingV3::getValueMut() const { ccColor3B& Color3BSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;
@ -725,7 +725,7 @@ public:
ccColor4B defaultValue; ccColor4B defaultValue;
}; };
Color4BSettingV3::Color4BSettingV3() : m_impl(std::make_shared<Impl>()) {} Color4BSettingV3::Color4BSettingV3(PrivateMarker) : m_impl(std::make_shared<Impl>()) {}
ccColor4B& Color4BSettingV3::getValueMut() const { ccColor4B& Color4BSettingV3::getValueMut() const {
return m_impl->value; return m_impl->value;