This commit is contained in:
ProgramSnail 2023-05-07 20:21:19 +03:00
parent 890bd90eba
commit 3fca384446
7 changed files with 510 additions and 23 deletions

View file

@ -111,25 +111,25 @@ struct Value { // DefinedValue ??
class ValueManager {
public:
template<typename T>
utils::IdType AddType(const T& value, utils::ValueType value_type) {
utils::IdType AddValue(const T& value, utils::ValueType value_type) {
values_.push_back(std::pair<Value, utils::ValueType> {value, value_type});
return values_.size() - 1;
}
utils::IdType AddAnyType(Value&& value, utils::ValueType value_type) {
utils::IdType AddAnyValue(Value&& value, utils::ValueType value_type) {
values_.push_back(std::pair<Value, utils::ValueType> {std::move(value), value_type});
return values_.size() - 1;
}
template<typename T>
std::optional<T*> GetType(utils::IdType value_id) {
std::optional<T*> GetValue(utils::IdType value_id) {
if (!std::holds_alternative<T>(values_.at(value_id).first.value)) {
return std::nullopt;
}
return &std::get<T>(values_.at(value_id).first.value);
}
Value* GetAnyType(utils::IdType value_id) {
Value* GetAnyValue(utils::IdType value_id) {
return &values_.at(value_id).first;
}