Changeset 1909:2d806130e700 in lemon-0.x for lemon/lemon_writer.h
- Timestamp:
- 01/26/06 16:42:13 (18 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2484
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/lemon_writer.h
r1901 r1909 92 92 class ForwardComposeMap { 93 93 public: 94 typedef typename Graph::U ndirEdge Key;94 typedef typename Graph::UEdge Key; 95 95 typedef typename Map::Value Value; 96 96 … … 116 116 class BackwardComposeMap { 117 117 public: 118 typedef typename Graph::U ndirEdge Key;118 typedef typename Graph::UEdge Key; 119 119 typedef typename Map::Value Value; 120 120 … … 709 709 /// 710 710 /// The lemon format can store multiple undirected edgesets with several 711 /// maps. The undirected edgeset section's header line is \c \@u ndiredgeset712 /// \c u ndiredgeset_name, but the \c undiredgeset_name may be empty.711 /// maps. The undirected edgeset section's header line is \c \@uedgeset 712 /// \c uedgeset_name, but the \c uedgeset_name may be empty. 713 713 /// 714 714 /// The first line of the section contains the names of the maps separated … … 735 735 /// \relates LemonWriter 736 736 template <typename _Graph, typename _Traits = DefaultWriterTraits> 737 class U ndirEdgeSetWriter : public LemonWriter::SectionWriter {737 class UEdgeSetWriter : public LemonWriter::SectionWriter { 738 738 typedef LemonWriter::SectionWriter Parent; 739 739 public: … … 743 743 typedef typename Graph::Node Node; 744 744 typedef typename Graph::Edge Edge; 745 typedef typename Graph::U ndirEdge UndirEdge;745 typedef typename Graph::UEdge UEdge; 746 746 747 747 /// \brief Constructor. 748 748 /// 749 /// Constructor for U ndirEdgeSetWriter. It creates the UndirEdgeSetWriter749 /// Constructor for UEdgeSetWriter. It creates the UEdgeSetWriter 750 750 /// and attach it into the given LemonWriter. It will write node labels by 751 751 /// the \c _nodeLabelWriter. If the \c _forceLabelMap parameter is true … … 753 753 /// "label" named map. 754 754 template <typename NodeLabelWriter> 755 U ndirEdgeSetWriter(LemonWriter& _writer, const Graph& _graph,755 UEdgeSetWriter(LemonWriter& _writer, const Graph& _graph, 756 756 const NodeLabelWriter& _nodeLabelWriter, 757 757 const std::string& _name = std::string(), … … 766 766 /// \brief Destructor. 767 767 /// 768 /// Destructor for U ndirEdgeSetWriter.769 virtual ~U ndirEdgeSetWriter() {768 /// Destructor for UEdgeSetWriter. 769 virtual ~UEdgeSetWriter() { 770 770 typename MapWriters::iterator it; 771 771 for (it = writers.begin(); it != writers.end(); ++it) { … … 775 775 776 776 private: 777 U ndirEdgeSetWriter(const UndirEdgeSetWriter&);778 void operator=(const U ndirEdgeSetWriter&);777 UEdgeSetWriter(const UEdgeSetWriter&); 778 void operator=(const UEdgeSetWriter&); 779 779 780 780 public: … … 784 784 /// Add a new undirected map writer command for the writer. 785 785 template <typename Map> 786 U ndirEdgeSetWriter& writeUndirEdgeMap(std::string name, const Map& map) {787 return writeU ndirEdgeMap<typename Traits::786 UEdgeSetWriter& writeUEdgeMap(std::string name, const Map& map) { 787 return writeUEdgeMap<typename Traits:: 788 788 template Writer<typename Map::Value>, Map>(name, map); 789 789 } … … 793 793 /// Add a new undirected map writer command for the writer. 794 794 template <typename Writer, typename Map> 795 U ndirEdgeSetWriter& writeUndirEdgeMap(std::string name, const Map& map,795 UEdgeSetWriter& writeUEdgeMap(std::string name, const Map& map, 796 796 const Writer& writer = Writer()) { 797 checkConcept<concept::ReadMap<U ndirEdge, typename Map::Value>, Map>();797 checkConcept<concept::ReadMap<UEdge, typename Map::Value>, Map>(); 798 798 checkConcept<_writer_bits::ItemWriter<typename Map::Value>, Writer>(); 799 799 writers.push_back( 800 800 make_pair(name, new _writer_bits:: 801 MapWriter<U ndirEdge, Map, Writer>(map, writer)));801 MapWriter<UEdge, Map, Writer>(map, writer))); 802 802 return *this; 803 803 } … … 807 807 /// Add a new directed map writer command for the writer. 808 808 template <typename Map> 809 U ndirEdgeSetWriter& writeEdgeMap(std::string name, const Map& map) {809 UEdgeSetWriter& writeEdgeMap(std::string name, const Map& map) { 810 810 return writeEdgeMap<typename Traits:: 811 811 template Writer<typename Map::Value>, Map>(name, map); … … 816 816 /// Add a new directed map writer command for the writer. 817 817 template <typename Writer, typename Map> 818 U ndirEdgeSetWriter& writeEdgeMap(std::string name, const Map& map,818 UEdgeSetWriter& writeEdgeMap(std::string name, const Map& map, 819 819 const Writer& writer = Writer()) { 820 820 checkConcept<concept::ReadMap<Edge, typename Map::Value>, Map>(); 821 821 checkConcept<_writer_bits::ItemWriter<typename Map::Value>, Writer>(); 822 writeU ndirEdge("+" + name,822 writeUEdge("+" + name, 823 823 _writer_bits::forwardComposeMap(graph, map), writer); 824 writeU ndirEdge("-" + name,824 writeUEdge("-" + name, 825 825 _writer_bits::backwardComposeMap(graph, map), writer); 826 826 return *this; … … 833 833 /// It gives back the header of the section. 834 834 virtual std::string header() { 835 return "@u ndiredgeset " + name;835 return "@uedgeset " + name; 836 836 } 837 837 … … 858 858 } 859 859 os << std::endl; 860 for (typename Graph::U ndirEdgeIt it(graph); it != INVALID; ++it) {860 for (typename Graph::UEdgeIt it(graph); it != INVALID; ++it) { 861 861 nodeLabelWriter->write(os, graph.source(it)); 862 862 os << '\t'; … … 892 892 /// undirected edge. Otherwise if the \c forceLabel parameter was true it 893 893 /// will write its id in the graph. 894 void writeLabel(std::ostream& os, const U ndirEdge& item) const {894 void writeLabel(std::ostream& os, const UEdge& item) const { 895 895 if (forceLabelMap) { 896 896 os << graph.id(item); … … 923 923 924 924 typedef std::vector<std::pair<std::string, _writer_bits:: 925 MapWriterBase<U ndirEdge>*> > MapWriters;925 MapWriterBase<UEdge>*> > MapWriters; 926 926 MapWriters writers; 927 927 928 _writer_bits::MapWriterBase<U ndirEdge>* labelMap;928 _writer_bits::MapWriterBase<UEdge>* labelMap; 929 929 bool forceLabelMap; 930 930 … … 1100 1100 /// \brief SectionWriter for writing named undirected edges. 1101 1101 /// 1102 /// The undirected edges section's header line is \c \@u ndiredges1103 /// \c u ndiredges_name, but the \c undiredges_name may be empty.1102 /// The undirected edges section's header line is \c \@uedges 1103 /// \c uedges_name, but the \c uedges_name may be empty. 1104 1104 /// 1105 1105 /// Each line in the section contains the name of the undirected edge and … … 1108 1108 /// \relates LemonWriter 1109 1109 template <typename _Graph> 1110 class U ndirEdgeWriter : public LemonWriter::SectionWriter {1110 class UEdgeWriter : public LemonWriter::SectionWriter { 1111 1111 typedef LemonWriter::SectionWriter Parent; 1112 1112 typedef _Graph Graph; 1113 1113 typedef typename Graph::Node Node; 1114 1114 typedef typename Graph::Edge Edge; 1115 typedef typename Graph::U ndirEdge UndirEdge;1115 typedef typename Graph::UEdge UEdge; 1116 1116 public: 1117 1117 1118 1118 /// \brief Constructor. 1119 1119 /// 1120 /// Constructor for U ndirEdgeWriter. It creates the UndirEdgeWriter and1120 /// Constructor for UEdgeWriter. It creates the UEdgeWriter and 1121 1121 /// attach it into the given LemonWriter. The given \c _LabelWriter 1122 1122 /// will write the undirected edges' label what can be an undirected 1123 1123 /// edgeset writer. 1124 1124 template <typename _LabelWriter> 1125 U ndirEdgeWriter(LemonWriter& _writer, const _LabelWriter& _labelWriter,1125 UEdgeWriter(LemonWriter& _writer, const _LabelWriter& _labelWriter, 1126 1126 const std::string& _name = std::string()) 1127 1127 : Parent(_writer), name(_name) { 1128 1128 checkConcept<_writer_bits::ItemLabelWriter<Edge>, _LabelWriter>(); 1129 checkConcept<_writer_bits::ItemLabelWriter<U ndirEdge>, _LabelWriter>();1130 u ndirEdgeLabelWriter.reset(new _writer_bits::1131 LabelWriter<U ndirEdge, _LabelWriter>(_labelWriter));1129 checkConcept<_writer_bits::ItemLabelWriter<UEdge>, _LabelWriter>(); 1130 uEdgeLabelWriter.reset(new _writer_bits:: 1131 LabelWriter<UEdge, _LabelWriter>(_labelWriter)); 1132 1132 edgeLabelWriter.reset(new _writer_bits:: 1133 1133 LabelWriter<Edge, _LabelWriter>(_labelWriter)); … … 1136 1136 /// \brief Destructor. 1137 1137 /// 1138 /// Destructor for U ndirEdgeWriter.1139 virtual ~U ndirEdgeWriter() {}1140 private: 1141 U ndirEdgeWriter(const UndirEdgeWriter&);1142 void operator=(const U ndirEdgeWriter&);1143 1144 public: 1145 1146 /// \brief Add an edge writer command for the U ndirEdgeWriter.1147 /// 1148 /// Add an edge writer command for the U ndirEdgeWriter.1138 /// Destructor for UEdgeWriter. 1139 virtual ~UEdgeWriter() {} 1140 private: 1141 UEdgeWriter(const UEdgeWriter&); 1142 void operator=(const UEdgeWriter&); 1143 1144 public: 1145 1146 /// \brief Add an edge writer command for the UEdgeWriter. 1147 /// 1148 /// Add an edge writer command for the UEdgeWriter. 1149 1149 void writeEdge(const std::string& name, const Edge& item) { 1150 1150 edgeWriters.push_back(make_pair(name, &item)); 1151 1151 } 1152 1152 1153 /// \brief Add an undirected edge writer command for the U ndirEdgeWriter.1154 /// 1155 /// Add an undirected edge writer command for the U ndirEdgeWriter.1156 void writeU ndirEdge(const std::string& name, const UndirEdge& item) {1157 u ndirEdgeWriters.push_back(make_pair(name, &item));1153 /// \brief Add an undirected edge writer command for the UEdgeWriter. 1154 /// 1155 /// Add an undirected edge writer command for the UEdgeWriter. 1156 void writeUEdge(const std::string& name, const UEdge& item) { 1157 uEdgeWriters.push_back(make_pair(name, &item)); 1158 1158 } 1159 1159 … … 1164 1164 /// It gives back the header of the section. 1165 1165 virtual std::string header() { 1166 return "@u ndiredges " + name;1166 return "@uedges " + name; 1167 1167 } 1168 1168 … … 1174 1174 throw DataFormatError("Cannot find undirected edgeset or label map"); 1175 1175 } 1176 if (!u ndirEdgeLabelWriter->isLabelWriter()) {1176 if (!uEdgeLabelWriter->isLabelWriter()) { 1177 1177 throw DataFormatError("Cannot find undirected edgeset or label map"); 1178 1178 } 1179 for (int i = 0; i < (int)u ndirEdgeWriters.size(); ++i) {1180 os << u ndirEdgeWriters[i].first << ' ';1181 u ndirEdgeLabelWriter->write(os, *(undirEdgeWriters[i].second));1179 for (int i = 0; i < (int)uEdgeWriters.size(); ++i) { 1180 os << uEdgeWriters[i].first << ' '; 1181 uEdgeLabelWriter->write(os, *(uEdgeWriters[i].second)); 1182 1182 os << std::endl; 1183 1183 } … … 1194 1194 1195 1195 typedef std::vector<std::pair<std::string, 1196 const U ndirEdge*> > UndirEdgeWriters;1197 U ndirEdgeWriters undirEdgeWriters;1198 std::auto_ptr<_writer_bits::LabelWriterBase<U ndirEdge> > undirEdgeLabelWriter;1196 const UEdge*> > UEdgeWriters; 1197 UEdgeWriters uEdgeWriters; 1198 std::auto_ptr<_writer_bits::LabelWriterBase<UEdge> > uEdgeLabelWriter; 1199 1199 1200 1200 typedef std::vector<std::pair<std::string, const Edge*> > EdgeWriters;
Note: See TracChangeset
for help on using the changeset viewer.