7 #ifndef JLM_RVSDG_TYPE_HPP
8 #define JLM_RVSDG_TYPE_HPP
46 inline constexpr
Type() noexcept
56 return !(*
this == other);
59 [[nodiscard]]
virtual std::string
67 [[nodiscard]]
virtual std::size_t
82 std::is_base_of<jlm::rvsdg::Type, T>::value,
83 "Template parameter T must be derived from jlm::rvsdg::Type.");
85 return dynamic_cast<const T *
>(&
type) !=
nullptr;
90 is(
const std::shared_ptr<const jlm::rvsdg::Type> &
type) noexcept
93 std::is_base_of<jlm::rvsdg::Type, T>::value,
94 "Template parameter T must be derived from jlm::rvsdg::Type.");
96 return dynamic_cast<const T *
>(
type.get()) !=
nullptr;
virtual std::string debug_string() const =0
virtual TypeKind Kind() const noexcept=0
Return the kind of this type.
virtual bool operator==(const jlm::rvsdg::Type &other) const noexcept=0
bool operator!=(const jlm::rvsdg::Type &other) const noexcept
virtual std::size_t ComputeHash() const noexcept=0
static bool is(const jlm::rvsdg::Input &input) noexcept
static std::string type(const Node *n)
TypeKind
The kinds of types supported in rvsdg.
@ State
Designate a state type.
@ Value
Designate a value type.