souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
38 class IO :
public RelationStatement {
49 const std::string
get(
const std::string& key)
const {
58 void print(std::ostream& os,
int tabpos)
const override {
59 os <<
times(
" ", tabpos);
61 os <<
join(
directives,
",", [](std::ostream& out,
const auto& arg) {
62 out << arg.first <<
"=\"" <<
escape(arg.second) <<
"\"";
64 os <<
")" << std::endl;
67 bool equal(
const Node& node)
const override {
68 const auto& other =
static_cast<const IO&
>(node);
73 const std::map<std::string, std::string>
directives;
IO(std::string rel, std::map< std::string, std::string > directives)
bool equal(const Node &node) const override
Equality check for two RAM nodes.
bool equal(const Node &node) const override
Equality check for two RAM nodes.
RelationStatement(std::string rel)
std::string relation
Relation.
const std::string get(const std::string &key) const
@get value of I/O directive
detail::multiplying_printer< T > times(const T &value, unsigned num)
A utility printing a given value multiple times.
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...
const std::map< std::string, std::string > directives
IO directives.
void print(std::ostream &os, int tabpos) const override
Pretty print with indentation.
IO * clone() const override
Create a clone (i.e.
const std::map< std::string, std::string > & getDirectives() const
get I/O directives
I/O statement for a relation.
std::string escape(const std::string &inputString, const std::string &needle, const std::string &replacement)
void rel(size_t limit, bool showLimit=true)