Represent predicate parameters explicitly
This adds a vector of Parameter structs to PredicateDeclaration. In this way, the domain of each parameter can be tracked individually.
This commit is contained in:
@@ -245,9 +245,14 @@ struct PredicateDeclaration
|
||||
Hidden
|
||||
};
|
||||
|
||||
struct Parameter
|
||||
{
|
||||
Domain domain{Domain::Unknown};
|
||||
};
|
||||
|
||||
explicit PredicateDeclaration(std::string &&name, size_t arity)
|
||||
: name{std::move(name)},
|
||||
arity{arity}
|
||||
parameters{std::vector<Parameter>(arity)}
|
||||
{
|
||||
}
|
||||
|
||||
@@ -256,8 +261,13 @@ struct PredicateDeclaration
|
||||
PredicateDeclaration(PredicateDeclaration &&other) noexcept = default;
|
||||
PredicateDeclaration &operator=(PredicateDeclaration &&other) noexcept = default;
|
||||
|
||||
size_t arity() const noexcept
|
||||
{
|
||||
return parameters.size();
|
||||
}
|
||||
|
||||
std::string name;
|
||||
size_t arity;
|
||||
std::vector<Parameter> parameters;
|
||||
bool isUsed{false};
|
||||
bool isExternal{false};
|
||||
Visibility visibility{Visibility::Default};
|
||||
|
@@ -38,7 +38,7 @@ struct Context
|
||||
const auto matchesExistingPredicateDeclaration =
|
||||
[&](const auto &predicateDeclaration)
|
||||
{
|
||||
return (predicateDeclaration->arity == arity
|
||||
return (predicateDeclaration->arity() == arity
|
||||
&& strcmp(predicateDeclaration->name.c_str(), name) == 0);
|
||||
};
|
||||
|
||||
|
@@ -261,7 +261,7 @@ inline output::ColorStream &print(output::ColorStream &stream, const Predicate &
|
||||
|
||||
inline output::ColorStream &print(output::ColorStream &stream, const PredicateDeclaration &predicateDeclaration, PrintContext &, bool)
|
||||
{
|
||||
return (stream << predicateDeclaration.name << "/" << predicateDeclaration.arity);
|
||||
return (stream << predicateDeclaration.name << "/" << predicateDeclaration.arity());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
Reference in New Issue
Block a user