summaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
authorImperishableSecret <57067794+imperishableSecret@users.noreply.github.com>2026-05-07 01:18:30 +0530
committerGitHub <noreply@github.com>2026-05-06 20:48:30 +0100
commit336dc6c04e5bd0b1ebeadab81970da6367345f4f (patch)
treea058ecbe84a64d5af606c77264d6fa2fea7f92db /src/config
parent1681bea42dd2f11ba3fe6df05560d0b231de3c76 (diff)
config/lua: fix device bool int reads (#14313)
* config/lua: fix device bool int reads * config/lua: fix device typed reads
Diffstat (limited to 'src/config')
-rw-r--r--src/config/lua/ConfigManager.cpp16
-rw-r--r--src/config/lua/types/LuaConfigBool.cpp4
-rw-r--r--src/config/lua/types/LuaConfigBool.hpp1
-rw-r--r--src/config/lua/types/LuaConfigFloat.cpp4
-rw-r--r--src/config/lua/types/LuaConfigFloat.hpp1
-rw-r--r--src/config/lua/types/LuaConfigInt.cpp4
-rw-r--r--src/config/lua/types/LuaConfigInt.hpp1
-rw-r--r--src/config/lua/types/LuaConfigString.cpp4
-rw-r--r--src/config/lua/types/LuaConfigString.hpp1
-rw-r--r--src/config/lua/types/LuaConfigUtils.hpp2
-rw-r--r--src/config/lua/types/LuaConfigValue.cpp22
-rw-r--r--src/config/lua/types/LuaConfigValue.hpp4
-rw-r--r--src/config/lua/types/LuaConfigVec2.cpp4
-rw-r--r--src/config/lua/types/LuaConfigVec2.hpp1
14 files changed, 60 insertions, 9 deletions
diff --git a/src/config/lua/ConfigManager.cpp b/src/config/lua/ConfigManager.cpp
index 0fe75b18..0dd96200 100644
--- a/src/config/lua/ConfigManager.cpp
+++ b/src/config/lua/ConfigManager.cpp
@@ -712,18 +712,18 @@ ILuaConfigValue* CConfigManager::findDeviceValue(const std::string& dev, const s
int CConfigManager::getDeviceInt(const std::string& dev, const std::string& field, const std::string& fb) {
std::string fallback = luaConfigValueName(fb);
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
- return (int)*sc<const Config::INTEGER*>(v->data());
+ return v->asInt();
if (!fallback.empty() && m_configValues.contains(fallback))
- return (int)*sc<const Config::INTEGER*>(m_configValues.at(fallback)->data());
+ return m_configValues.at(fallback)->asInt();
return 0;
}
float CConfigManager::getDeviceFloat(const std::string& dev, const std::string& field, const std::string& fb) {
std::string fallback = luaConfigValueName(fb);
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
- return *sc<const Config::FLOAT*>(v->data());
+ return v->asFloat();
if (!fallback.empty() && m_configValues.contains(fallback))
- return *sc<const Config::FLOAT*>(m_configValues.at(fallback)->data());
+ return m_configValues.at(fallback)->asFloat();
return 0.F;
}
@@ -731,9 +731,9 @@ Vector2D CConfigManager::getDeviceVec(const std::string& dev, const std::string&
std::string fallback = luaConfigValueName(fb);
auto toVec = [](const Config::VEC2& v) -> Vector2D { return {v.x, v.y}; };
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
- return toVec(*sc<const Config::VEC2*>(v->data()));
+ return toVec(v->asVec2());
if (!fallback.empty() && m_configValues.contains(fallback))
- return toVec(*sc<const Config::VEC2*>(m_configValues.at(fallback)->data()));
+ return toVec(m_configValues.at(fallback)->asVec2());
return {0, 0};
}
@@ -741,9 +741,9 @@ std::string CConfigManager::getDeviceString(const std::string& dev, const std::s
std::string fallback = luaConfigValueName(fb);
auto clean = [](const Config::STRING& s) -> std::string { return s == STRVAL_EMPTY ? "" : s; };
if (auto* v = findDeviceValue(normalizeDeviceName(dev), luaConfigValueName(field)); v && v->setByUser())
- return clean(*sc<const Config::STRING*>(v->data()));
+ return clean(v->asString());
if (!fallback.empty() && m_configValues.contains(fallback))
- return clean(*sc<const Config::STRING*>(m_configValues.at(fallback)->data()));
+ return clean(m_configValues.at(fallback)->asString());
return "";
}
diff --git a/src/config/lua/types/LuaConfigBool.cpp b/src/config/lua/types/LuaConfigBool.cpp
index 15413598..2162d0b0 100644
--- a/src/config/lua/types/LuaConfigBool.cpp
+++ b/src/config/lua/types/LuaConfigBool.cpp
@@ -43,6 +43,10 @@ void CLuaConfigBool::push(lua_State* s) {
lua_pushboolean(s, m_data);
}
+Config::INTEGER CLuaConfigBool::asInt() {
+ return m_data ? 1 : 0;
+}
+
const Config::BOOL& CLuaConfigBool::parsed() {
return m_data;
}
diff --git a/src/config/lua/types/LuaConfigBool.hpp b/src/config/lua/types/LuaConfigBool.hpp
index b4644aa4..bda06adc 100644
--- a/src/config/lua/types/LuaConfigBool.hpp
+++ b/src/config/lua/types/LuaConfigBool.hpp
@@ -14,6 +14,7 @@ namespace Config::Lua {
virtual std::string toString();
virtual void push(lua_State* s);
virtual void reset();
+ virtual Config::INTEGER asInt();
const Config::BOOL& parsed();
diff --git a/src/config/lua/types/LuaConfigFloat.cpp b/src/config/lua/types/LuaConfigFloat.cpp
index 9d2574b6..be3fd749 100644
--- a/src/config/lua/types/LuaConfigFloat.cpp
+++ b/src/config/lua/types/LuaConfigFloat.cpp
@@ -71,6 +71,10 @@ void CLuaConfigFloat::push(lua_State* s) {
lua_pushnumber(s, m_data);
}
+Config::FLOAT CLuaConfigFloat::asFloat() {
+ return m_data;
+}
+
const Config::FLOAT& CLuaConfigFloat::parsed() {
return m_data;
}
diff --git a/src/config/lua/types/LuaConfigFloat.hpp b/src/config/lua/types/LuaConfigFloat.hpp
index e6602b5a..16263b7e 100644
--- a/src/config/lua/types/LuaConfigFloat.hpp
+++ b/src/config/lua/types/LuaConfigFloat.hpp
@@ -16,6 +16,7 @@ namespace Config::Lua {
virtual std::string toString();
virtual void push(lua_State* s);
virtual void reset();
+ virtual Config::FLOAT asFloat();
const Config::FLOAT& parsed();
diff --git a/src/config/lua/types/LuaConfigInt.cpp b/src/config/lua/types/LuaConfigInt.cpp
index ef96a056..24220e87 100644
--- a/src/config/lua/types/LuaConfigInt.cpp
+++ b/src/config/lua/types/LuaConfigInt.cpp
@@ -79,6 +79,10 @@ void CLuaConfigInt::push(lua_State* s) {
lua_pushinteger(s, m_data);
}
+Config::INTEGER CLuaConfigInt::asInt() {
+ return m_data;
+}
+
const Config::INTEGER& CLuaConfigInt::parsed() {
return m_data;
}
diff --git a/src/config/lua/types/LuaConfigInt.hpp b/src/config/lua/types/LuaConfigInt.hpp
index 7ff2f39c..02322159 100644
--- a/src/config/lua/types/LuaConfigInt.hpp
+++ b/src/config/lua/types/LuaConfigInt.hpp
@@ -19,6 +19,7 @@ namespace Config::Lua {
virtual std::string toString();
virtual void push(lua_State* s);
virtual void reset();
+ virtual Config::INTEGER asInt();
const Config::INTEGER& parsed();
diff --git a/src/config/lua/types/LuaConfigString.cpp b/src/config/lua/types/LuaConfigString.cpp
index c16a587b..e35d5f1b 100644
--- a/src/config/lua/types/LuaConfigString.cpp
+++ b/src/config/lua/types/LuaConfigString.cpp
@@ -47,6 +47,10 @@ void CLuaConfigString::push(lua_State* s) {
lua_pushstring(s, m_data.c_str());
}
+Config::STRING CLuaConfigString::asString() {
+ return m_data;
+}
+
const Config::STRING& CLuaConfigString::parsed() {
return m_data;
}
diff --git a/src/config/lua/types/LuaConfigString.hpp b/src/config/lua/types/LuaConfigString.hpp
index d976b6ab..c823e553 100644
--- a/src/config/lua/types/LuaConfigString.hpp
+++ b/src/config/lua/types/LuaConfigString.hpp
@@ -18,6 +18,7 @@ namespace Config::Lua {
virtual std::string toString();
virtual void push(lua_State* s);
virtual void reset();
+ virtual Config::STRING asString();
const Config::STRING& parsed();
diff --git a/src/config/lua/types/LuaConfigUtils.hpp b/src/config/lua/types/LuaConfigUtils.hpp
index d61cf47a..44b3d189 100644
--- a/src/config/lua/types/LuaConfigUtils.hpp
+++ b/src/config/lua/types/LuaConfigUtils.hpp
@@ -6,4 +6,4 @@
namespace Config::Lua {
UP<ILuaConfigValue> fromGenericValue(SP<Config::Values::IValue> v);
-}; \ No newline at end of file
+};
diff --git a/src/config/lua/types/LuaConfigValue.cpp b/src/config/lua/types/LuaConfigValue.cpp
index 38141baa..8d3027cd 100644
--- a/src/config/lua/types/LuaConfigValue.cpp
+++ b/src/config/lua/types/LuaConfigValue.cpp
@@ -1,5 +1,7 @@
#include "LuaConfigValue.hpp"
+#include "../../../macros.hpp"
+
using namespace Config;
using namespace Config::Lua;
@@ -18,3 +20,23 @@ void ILuaConfigValue::setRefreshBits(Supplementary::PropRefreshBits bits) {
Supplementary::PropRefreshBits ILuaConfigValue::refreshBits() const {
return m_refreshBits;
}
+
+Config::INTEGER ILuaConfigValue::asInt() {
+ RASSERT(false, "Lua config value cannot be read as int");
+ return 0;
+}
+
+Config::FLOAT ILuaConfigValue::asFloat() {
+ RASSERT(false, "Lua config value cannot be read as float");
+ return 0.F;
+}
+
+Config::VEC2 ILuaConfigValue::asVec2() {
+ RASSERT(false, "Lua config value cannot be read as vec2");
+ return {};
+}
+
+Config::STRING ILuaConfigValue::asString() {
+ RASSERT(false, "Lua config value cannot be read as string");
+ return {};
+}
diff --git a/src/config/lua/types/LuaConfigValue.hpp b/src/config/lua/types/LuaConfigValue.hpp
index 2cce98e3..93e8b755 100644
--- a/src/config/lua/types/LuaConfigValue.hpp
+++ b/src/config/lua/types/LuaConfigValue.hpp
@@ -41,6 +41,10 @@ namespace Config::Lua {
virtual void push(lua_State* s) = 0;
virtual void reset() = 0;
+ virtual Config::INTEGER asInt();
+ virtual Config::FLOAT asFloat();
+ virtual Config::VEC2 asVec2();
+ virtual Config::STRING asString();
virtual void resetSetByUser();
virtual bool setByUser();
virtual void setRefreshBits(Supplementary::PropRefreshBits bits);
diff --git a/src/config/lua/types/LuaConfigVec2.cpp b/src/config/lua/types/LuaConfigVec2.cpp
index 5e92de62..cfda0c1b 100644
--- a/src/config/lua/types/LuaConfigVec2.cpp
+++ b/src/config/lua/types/LuaConfigVec2.cpp
@@ -91,6 +91,10 @@ void CLuaConfigVec2::push(lua_State* s) {
lua_setfield(s, -2, "y");
}
+Config::VEC2 CLuaConfigVec2::asVec2() {
+ return m_data;
+}
+
const Config::VEC2& CLuaConfigVec2::parsed() {
return m_data;
}
diff --git a/src/config/lua/types/LuaConfigVec2.hpp b/src/config/lua/types/LuaConfigVec2.hpp
index c6560121..80a8ce73 100644
--- a/src/config/lua/types/LuaConfigVec2.hpp
+++ b/src/config/lua/types/LuaConfigVec2.hpp
@@ -18,6 +18,7 @@ namespace Config::Lua {
virtual std::string toString();
virtual void push(lua_State* s);
virtual void reset();
+ virtual Config::VEC2 asVec2();
const Config::VEC2& parsed();