// This file contains utility classes and macros for implementing values // As consumers, you should not include this header as it contains unnecessary symbols and can pollute your files // for this reason, classes here aren't forward-declared in fwd.hpp either. #pragma once #include "Utils/RTTI.hpp" #include #define CHECK_VALUE_TYPE(Type, value) \ if (!is_a(value)) { \ return false; \ } #define CHECK_VALUE_TYPE_AND_MOVE(Type, dest, value) \ if (auto ptr = dyn_cast(value)) { \ dest = std::move(*ptr); \ } else { \ return false; \ }