souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
37 return current->getQualifiedName() ==
relation->getQualifiedName();
39 assert(existingRelation ==
nullptr &&
"Redefinition of relation!");
45 const auto&
rel = *it;
46 if (
rel->getQualifiedName() == name) {
55 assert(clause !=
nullptr &&
"Undefined clause");
56 assert(clause->getHead() !=
nullptr &&
"Undefined head of the clause");
57 clauses.push_back(std::move(clause));
62 if (**it == *clause) {
72 if (**it == *directive) {
82 [&](
const Type* current) {
return current->getQualifiedName() ==
type->getQualifiedName(); });
83 assert(existingType ==
nullptr &&
"Redefinition of type!");
88 assert(pragma &&
"NULL pragma");
89 pragmas.push_back(std::move(pragma));
95 assert(existingFunctorDecl ==
nullptr &&
"Redefinition of functor!");
User-defined functor declaration.
std::vector< FunctorDeclaration * > getFunctorDeclarations() const
Return functor declarations.
VecOwn< Pragma > pragmas
Pragmas.
const std::string & getName() const
Return name.
VecOwn< Directive > directives
Directives.
VecOwn< Relation > relations
Program relations.
An abstract base class for types to be covered within a type environment.
VecOwn< Clause > clauses
Program clauses.
void addPragma(Own< Pragma > pragma)
bool removeRelationDecl(const QualifiedName &name)
Remove relation.
a directive has a type (e.g. input/output/printsize/limitsize), qualified relation name,...
void addType(Own< Type > type)
Add a type declaration.
void addClause(Own< Clause > clause)
Add a clause.
VecOwn< FunctorDeclaration > functors
External Functors.
std::vector< Relation * > getRelations() const
Return relations.
void clearComponents()
Remove components and components' instantiations.
void addRelation(Own< Relation > relation)
std::vector< Type * > getTypes() const
Return types.
C::value_type getIf(const C &container, std::function< bool(const typename C::value_type)> pred)
Returns the first element in a container that satisfies a given predicate, nullptr otherwise.
bool removeDirective(const Directive *directive)
Remove a directive.
void addFunctorDeclaration(Own< FunctorDeclaration > functor)
VecOwn< Component > components
Component definitions.
VecOwn< Type > types
Program types
Qualified Name class defines fully/partially qualified names to identify objects in components.
void rel(size_t limit, bool showLimit=true)
bool removeClause(const Clause *clause)
Remove a clause.
VecOwn< ComponentInit > instantiations
Component instantiations.