mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-06 06:58:45 +00:00
execute_visitor value types fixed
This commit is contained in:
parent
9aaac90ef6
commit
6bf64acc4d
5 changed files with 146 additions and 128 deletions
|
|
@ -49,11 +49,30 @@ public:
|
|||
return value_manager_.GetValueType(value_id);
|
||||
}
|
||||
|
||||
void ModifiyValue(utils::IdType value_id, utils::ValueType new_value_type) {
|
||||
GetValueType(value_id) = new_value_type;
|
||||
}
|
||||
|
||||
utils::IdType ToModifiedValue(utils::IdType value_id, utils::ValueType new_value_type) {
|
||||
Value value = *GetAnyValue(value_id);
|
||||
return AddAnyValue(std::move(value), new_value_type);
|
||||
}
|
||||
|
||||
utils::IdType ToModifiedValueCopy(utils::IdType value_id,
|
||||
utils::ValueType new_value_type) {
|
||||
Value* value = GetAnyValue(value_id);
|
||||
return value->DeepCopy(value_manager_, new_value_type);
|
||||
}
|
||||
|
||||
// make deep copy if not temporary
|
||||
utils::IdType ToTemporaryValue(utils::IdType value_id) {
|
||||
if (GetValueType(value_id) == utils::ValueType::Tmp) {
|
||||
return value_id;
|
||||
}
|
||||
|
||||
return ToModifiedValueCopy(value_id, utils::ValueType::Tmp);
|
||||
}
|
||||
|
||||
ValueManager* GetValueManager() {
|
||||
return &value_manager_;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue