souffle  2.0.2-371-g6315b36
Public Member Functions | Static Public Attributes | Private Attributes
souffle::ast::analysis::IOTypeAnalysis Class Reference

#include <IOType.h>

Inheritance diagram for souffle::ast::analysis::IOTypeAnalysis:
Inheritance graph
Collaboration diagram for souffle::ast::analysis::IOTypeAnalysis:
Collaboration graph

Public Member Functions

std::size_t getLimitSize (const Relation *relation) const
 
 IOTypeAnalysis ()
 
bool isInput (const Relation *relation) const
 
bool isIO (const Relation *relation) const
 
bool isLimitSize (const Relation *relation) const
 
bool isOutput (const Relation *relation) const
 
bool isPrintSize (const Relation *relation) const
 
void print (std::ostream &os) const override
 print the analysis result in HTML format More...
 
void run (const TranslationUnit &translationUnit) override
 run analysis for a Ast translation unit More...
 
- Public Member Functions inherited from souffle::ast::analysis::Analysis
 Analysis (std::string identifier)
 
virtual const std::string & getName () const
 get name of the analysis More...
 
virtual ~Analysis ()=default
 

Static Public Attributes

static constexpr const char * name = "IO-type-analysis"
 

Private Attributes

std::set< const Relation * > inputRelations
 
std::map< const Relation *, std::size_t > limitSize
 
std::set< const Relation * > limitSizeRelations
 
std::set< const Relation * > outputRelations
 
std::set< const Relation * > printSizeRelations
 

Additional Inherited Members

- Protected Attributes inherited from souffle::ast::analysis::Analysis
const std::string identifier
 

Detailed Description

Definition at line 39 of file IOType.h.

Constructor & Destructor Documentation

◆ IOTypeAnalysis()

souffle::ast::analysis::IOTypeAnalysis::IOTypeAnalysis ( )
inline

Definition at line 43 of file IOType.h.

43 {

References inputRelations, and relation.

Member Function Documentation

◆ getLimitSize()

std::size_t souffle::ast::analysis::IOTypeAnalysis::getLimitSize ( const Relation relation) const
inline

Definition at line 65 of file IOType.h.

67  {
69  }
70 
71 private:

◆ isInput()

bool souffle::ast::analysis::IOTypeAnalysis::isInput ( const Relation relation) const
inline

Definition at line 49 of file IOType.h.

51  {

◆ isIO()

bool souffle::ast::analysis::IOTypeAnalysis::isIO ( const Relation relation) const
inline

Definition at line 73 of file IOType.h.

◆ isLimitSize()

bool souffle::ast::analysis::IOTypeAnalysis::isLimitSize ( const Relation relation) const
inline

Definition at line 61 of file IOType.h.

61  {
62  return (*iter).second;
63  } else

◆ isOutput()

bool souffle::ast::analysis::IOTypeAnalysis::isOutput ( const Relation relation) const
inline

Definition at line 53 of file IOType.h.

55  {

Referenced by souffle::ast::analysis::SCCGraphAnalysis::getInternalRelations().

◆ isPrintSize()

bool souffle::ast::analysis::IOTypeAnalysis::isPrintSize ( const Relation relation) const
inline

Definition at line 57 of file IOType.h.

59  {

◆ print()

void souffle::ast::analysis::IOTypeAnalysis::print ( std::ostream &  ) const
overridevirtual

print the analysis result in HTML format

Reimplemented from souffle::ast::analysis::Analysis.

Definition at line 61 of file IOType.cpp.

◆ run()

void souffle::ast::analysis::IOTypeAnalysis::run ( const TranslationUnit )
overridevirtual

run analysis for a Ast translation unit

Implements souffle::ast::analysis::Analysis.

Definition at line 38 of file IOType.cpp.

39  {
44  outputRelations.insert(relation);
45  break;
48  assert(directive.hasParameter("n") && "limitsize has no n directive");
49  limitSize[relation] = stoi(directive.getParameter("n"));
50  break;
51  }
52  });
53 }
54 
55 void IOTypeAnalysis::print(std::ostream& os) const {
56  auto show = [](std::ostream& os, const Relation* r) { os << r->getQualifiedName(); };
57  os << "input relations: {" << join(inputRelations, ", ", show) << "}\n";
58  os << "output relations: {" << join(outputRelations, ", ", show) << "}\n";
59  os << "printsize relations: {" << join(printSizeRelations, ", ", show) << "}\n";

Field Documentation

◆ inputRelations

std::set<const Relation*> souffle::ast::analysis::IOTypeAnalysis::inputRelations
private

Definition at line 78 of file IOType.h.

Referenced by IOTypeAnalysis().

◆ limitSize

std::map<const Relation*, std::size_t> souffle::ast::analysis::IOTypeAnalysis::limitSize
private

Definition at line 82 of file IOType.h.

◆ limitSizeRelations

std::set<const Relation*> souffle::ast::analysis::IOTypeAnalysis::limitSizeRelations
private

Definition at line 81 of file IOType.h.

◆ name

constexpr const char* souffle::ast::analysis::IOTypeAnalysis::name = "IO-type-analysis"
staticconstexpr

Definition at line 41 of file IOType.h.

◆ outputRelations

std::set<const Relation*> souffle::ast::analysis::IOTypeAnalysis::outputRelations
private

Definition at line 79 of file IOType.h.

◆ printSizeRelations

std::set<const Relation*> souffle::ast::analysis::IOTypeAnalysis::printSizeRelations
private

Definition at line 80 of file IOType.h.


The documentation for this class was generated from the following files:
souffle::ast::analysis::IOTypeAnalysis::print
void print(std::ostream &os) const override
print the analysis result in HTML format
Definition: IOType.cpp:61
souffle::ast::analysis::IOTypeAnalysis::printSizeRelations
std::set< const Relation * > printSizeRelations
Definition: IOType.h:80
souffle::ast::analysis::IOTypeAnalysis::isOutput
bool isOutput(const Relation *relation) const
Definition: IOType.h:53
relation
Relation & relation
Definition: Reader.h:130
souffle::ast::analysis::IOTypeAnalysis::limitSize
std::map< const Relation *, std::size_t > limitSize
Definition: IOType.h:82
souffle::ast::analysis::IOTypeAnalysis::limitSizeRelations
std::set< const Relation * > limitSizeRelations
Definition: IOType.h:81
souffle::join
detail::joined_sequence< Iter, Printer > join(const Iter &a, const Iter &b, const std::string &sep, const Printer &p)
Creates an object to be forwarded to some output stream for printing sequences of elements interspers...
Definition: StreamUtil.h:175
souffle::ast::analysis::IOTypeAnalysis::outputRelations
std::set< const Relation * > outputRelations
Definition: IOType.h:79
souffle::ast::DirectiveType::printsize
@ printsize
souffle::ast::analysis::IOTypeAnalysis::isInput
bool isInput(const Relation *relation) const
Definition: IOType.h:49
souffle::ast::DirectiveType::input
@ input
souffle::ast::DirectiveType::output
@ output
souffle::ast::DirectiveType::limitsize
@ limitsize
souffle::ast::analysis::IOTypeAnalysis::isPrintSize
bool isPrintSize(const Relation *relation) const
Definition: IOType.h:57
souffle::ast::analysis::IOTypeAnalysis::inputRelations
std::set< const Relation * > inputRelations
Definition: IOType.h:78