Changeset 1115:444f69240539 in lemon-0.x for src/work/deba/graph_writer.h
- Timestamp:
- 02/01/05 16:56:37 (19 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1514
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/work/deba/graph_writer.h
r1037 r1115 55 55 56 56 void write(std::ostream& os, const std::string& value) { 57 char c;58 57 os << "\""; 59 58 if (escaped) { 60 59 ostringstream ls; 61 for (int i = 0; i < value.size(); ++i) {60 for (int i = 0; i < (int)value.size(); ++i) { 62 61 writeEscape(ls, value[i]); 63 62 } … … 137 136 138 137 ~GraphWriter() { 139 140 for (typename NodeMapWriters::iterator it = node_map_writers.begin();it != node_map_writers.end(); ++it) {138 for (typename NodeMapWriters::iterator it = node_map_writers.begin(); 139 it != node_map_writers.end(); ++it) { 141 140 delete it->second; 142 141 } 143 142 144 for (typename EdgeMapWriters::iterator it = edge_map_writers.begin(); it != edge_map_writers.end(); ++it) { 143 for (typename EdgeMapWriters::iterator it = edge_map_writers.begin(); 144 it != edge_map_writers.end(); ++it) { 145 145 delete it->second; 146 146 } … … 151 151 152 152 template <typename Map> 153 GraphWriter& writeNodeMap(std::string name, const Map& map) { 154 return writeNodeMap<typename WriterTraits::template Writer<typename Map::Value>, Map>(name, map); 153 GraphWriter& addNodeMap(std::string name, const Map& map) { 154 return addNodeMap<typename WriterTraits::template Writer< 155 typename Map::Value>, Map>(name, map); 155 156 } 156 157 157 158 template <typename Writer, typename Map> 158 GraphWriter& writeNodeMap(std::string name, const Map& map, const Writer& writer = Writer()) { 159 GraphWriter& addNodeMap(std::string name, const Map& map, 160 const Writer& writer = Writer()) { 159 161 // if (node_map_writers.find(name) != node_map_writers.end()) { 160 // throw Exception() << "Multiple write rule for node map: " << name; 162 // throw Exception() << "Multiple write rule for node map: " 163 // << name; 161 164 // } 162 node_map_writers.push_back(make_pair(name, new MapWriter<Node, Map, Writer>(map, writer))); 165 node_map_writers.push_back( 166 make_pair(name, new MapWriter<Node, Map, Writer>(map, writer))); 163 167 return *this; 164 168 } … … 167 171 168 172 template <typename Map> 169 GraphWriter& writeEdgeMap(std::string name, const Map& map) {170 return writeEdgeMap<typename WriterTraits::template Writer<typename Map::Value>, Map>(name, map);173 GraphWriter& addEdgeMap(std::string name, const Map& map) { 174 return addEdgeMap<typename WriterTraits::template Writer<typename Map::Value>, Map>(name, map); 171 175 } 172 176 173 177 174 178 template <typename Writer, typename Map> 175 GraphWriter& writeEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) {179 GraphWriter& addEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { 176 180 // if (edge_map_writers.find(name) != edge_map_writers.end()) { 177 181 // throw Exception() << "Multiple write rule for edge map: " << name; … … 182 186 183 187 // Node rules 184 GraphWriter& writeNode(std::string name, const Node& node) {188 GraphWriter& addNode(std::string name, const Node& node) { 185 189 // if (node_writers.find(name) != node_writers.end()) { 186 190 // throw Exception() << "Multiple write rule for node"; 187 191 // } 188 192 node_writers.push_back(make_pair(name, node)); 193 return *this; 189 194 } 190 195 191 196 // Edge rules 192 197 193 GraphWriter& writeEdge(std::string name, const Edge& edge) {198 GraphWriter& addEdge(std::string name, const Edge& edge) { 194 199 // if (edge_writers.find(name) != edge_writers.end()) { 195 200 // throw Exception() << "Multiple write rule for edge"; 196 201 // } 197 202 edge_writers.push_back(make_pair(name, edge)); 203 return *this; 198 204 } 199 205 … … 211 217 if (node_map_writers.size() == 0) return; 212 218 os << "@nodeset" << std::endl; 213 for (int i = 0; i < node_map_writers.size(); ++i) {219 for (int i = 0; i < (int)node_map_writers.size(); ++i) { 214 220 os << node_map_writers[i].first << '\t'; 215 221 } 216 222 os << std::endl; 217 223 for (NodeIt it(graph); it != INVALID; ++it) { 218 for (int i = 0; i < node_map_writers.size(); ++i) {224 for (int i = 0; i < (int)node_map_writers.size(); ++i) { 219 225 node_map_writers[i].second->write(os, it); 220 226 } … … 231 237 os << "@edgeset" << std::endl; 232 238 os << "\t\t"; 233 for (int i = 0; i < edge_map_writers.size(); ++i) {239 for (int i = 0; i < (int)edge_map_writers.size(); ++i) { 234 240 os << edge_map_writers[i].first << '\t'; 235 241 } … … 238 244 node_map_writers[0].second->write(os, graph.source(it)); 239 245 node_map_writers[0].second->write(os, graph.target(it)); 240 for (int i = 0; i < edge_map_writers.size(); ++i) {246 for (int i = 0; i < (int)edge_map_writers.size(); ++i) { 241 247 edge_map_writers[i].second->write(os, it); 242 248 } … … 251 257 } 252 258 os << "@nodes" << std::endl; 253 for (int i = 0; i < node_writers.size(); ++i) {259 for (int i = 0; i < (int)node_writers.size(); ++i) { 254 260 os << node_writers[i].first << '\t'; 255 261 node_map_writers[0].second->write(os, node_writers[i].second); … … 264 270 } 265 271 os << "@edges" << std::endl; 266 for (int i = 0; i < edge_writers.size(); ++i) {272 for (int i = 0; i < (int)edge_writers.size(); ++i) { 267 273 os << edge_writers[i].first << '\t'; 268 274 edge_map_writers[0].second->write(os, edge_writers[i].second); … … 296 302 297 303 virtual void write(std::ostream& os, const Item& item) { 298 Value value;299 304 writer.write(os, map[item]); 300 305 } … … 304 309 305 310 306 typedef std::vector< std::pair<std::string, WriterBase<Node>*> > NodeMapWriters; 311 typedef std::vector< std::pair<std::string, WriterBase<Node>*> > 312 NodeMapWriters; 307 313 NodeMapWriters node_map_writers; 308 314 309 typedef std::vector< std::pair<std::string, WriterBase<Edge>*> > EdgeMapWriters; 315 typedef std::vector< std::pair<std::string, WriterBase<Edge>*> > 316 EdgeMapWriters; 310 317 EdgeMapWriters edge_map_writers; 311 318
Note: See TracChangeset
for help on using the changeset viewer.