mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-23 10:24:54 -05:00
Add helper to check if value is a valid number
This commit is contained in:
parent
6cc224aeec
commit
eddd9fa8ab
|
|
@ -15,6 +15,7 @@ public:
|
|||
|
||||
T GetValue() const;
|
||||
T GetFixedValue() const { return _value; }
|
||||
bool HasValidValue() const;
|
||||
void SetValue(T val) { _value = val; }
|
||||
void SetValue(const std::weak_ptr<Variable> &var) { _variable = var; }
|
||||
operator T() const;
|
||||
|
|
|
|||
|
|
@ -46,15 +46,47 @@ void NumberVariable<T>::Load(obs_data_t *obj, const char *name)
|
|||
|
||||
template<typename T> T NumberVariable<T>::GetValue() const
|
||||
{
|
||||
if (_type == Type::VARIABLE) {
|
||||
auto var = _variable.lock();
|
||||
if (!var) {
|
||||
return {};
|
||||
}
|
||||
if (_type == Type::FIXED_VALUE) {
|
||||
return _value;
|
||||
}
|
||||
|
||||
auto var = _variable.lock();
|
||||
if (!var) {
|
||||
return {};
|
||||
}
|
||||
|
||||
if constexpr (std::is_same<T, int>::value) {
|
||||
auto value = var->IntValue();
|
||||
return value.value_or(0);
|
||||
} else if constexpr (std::is_same<T, double>::value) {
|
||||
auto value = var->DoubleValue();
|
||||
return value.value_or(0.0);
|
||||
}
|
||||
return _value;
|
||||
|
||||
assert(false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
template<typename T> bool NumberVariable<T>::HasValidValue() const
|
||||
{
|
||||
if (_type == Type::FIXED_VALUE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
auto var = _variable.lock();
|
||||
if (!var) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if constexpr (std::is_same<T, int>::value) {
|
||||
auto value = var->IntValue();
|
||||
return value.has_value();
|
||||
} else if constexpr (std::is_same<T, double>::value) {
|
||||
auto value = var->IntValue();
|
||||
return value.has_value();
|
||||
}
|
||||
assert(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
template<typename T> NumberVariable<T>::operator T() const
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user