18 std::vector<std::shared_ptr<const
jlm::rvsdg::
Type>> argumentTypes,
19 std::vector<std::shared_ptr<const
jlm::rvsdg::
Type>> resultTypes)
21 ArgumentTypes_(std::move(argumentTypes)),
22 ResultTypes_(std::move(resultTypes))
38 ss << argtype->debug_string();
50 ss << restype->debug_string();
59 if (
auto fn =
dynamic_cast<const FunctionType *
>(&other))
61 if (ArgumentTypes_.size() != fn->ArgumentTypes_.size()
62 || ResultTypes_.size() != fn->ResultTypes_.size())
66 for (std::size_t n = 0; n < ArgumentTypes_.size(); ++n)
68 if (*ArgumentTypes_[n] != *fn->ArgumentTypes_[n])
73 for (std::size_t n = 0; n < ResultTypes_.size(); ++n)
75 if (*ResultTypes_[n] != *fn->ResultTypes_[n])
114 std::shared_ptr<const FunctionType>
116 std::vector<std::shared_ptr<const jlm::rvsdg::Type>> argumentTypes,
117 std::vector<std::shared_ptr<const jlm::rvsdg::Type>> resultTypes)
119 return std::make_shared<FunctionType>(std::move(argumentTypes), std::move(resultTypes));
FunctionType(std::vector< std::shared_ptr< const jlm::rvsdg::Type >> argumentTypes, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> resultTypes)
std::vector< std::shared_ptr< const jlm::rvsdg::Type > > ResultTypes_
static std::shared_ptr< const FunctionType > Create(std::vector< std::shared_ptr< const jlm::rvsdg::Type >> argumentTypes, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> resultTypes)
~FunctionType() noexcept override
std::string debug_string() const override
bool operator==(const jlm::rvsdg::Type &other) const noexcept override
TypeKind Kind() const noexcept override
Return the kind of this type.
std::vector< std::shared_ptr< const jlm::rvsdg::Type > > ArgumentTypes_
std::size_t ComputeHash() const noexcept override
TypeKind
The kinds of types supported in rvsdg.
@ Value
Designate a value type.
void combineHashesWithSeed(std::size_t &seed, std::size_t hash, Args... args)