From 1411ad6c5e692685d983961abd8bdadbf5cf1ad0 Mon Sep 17 00:00:00 2001 From: Almamu Date: Thu, 11 Sep 2025 21:43:47 +0200 Subject: [PATCH] chore: add some const qualifiers in parser to prevent changes --- .../Data/Parsers/EffectParser.cpp | 6 +++--- src/WallpaperEngine/Data/Parsers/EffectParser.h | 6 +++--- .../Data/Parsers/MaterialParser.cpp | 14 +++++++------- .../Data/Parsers/MaterialParser.h | 8 ++++---- .../Data/Parsers/ModelParser.cpp | 4 ++-- src/WallpaperEngine/Data/Parsers/ModelParser.h | 4 ++-- .../Data/Parsers/ObjectParser.cpp | 17 ++++++++--------- src/WallpaperEngine/Data/Parsers/ObjectParser.h | 15 +++++++-------- .../Data/Parsers/PropertyParser.cpp | 14 +++++++------- .../Data/Parsers/PropertyParser.h | 14 +++++++------- .../Data/Parsers/ShaderConstantParser.cpp | 2 +- .../Data/Parsers/ShaderConstantParser.h | 2 +- .../Data/Parsers/UserSettingParser.cpp | 6 +++--- .../Data/Parsers/WallpaperParser.cpp | 8 ++------ .../Data/Parsers/WallpaperParser.h | 2 +- src/WallpaperEngine/Render/CTextureCache.cpp | 3 +-- 16 files changed, 59 insertions(+), 66 deletions(-) diff --git a/src/WallpaperEngine/Data/Parsers/EffectParser.cpp b/src/WallpaperEngine/Data/Parsers/EffectParser.cpp index bc83300..7446815 100644 --- a/src/WallpaperEngine/Data/Parsers/EffectParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/EffectParser.cpp @@ -9,13 +9,13 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -EffectUniquePtr EffectParser::load (Project& project, const std::string& filename) { +EffectUniquePtr EffectParser::load (const Project& project, const std::string& filename) { const auto effectJson = JSON::parse (project.container->readString (filename)); return parse (effectJson, project); } -EffectUniquePtr EffectParser::parse (const JSON& it, Project& project) { +EffectUniquePtr EffectParser::parse (const JSON& it, const Project& project) { const auto dependencies = it.optional ("dependencies"); const auto fbos = it.optional ("fbos"); @@ -44,7 +44,7 @@ std::vector EffectParser::parseDependencies (const JSON& it) { return result; } -std::vector EffectParser::parseEffectPasses (const JSON& it, Project& project) { +std::vector EffectParser::parseEffectPasses (const JSON& it, const Project& project) { std::vector result = {}; if (!it.is_array ()) { diff --git a/src/WallpaperEngine/Data/Parsers/EffectParser.h b/src/WallpaperEngine/Data/Parsers/EffectParser.h index 0a64c31..7c5b095 100644 --- a/src/WallpaperEngine/Data/Parsers/EffectParser.h +++ b/src/WallpaperEngine/Data/Parsers/EffectParser.h @@ -9,12 +9,12 @@ using namespace WallpaperEngine::Data::Model; class EffectParser { public: - static EffectUniquePtr load (Project& project, const std::string& filename); + static EffectUniquePtr load (const Project& project, const std::string& filename); private: - static EffectUniquePtr parse (const JSON& it, Project& project); + static EffectUniquePtr parse (const JSON& it, const Project& project); static std::vector parseDependencies (const JSON& it); - static std::vector parseEffectPasses (const JSON& it, Project& project); + static std::vector parseEffectPasses (const JSON& it, const Project& project); static std::map parseBinds (const JSON& it); static std::vector parseFBOs (const JSON& it); }; diff --git a/src/WallpaperEngine/Data/Parsers/MaterialParser.cpp b/src/WallpaperEngine/Data/Parsers/MaterialParser.cpp index 22e8048..57a909a 100644 --- a/src/WallpaperEngine/Data/Parsers/MaterialParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/MaterialParser.cpp @@ -7,20 +7,20 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -MaterialUniquePtr MaterialParser::load (Project& project, const std::string& filename) { +MaterialUniquePtr MaterialParser::load (const Project& project, const std::string& filename) { const auto materialJson = JSON::parse (project.container->readString (filename)); - return parse (materialJson, project, filename); + return parse (materialJson, filename); } -MaterialUniquePtr MaterialParser::parse (const JSON& it, Project& project, const std::string& filename) { +MaterialUniquePtr MaterialParser::parse (const JSON& it, const std::string& filename) { return std::make_unique (Material { .filename = filename, - .passes = parsePasses (it.require ("passes", "Material must have passes to render"), project), + .passes = parsePasses (it.require ("passes", "Material must have passes to render")), }); } -std::vector MaterialParser::parsePasses (const JSON& it, Project& project) { +std::vector MaterialParser::parsePasses (const JSON& it) { std::vector result = {}; if (!it.is_array ()) { @@ -28,13 +28,13 @@ std::vector MaterialParser::parsePasses (const JSON& it, } for (const auto& cur : it) { - result.push_back (parsePass (cur, project)); + result.push_back (parsePass (cur)); } return result; } -MaterialPassUniquePtr MaterialParser::parsePass (const JSON& it, Project& project) { +MaterialPassUniquePtr MaterialParser::parsePass (const JSON& it) { const auto textures = it.optional ("textures"); const auto usertextures = it.optional ("usertextures"); const auto combos = it.optional ("combos"); diff --git a/src/WallpaperEngine/Data/Parsers/MaterialParser.h b/src/WallpaperEngine/Data/Parsers/MaterialParser.h index 85caaa1..5b1bdcf 100644 --- a/src/WallpaperEngine/Data/Parsers/MaterialParser.h +++ b/src/WallpaperEngine/Data/Parsers/MaterialParser.h @@ -10,10 +10,10 @@ using namespace WallpaperEngine::Data::Model; class MaterialParser { public: - static MaterialUniquePtr load (Project& project, const std::string& filename); - static MaterialUniquePtr parse (const JSON& it, Project& project, const std::string& filename); - static std::vector parsePasses (const JSON& it, Project& project); - static MaterialPassUniquePtr parsePass (const JSON& it, Project& project); + static MaterialUniquePtr load (const Project& project, const std::string& filename); + static MaterialUniquePtr parse (const JSON& it, const std::string& filename); + static std::vector parsePasses (const JSON& it); + static MaterialPassUniquePtr parsePass (const JSON& it); static std::map parseTextures (const JSON& it); static std::map parseCombos (const JSON& it); static BlendingMode parseBlendMode (const std::string& mode); diff --git a/src/WallpaperEngine/Data/Parsers/ModelParser.cpp b/src/WallpaperEngine/Data/Parsers/ModelParser.cpp index f9e4c74..dfde4a3 100644 --- a/src/WallpaperEngine/Data/Parsers/ModelParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/ModelParser.cpp @@ -9,13 +9,13 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -ModelUniquePtr ModelParser::load (Project& project, const std::string& filename) { +ModelUniquePtr ModelParser::load (const Project& project, const std::string& filename) { const auto model = JSON::parse (project.container->readString (filename)); return parse (model, project, filename); } -ModelUniquePtr ModelParser::parse (const JSON& file, Project& project, const std::string& filename) { +ModelUniquePtr ModelParser::parse (const JSON& file, const Project& project, const std::string& filename) { const auto material = file.require ("material", "Model must have a material"); return std::make_unique (ModelStruct { diff --git a/src/WallpaperEngine/Data/Parsers/ModelParser.h b/src/WallpaperEngine/Data/Parsers/ModelParser.h index afceffe..ce10120 100644 --- a/src/WallpaperEngine/Data/Parsers/ModelParser.h +++ b/src/WallpaperEngine/Data/Parsers/ModelParser.h @@ -9,7 +9,7 @@ using namespace WallpaperEngine::Data::Model; class ModelParser { public: - static ModelUniquePtr load (Project& project, const std::string& filename); - static ModelUniquePtr parse (const JSON& file, Project& project, const std::string& filename); + static ModelUniquePtr load (const Project& project, const std::string& filename); + static ModelUniquePtr parse (const JSON& file, const Project& project, const std::string& filename); }; } // namespace WallpaperEngine::Data::Parsers diff --git a/src/WallpaperEngine/Data/Parsers/ObjectParser.cpp b/src/WallpaperEngine/Data/Parsers/ObjectParser.cpp index 8cb84d7..5d617fb 100644 --- a/src/WallpaperEngine/Data/Parsers/ObjectParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/ObjectParser.cpp @@ -10,7 +10,7 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -ObjectUniquePtr ObjectParser::parse (const JSON& it, Project& project) { +ObjectUniquePtr ObjectParser::parse (const JSON& it, const Project& project) { const auto imageIt = it.find ("image"); const auto soundIt = it.find ("sound"); const auto particleIt = it.find ("particle"); @@ -25,7 +25,7 @@ ObjectUniquePtr ObjectParser::parse (const JSON& it, Project& project) { if (imageIt != it.end () && imageIt->is_string ()) { return parseImage (it, project, basedata, *imageIt); } else if (soundIt != it.end () && soundIt->is_array ()) { - return parseSound (it, project, basedata); + return parseSound (it, basedata); } else if (particleIt != it.end ()) { sLog.error ("Particle objects are not supported yet"); } else if (textIt != it.end ()) { @@ -56,7 +56,7 @@ std::vector ObjectParser::parseDependencies (const JSON& it) { return result; } -SoundUniquePtr ObjectParser::parseSound (const JSON& it, Project& project, ObjectData base) { +SoundUniquePtr ObjectParser::parseSound (const JSON& it, ObjectData base) { const auto soundIt = it.require ("sound", "Object must have a sound"); std::vector sounds = {}; @@ -73,8 +73,7 @@ SoundUniquePtr ObjectParser::parseSound (const JSON& it, Project& project, Objec ); } -ImageUniquePtr ObjectParser::parseImage ( - const JSON& it, Project& project, ObjectData base, const std::string& image) { +ImageUniquePtr ObjectParser::parseImage (const JSON& it, const Project& project, ObjectData base, const std::string& image) { const auto& properties = project.properties; const auto& effects = it.optional ("effects"); @@ -107,7 +106,7 @@ ImageUniquePtr ObjectParser::parseImage ( return result; } -std::vector ObjectParser::parseEffects (const JSON& it, Project& project) { +std::vector ObjectParser::parseEffects (const JSON& it, const Project& project) { if (!it.is_array ()) { return {}; } @@ -121,7 +120,7 @@ std::vector ObjectParser::parseEffects (const JSON& it, P return result; } -ImageEffectUniquePtr ObjectParser::parseEffect (const JSON& it, Project& project) { +ImageEffectUniquePtr ObjectParser::parseEffect (const JSON& it, const Project& project) { const auto& passsOverrides = it.optional ("passes"); return std::make_unique (ImageEffect { .id = it.optional ("id", -1), @@ -132,7 +131,7 @@ ImageEffectUniquePtr ObjectParser::parseEffect (const JSON& it, Project& project }); } -std::vector ObjectParser::parseEffectPassOverrides (const JSON& it, Project& project) { +std::vector ObjectParser::parseEffectPassOverrides (const JSON& it, const Project& project) { if (!it.is_array ()) { return {}; } @@ -146,7 +145,7 @@ std::vector ObjectParser::parseEffectPassOver return result; } -ImageEffectPassOverrideUniquePtr ObjectParser::parseEffectPass (const JSON& it, Project& project) { +ImageEffectPassOverrideUniquePtr ObjectParser::parseEffectPass (const JSON& it, const Project& project) { const auto& combos = it.optional ("combos"); const auto& textures = it.optional ("textures"); const auto& constants = it.optional ("constantshadervalues"); diff --git a/src/WallpaperEngine/Data/Parsers/ObjectParser.h b/src/WallpaperEngine/Data/Parsers/ObjectParser.h index f7d8531..e5186a1 100644 --- a/src/WallpaperEngine/Data/Parsers/ObjectParser.h +++ b/src/WallpaperEngine/Data/Parsers/ObjectParser.h @@ -15,17 +15,16 @@ using namespace WallpaperEngine::Data::Model; class ObjectParser { public: - static ObjectUniquePtr parse (const JSON& it, Project& project); + static ObjectUniquePtr parse (const JSON& it, const Project& project); private: static std::vector parseDependencies (const JSON& it); - static SoundUniquePtr parseSound (const JSON& it, Project& project, ObjectData base); - static ImageUniquePtr parseImage ( - const JSON& it, Project& project, ObjectData base, const std::string& image); - static std::vector parseEffects (const JSON& it, Project& project); - static ImageEffectUniquePtr parseEffect (const JSON& it, Project& project); - static std::vector parseEffectPassOverrides (const JSON& it, Project& project); - static ImageEffectPassOverrideUniquePtr parseEffectPass (const JSON& it, Project& project); + static SoundUniquePtr parseSound (const JSON& it, ObjectData base); + static ImageUniquePtr parseImage (const JSON& it, const Project& project, ObjectData base, const std::string& image); + static std::vector parseEffects (const JSON& it, const Project& project); + static ImageEffectUniquePtr parseEffect (const JSON& it, const Project& project); + static std::vector parseEffectPassOverrides (const JSON& it, const Project& project); + static ImageEffectPassOverrideUniquePtr parseEffectPass (const JSON& it, const Project& project); static TextureMap parseTextureMap (const JSON& it); static ComboMap parseComboMap (const JSON& it); }; diff --git a/src/WallpaperEngine/Data/Parsers/PropertyParser.cpp b/src/WallpaperEngine/Data/Parsers/PropertyParser.cpp index aeacae4..058deac 100644 --- a/src/WallpaperEngine/Data/Parsers/PropertyParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/PropertyParser.cpp @@ -4,7 +4,7 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -PropertySharedPtr PropertyParser::parse (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parse (const JSON& it, const std::string& name) { const auto type = it.require ("type", "Property type is required"); if (type == "color") { @@ -36,7 +36,7 @@ PropertySharedPtr PropertyParser::parse (const JSON& it, std::string name) { } -PropertySharedPtr PropertyParser::parseCombo (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseCombo (const JSON& it, const std::string& name) { std::map optionsMap = {}; const auto options = it.require ("options", "Combo property must have options"); @@ -68,21 +68,21 @@ PropertySharedPtr PropertyParser::parseCombo (const JSON& it, std::string name) }, value.is_number () ? std::to_string (value.get ()) : value.get ()); } -PropertySharedPtr PropertyParser::parseColor (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseColor (const JSON& it, const std::string& name) { return std::make_shared (PropertyData { .name = name, .text = it.optional ("text", ""), }, it.require ("value", "Property must have a value")); } -PropertySharedPtr PropertyParser::parseBoolean (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseBoolean (const JSON& it, const std::string& name) { return std::make_shared (PropertyData { .name = name, .text = it.optional ("text", ""), }, it.require ("value", "Property must have a value")); } -PropertySharedPtr PropertyParser::parseSlider (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseSlider (const JSON& it, const std::string& name) { return std::make_shared (PropertyData { .name = name, .text = it.optional ("text", ""), @@ -93,14 +93,14 @@ PropertySharedPtr PropertyParser::parseSlider (const JSON& it, std::string name) }, it.require ("value", "Property must have a value")); } -PropertySharedPtr PropertyParser::parseText (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseText (const JSON& it, const std::string& name) { return std::make_shared (PropertyData { .name = name, .text = it.optional ("text", ""), }); } -PropertySharedPtr PropertyParser::parseSceneTexture (const JSON& it, std::string name) { +PropertySharedPtr PropertyParser::parseSceneTexture (const JSON& it, const std::string& name) { return std::make_shared (PropertyData { .name = name, .text = it.optional ("text", ""), diff --git a/src/WallpaperEngine/Data/Parsers/PropertyParser.h b/src/WallpaperEngine/Data/Parsers/PropertyParser.h index 99383ad..c060e0e 100644 --- a/src/WallpaperEngine/Data/Parsers/PropertyParser.h +++ b/src/WallpaperEngine/Data/Parsers/PropertyParser.h @@ -8,14 +8,14 @@ using namespace WallpaperEngine::Data::Model; class PropertyParser { public: - static PropertySharedPtr parse (const JSON& it, std::string name); + static PropertySharedPtr parse (const JSON& it, const std::string& name); private: - static PropertySharedPtr parseCombo (const JSON& it, std::string name); - static PropertySharedPtr parseColor (const JSON& it, std::string name); - static PropertySharedPtr parseBoolean (const JSON& it, std::string name); - static PropertySharedPtr parseSlider (const JSON& it, std::string name); - static PropertySharedPtr parseText (const JSON& it, std::string name); - static PropertySharedPtr parseSceneTexture (const JSON& it, std::string name); + static PropertySharedPtr parseCombo (const JSON& it, const std::string& name); + static PropertySharedPtr parseColor (const JSON& it, const std::string& name); + static PropertySharedPtr parseBoolean (const JSON& it, const std::string& name); + static PropertySharedPtr parseSlider (const JSON& it, const std::string& name); + static PropertySharedPtr parseText (const JSON& it, const std::string& name); + static PropertySharedPtr parseSceneTexture (const JSON& it, const std::string& name); }; } \ No newline at end of file diff --git a/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.cpp b/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.cpp index 066a330..ab290e5 100644 --- a/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.cpp @@ -6,7 +6,7 @@ using namespace WallpaperEngine::Data::Parsers; using namespace WallpaperEngine::Data::Model; -ShaderConstantMap ShaderConstantParser::parse (const JSON& it, Project& project) { +ShaderConstantMap ShaderConstantParser::parse (const JSON& it, const Project& project) { if (!it.is_object ()) { return {}; } diff --git a/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.h b/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.h index c02edd7..1df4327 100644 --- a/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.h +++ b/src/WallpaperEngine/Data/Parsers/ShaderConstantParser.h @@ -9,6 +9,6 @@ using namespace WallpaperEngine::Data::Model; class ShaderConstantParser { public: - static ShaderConstantMap parse (const JSON& it, Project& project); + static ShaderConstantMap parse (const JSON& it, const Project& project); }; } // namespace WallpaperEngine::Data::Parsers diff --git a/src/WallpaperEngine/Data/Parsers/UserSettingParser.cpp b/src/WallpaperEngine/Data/Parsers/UserSettingParser.cpp index 9fe7016..37b30b3 100644 --- a/src/WallpaperEngine/Data/Parsers/UserSettingParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/UserSettingParser.cpp @@ -53,11 +53,11 @@ UserSettingUniquePtr UserSettingParser::parse (const json& data, const Propertie //TODO: VALIDATE THIS IS RIGHT? if (size == 2) { - value->update ((glm::vec2) valueIt); + value->update (static_cast (valueIt)); } else if (size == 3) { - value->update ((glm::vec3) valueIt); + value->update (static_cast (valueIt)); } else { - value->update ((glm::vec4) valueIt); + value->update (static_cast (valueIt)); } } else if (valueIt.is_number_integer ()) { value->update (valueIt.get ()); diff --git a/src/WallpaperEngine/Data/Parsers/WallpaperParser.cpp b/src/WallpaperEngine/Data/Parsers/WallpaperParser.cpp index 7ccf583..ad24bbd 100644 --- a/src/WallpaperEngine/Data/Parsers/WallpaperParser.cpp +++ b/src/WallpaperEngine/Data/Parsers/WallpaperParser.cpp @@ -92,15 +92,11 @@ WebUniquePtr WallpaperParser::parseWeb (const JSON& file, Project& project) { }); } -ObjectList WallpaperParser::parseObjects (const JSON& objects, Project& project) { +ObjectList WallpaperParser::parseObjects (const JSON& objects, const Project& project) { ObjectList result = {}; for (const auto& cur : objects) { - auto object = ObjectParser::parse (cur, project); - - //TODO: DO WE REALLY WANT TO DIRECTLY CONSTRUCT UNIQUE AND SHARED PTRS EVERYWHERE? - // SHOULDN'T THAT BE HANDLED BY CALLING CODE (LIKE THIS) INSTEAD? - result.emplace_back (std::move (object)); + result.emplace_back (ObjectParser::parse (cur, project)); } return result; diff --git a/src/WallpaperEngine/Data/Parsers/WallpaperParser.h b/src/WallpaperEngine/Data/Parsers/WallpaperParser.h index a4453f9..621aaf8 100644 --- a/src/WallpaperEngine/Data/Parsers/WallpaperParser.h +++ b/src/WallpaperEngine/Data/Parsers/WallpaperParser.h @@ -15,6 +15,6 @@ class WallpaperParser { static SceneUniquePtr parseScene (const JSON& file, Project& project); static VideoUniquePtr parseVideo (const JSON& file, Project& project); static WebUniquePtr parseWeb (const JSON& file, Project& project); - static ObjectList parseObjects (const JSON& objects, Project& project); + static ObjectList parseObjects (const JSON& objects, const Project& project); }; } // namespace WallpaperEngine::Data::Parsers diff --git a/src/WallpaperEngine/Render/CTextureCache.cpp b/src/WallpaperEngine/Render/CTextureCache.cpp index b09176f..8f9c0c5 100644 --- a/src/WallpaperEngine/Render/CTextureCache.cpp +++ b/src/WallpaperEngine/Render/CTextureCache.cpp @@ -16,9 +16,8 @@ using namespace WallpaperEngine::Data::Parsers; CTextureCache::CTextureCache (CRenderContext& context) : Helpers::CContextAware (context) {} std::shared_ptr CTextureCache::resolve (const std::string& filename) { - const auto found = this->m_textureCache.find (filename); - if (found != this->m_textureCache.end ()) + if (const auto found = this->m_textureCache.find (filename); found != this->m_textureCache.end ()) return found->second; auto finalFilename = std::filesystem::path("materials") / filename;