diff -r 340514805e40 -r 0d58f0301923 lemon/lemon_writer.h --- a/lemon/lemon_writer.h Tue Jun 14 23:21:31 2005 +0000 +++ b/lemon/lemon_writer.h Wed Jun 15 10:10:59 2005 +0000 @@ -55,13 +55,31 @@ template struct Constraints { void constraints() { - const Item item; bool b = writer.isIdWriter(); ignore_unused_variable_warning(b); writer.writeId(os, item); } _ItemIdWriter& writer; std::ostream& os; + const Item& item; + }; + + }; + + template + class ItemWriter { + public: + + void write(std::ostream&, const Item&) {} + + template + struct Constraints { + void constraints() { + writer.write(os, item); + } + _ItemWriter& writer; + std::ostream& os; + const Item& item; }; }; @@ -352,7 +370,8 @@ template NodeSetWriter& writeNodeMap(std::string name, const Map& map, const Writer& writer = Writer()) { - checkConcept, Map>(); + checkConcept, Map>(); + checkConcept<_writer_bits::ItemWriter, Writer>(); writers.push_back( make_pair(name, new MapWriter(map, writer))); return *this; @@ -517,7 +536,8 @@ template EdgeSetWriter& writeEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { - checkConcept, Map>(); + checkConcept, Map>(); + checkConcept<_writer_bits::ItemWriter, Writer>(); writers.push_back( make_pair(name, new MapWriter(map, writer))); return *this; @@ -698,7 +718,8 @@ template UndirEdgeSetWriter& writeUndirEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { - checkConcept, Map>(); + checkConcept, Map>(); + checkConcept<_writer_bits::ItemWriter, Writer>(); writers.push_back( make_pair(name, new MapWriter(map, writer))); return *this; @@ -709,10 +730,8 @@ /// Add a new directed map writer command for the writer. template UndirEdgeSetWriter& writeEdgeMap(std::string name, const Map& map) { - checkConcept, Map>(); - writeUndirEdgeMap("+" + name, composeMap(forwardMap(graph), map)); - writeUndirEdgeMap("-" + name, composeMap(backwardMap(graph), map)); - return *this; + return writeEdgeMap, Map>(name, map); } /// \brief Add a new directed map writer command for the writer. @@ -721,7 +740,8 @@ template UndirEdgeSetWriter& writeEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { - checkConcept, Map>(); + checkConcept, Map>(); + checkConcept<_writer_bits::ItemWriter, Writer>(); writeUndirEdge("+" + name, composeMap(forwardMap(graph), map), writer); writeUndirEdge("-" + name, composeMap(backwardMap(graph), map), writer); return *this; @@ -1160,6 +1180,7 @@ AttributeWriter& writeAttribute(const std::string& name, const Value& value, const Writer& writer = Writer()) { + checkConcept<_writer_bits::ItemWriter, Writer>(); writers.push_back(make_pair(name, new ValueWriter (value, writer))); return *this;