souffle  2.0.2-371-g6315b36
Data Structures | Public Member Functions | Static Private Member Functions
souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer Class Reference

Database labeller. More...

#include <MagicSet.h>

Inheritance diagram for souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer:
Inheritance graph
Collaboration diagram for souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer:
Collaboration graph

Data Structures

class  NegativeLabellingTransformer
 Runs the first stage of the labelling algorithm. More...
 
class  PositiveLabellingTransformer
 Runs the second stage of the labelling algorithm. More...
 

Public Member Functions

LabelDatabaseTransformerclone () const override
 
std::string getName () const override
 
 LabelDatabaseTransformer ()
 
- Public Member Functions inherited from souffle::ast::transform::PipelineTransformer
PipelineTransformerclone () const override
 
void disableTransformers (const std::set< std::string > &transforms) override
 
std::string getName () const override
 
std::vector< Transformer * > getSubtransformers () const override
 
template<typename... Args>
 PipelineTransformer (Args... args)
 
 PipelineTransformer (VecOwn< Transformer > pipeline)
 
void setDebugReport () override
 
void setVerbosity (bool verbose) override
 
- Public Member Functions inherited from souffle::ast::transform::MetaTransformer
bool applySubtransformer (TranslationUnit &translationUnit, Transformer *transformer)
 
- Public Member Functions inherited from souffle::ast::transform::Transformer
bool apply (TranslationUnit &translationUnit)
 
virtual ~Transformer ()=default
 

Static Private Member Functions

static bool isNegativelyLabelled (const QualifiedName &name)
 Check if a relation is negatively labelled. More...
 

Additional Inherited Members

- Protected Member Functions inherited from souffle::ast::transform::PipelineTransformer
bool transform (TranslationUnit &translationUnit) override
 
- Protected Attributes inherited from souffle::ast::transform::PipelineTransformer
VecOwn< Transformerpipeline
 
- Protected Attributes inherited from souffle::ast::transform::MetaTransformer
bool verbose = false
 

Detailed Description

Database labeller.

Runs the magic-set labelling algorithm. Necessary for supporting negation in MST.

Definition at line 159 of file MagicSet.h.

Constructor & Destructor Documentation

◆ LabelDatabaseTransformer()

souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer::LabelDatabaseTransformer ( )
inline

Definition at line 164 of file MagicSet.h.

165  : PipelineTransformer(mk<NegativeLabellingTransformer>(), mk<PositiveLabellingTransformer>()) {}

Referenced by clone().

Member Function Documentation

◆ clone()

LabelDatabaseTransformer* souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer::clone ( ) const
inlineoverridevirtual

Implements souffle::ast::transform::MetaTransformer.

Definition at line 171 of file MagicSet.h.

171  {
172  return new LabelDatabaseTransformer();
173  }

References LabelDatabaseTransformer().

Here is the call graph for this function:

◆ getName()

std::string souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer::getName ( ) const
inlineoverridevirtual

Implements souffle::ast::transform::Transformer.

Definition at line 167 of file MagicSet.h.

167  {
168  return "LabelDatabaseTransformer";
169  }

◆ isNegativelyLabelled()

bool souffle::ast::transform::LabelDatabaseTransformer::isNegativelyLabelled ( const QualifiedName name)
staticprivate

Check if a relation is negatively labelled.

Definition at line 795 of file MagicSet.cpp.

795  {
796  const auto& sccGraph = *translationUnit.getAnalysis<analysis::SCCGraphAnalysis>();
797  Program& program = translationUnit.getProgram();
798 
799  std::set<QualifiedName> relationsToLabel;

References souffle::ast::TranslationUnit::getAnalysis(), and souffle::ast::TranslationUnit::getProgram().

Here is the call graph for this function:

The documentation for this class was generated from the following files:
souffle::ast::transform::PipelineTransformer::PipelineTransformer
PipelineTransformer(Args... args)
Definition: Pipeline.h:53
souffle::ast::transform::MagicSetTransformer::LabelDatabaseTransformer::LabelDatabaseTransformer
LabelDatabaseTransformer()
Definition: MagicSet.h:164