7#ifndef JLM_RVSDG_TYPE_HPP
8#define JLM_RVSDG_TYPE_HPP
56 return !(*
this ==
other);
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;
90is(
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
TypeKind
The kinds of types supported in rvsdg.
@ State
Designate a state type.
@ Value
Designate a value type.
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.