20 #ifndef LIMI_DATASTRUCTURES_GENERICS_H
21 #define LIMI_DATASTRUCTURES_GENERICS_H
28 typedef std::function<void(std::ostream&)> printable;
31 inline std::ostream& operator<<(std::ostream& os,
const printable& p) {
36 inline std::stringstream& operator<<(std::stringstream& os,
const printable& p) {
67 inline bool operator()(
const Key& a,
const Key& b)
const {
83 inline printable operator()(
const Key& item)
const {
84 return [&](std::ostream& o) {
print(item, o);};
92 virtual void print(
const Key& item, std::ostream& out)
const = 0;
103 template<
class Key >
105 virtual void print(
const Key& item, std::ostream& out)
const override {
112 #endif // LIMI_DATASTRUCTURES_GENERICS_H
The printer base is what custom printers need to inherit from.
Definition: generics.h:81
The main namespace of the library.
Definition: antichain_algo.h:40
This class simply states that no symbols are independent.
Definition: generics.h:66
Definition: generics.h:30
The template for the independence relation.
Definition: generics.h:53
virtual void print(const Key &item, std::ostream &out) const override
Prints an item to the out stream.
Definition: generics.h:105
The default implementation of Limi::printer_base.
Definition: generics.h:104
virtual void print(const Key &item, std::ostream &out) const =0
Prints an item to the out stream.