Changeset 258:0310c8984732 in lemon
- Timestamp:
- 09/09/08 21:52:45 (16 years ago)
- Branch:
- default
- Parents:
- 257:8d76a7bf9961 (diff), 256:c760d691fe3c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Phase:
- public
- Location:
- lemon
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/bfs.h
r252 r258 231 231 232 232 template <class T> 233 struct DefPredMapTraits : public Traits {233 struct SetPredMapTraits : public Traits { 234 234 typedef T PredMap; 235 235 static PredMap *createPredMap(const Digraph &) … … 244 244 ///\ref PredMap type. 245 245 template <class T> 246 struct DefPredMap : public Bfs< Digraph, DefPredMapTraits<T> > {247 typedef Bfs< Digraph, DefPredMapTraits<T> > Create;246 struct SetPredMap : public Bfs< Digraph, SetPredMapTraits<T> > { 247 typedef Bfs< Digraph, SetPredMapTraits<T> > Create; 248 248 }; 249 249 250 250 template <class T> 251 struct DefDistMapTraits : public Traits {251 struct SetDistMapTraits : public Traits { 252 252 typedef T DistMap; 253 253 static DistMap *createDistMap(const Digraph &) … … 262 262 ///\ref DistMap type. 263 263 template <class T> 264 struct DefDistMap : public Bfs< Digraph, DefDistMapTraits<T> > {265 typedef Bfs< Digraph, DefDistMapTraits<T> > Create;264 struct SetDistMap : public Bfs< Digraph, SetDistMapTraits<T> > { 265 typedef Bfs< Digraph, SetDistMapTraits<T> > Create; 266 266 }; 267 267 268 268 template <class T> 269 struct DefReachedMapTraits : public Traits {269 struct SetReachedMapTraits : public Traits { 270 270 typedef T ReachedMap; 271 271 static ReachedMap *createReachedMap(const Digraph &) … … 280 280 ///\ref ReachedMap type. 281 281 template <class T> 282 struct DefReachedMap : public Bfs< Digraph, DefReachedMapTraits<T> > {283 typedef Bfs< Digraph, DefReachedMapTraits<T> > Create;282 struct SetReachedMap : public Bfs< Digraph, SetReachedMapTraits<T> > { 283 typedef Bfs< Digraph, SetReachedMapTraits<T> > Create; 284 284 }; 285 285 286 286 template <class T> 287 struct DefProcessedMapTraits : public Traits {287 struct SetProcessedMapTraits : public Traits { 288 288 typedef T ProcessedMap; 289 289 static ProcessedMap *createProcessedMap(const Digraph &) … … 298 298 ///\ref ProcessedMap type. 299 299 template <class T> 300 struct DefProcessedMap : public Bfs< Digraph, DefProcessedMapTraits<T> > {301 typedef Bfs< Digraph, DefProcessedMapTraits<T> > Create;302 }; 303 304 struct DefDigraphProcessedMapTraits : public Traits {300 struct SetProcessedMap : public Bfs< Digraph, SetProcessedMapTraits<T> > { 301 typedef Bfs< Digraph, SetProcessedMapTraits<T> > Create; 302 }; 303 304 struct SetStandardProcessedMapTraits : public Traits { 305 305 typedef typename Digraph::template NodeMap<bool> ProcessedMap; 306 306 static ProcessedMap *createProcessedMap(const Digraph &g) … … 315 315 ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>. 316 316 ///If you don't set it explicitly, it will be automatically allocated. 317 template <class T> 318 struct DefProcessedMapToBeDefaultMap : 319 public Bfs< Digraph, DefDigraphProcessedMapTraits> { 320 typedef Bfs< Digraph, DefDigraphProcessedMapTraits> Create; 317 struct SetStandardProcessedMap : 318 public Bfs< Digraph, SetStandardProcessedMapTraits > { 319 typedef Bfs< Digraph, SetStandardProcessedMapTraits > Create; 321 320 }; 322 321 … … 1066 1065 1067 1066 template<class T> 1068 struct DefPredMapBase : public Base {1067 struct SetPredMapBase : public Base { 1069 1068 typedef T PredMap; 1070 1069 static PredMap *createPredMap(const Digraph &) { return 0; }; 1071 DefPredMapBase(const TR &b) : TR(b) {}1070 SetPredMapBase(const TR &b) : TR(b) {} 1072 1071 }; 1073 1072 ///\brief \ref named-templ-param "Named parameter" … … 1077 1076 ///for setting \ref PredMap object. 1078 1077 template<class T> 1079 BfsWizard< DefPredMapBase<T> > predMap(const T &t)1078 BfsWizard<SetPredMapBase<T> > predMap(const T &t) 1080 1079 { 1081 1080 Base::_pred=reinterpret_cast<void*>(const_cast<T*>(&t)); 1082 return BfsWizard< DefPredMapBase<T> >(*this);1081 return BfsWizard<SetPredMapBase<T> >(*this); 1083 1082 } 1084 1083 1085 1084 template<class T> 1086 struct DefReachedMapBase : public Base {1085 struct SetReachedMapBase : public Base { 1087 1086 typedef T ReachedMap; 1088 1087 static ReachedMap *createReachedMap(const Digraph &) { return 0; }; 1089 DefReachedMapBase(const TR &b) : TR(b) {}1088 SetReachedMapBase(const TR &b) : TR(b) {} 1090 1089 }; 1091 1090 ///\brief \ref named-templ-param "Named parameter" … … 1095 1094 ///for setting \ref ReachedMap object. 1096 1095 template<class T> 1097 BfsWizard< DefReachedMapBase<T> > reachedMap(const T &t)1096 BfsWizard<SetReachedMapBase<T> > reachedMap(const T &t) 1098 1097 { 1099 1098 Base::_reached=reinterpret_cast<void*>(const_cast<T*>(&t)); 1100 return BfsWizard< DefReachedMapBase<T> >(*this);1099 return BfsWizard<SetReachedMapBase<T> >(*this); 1101 1100 } 1102 1101 1103 1102 template<class T> 1104 struct DefProcessedMapBase : public Base {1103 struct SetProcessedMapBase : public Base { 1105 1104 typedef T ProcessedMap; 1106 1105 static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; 1107 DefProcessedMapBase(const TR &b) : TR(b) {}1106 SetProcessedMapBase(const TR &b) : TR(b) {} 1108 1107 }; 1109 1108 ///\brief \ref named-templ-param "Named parameter" … … 1113 1112 ///for setting \ref ProcessedMap object. 1114 1113 template<class T> 1115 BfsWizard< DefProcessedMapBase<T> > processedMap(const T &t)1114 BfsWizard<SetProcessedMapBase<T> > processedMap(const T &t) 1116 1115 { 1117 1116 Base::_processed=reinterpret_cast<void*>(const_cast<T*>(&t)); 1118 return BfsWizard< DefProcessedMapBase<T> >(*this);1117 return BfsWizard<SetProcessedMapBase<T> >(*this); 1119 1118 } 1120 1119 1121 1120 template<class T> 1122 struct DefDistMapBase : public Base {1121 struct SetDistMapBase : public Base { 1123 1122 typedef T DistMap; 1124 1123 static DistMap *createDistMap(const Digraph &) { return 0; }; 1125 DefDistMapBase(const TR &b) : TR(b) {}1124 SetDistMapBase(const TR &b) : TR(b) {} 1126 1125 }; 1127 1126 ///\brief \ref named-templ-param "Named parameter" … … 1131 1130 ///for setting \ref DistMap object. 1132 1131 template<class T> 1133 BfsWizard< DefDistMapBase<T> > distMap(const T &t)1132 BfsWizard<SetDistMapBase<T> > distMap(const T &t) 1134 1133 { 1135 1134 Base::_dist=reinterpret_cast<void*>(const_cast<T*>(&t)); 1136 return BfsWizard< DefDistMapBase<T> >(*this);1135 return BfsWizard<SetDistMapBase<T> >(*this); 1137 1136 } 1138 1137 … … 1355 1354 ///@{ 1356 1355 template <class T> 1357 struct DefReachedMapTraits : public Traits {1356 struct SetReachedMapTraits : public Traits { 1358 1357 typedef T ReachedMap; 1359 1358 static ReachedMap *createReachedMap(const Digraph &digraph) { … … 1366 1365 /// \ref named-templ-param "Named parameter" for setting ReachedMap type. 1367 1366 template <class T> 1368 struct DefReachedMap : public BfsVisit< Digraph, Visitor,1369 DefReachedMapTraits<T> > {1370 typedef BfsVisit< Digraph, Visitor, DefReachedMapTraits<T> > Create;1367 struct SetReachedMap : public BfsVisit< Digraph, Visitor, 1368 SetReachedMapTraits<T> > { 1369 typedef BfsVisit< Digraph, Visitor, SetReachedMapTraits<T> > Create; 1371 1370 }; 1372 1371 ///@} -
lemon/bfs.h
r257 r258 1262 1262 /// the member functions of the \c Visitor class on every BFS event. 1263 1263 /// 1264 /// This interface of the BFS algorithm should be used in special cases 1265 /// when extra actions have to be performed in connection with certain 1266 /// events of the BFS algorithm. Otherwise consider to use Bfs or bfs() 1267 /// instead. 1268 /// 1264 1269 /// \tparam _Digraph The type of the digraph the algorithm runs on. 1265 1270 /// The default value is -
lemon/dfs.h
r252 r258 231 231 232 232 template <class T> 233 struct DefPredMapTraits : public Traits {233 struct SetPredMapTraits : public Traits { 234 234 typedef T PredMap; 235 235 static PredMap *createPredMap(const Digraph &) … … 244 244 ///\ref PredMap type. 245 245 template <class T> 246 struct DefPredMap : public Dfs<Digraph, DefPredMapTraits<T> > {247 typedef Dfs<Digraph, DefPredMapTraits<T> > Create;246 struct SetPredMap : public Dfs<Digraph, SetPredMapTraits<T> > { 247 typedef Dfs<Digraph, SetPredMapTraits<T> > Create; 248 248 }; 249 249 250 250 template <class T> 251 struct DefDistMapTraits : public Traits {251 struct SetDistMapTraits : public Traits { 252 252 typedef T DistMap; 253 253 static DistMap *createDistMap(const Digraph &) … … 262 262 ///\ref DistMap type. 263 263 template <class T> 264 struct DefDistMap : public Dfs< Digraph, DefDistMapTraits<T> > {265 typedef Dfs<Digraph, DefDistMapTraits<T> > Create;264 struct SetDistMap : public Dfs< Digraph, SetDistMapTraits<T> > { 265 typedef Dfs<Digraph, SetDistMapTraits<T> > Create; 266 266 }; 267 267 268 268 template <class T> 269 struct DefReachedMapTraits : public Traits {269 struct SetReachedMapTraits : public Traits { 270 270 typedef T ReachedMap; 271 271 static ReachedMap *createReachedMap(const Digraph &) … … 280 280 ///\ref ReachedMap type. 281 281 template <class T> 282 struct DefReachedMap : public Dfs< Digraph, DefReachedMapTraits<T> > {283 typedef Dfs< Digraph, DefReachedMapTraits<T> > Create;282 struct SetReachedMap : public Dfs< Digraph, SetReachedMapTraits<T> > { 283 typedef Dfs< Digraph, SetReachedMapTraits<T> > Create; 284 284 }; 285 285 286 286 template <class T> 287 struct DefProcessedMapTraits : public Traits {287 struct SetProcessedMapTraits : public Traits { 288 288 typedef T ProcessedMap; 289 289 static ProcessedMap *createProcessedMap(const Digraph &) … … 298 298 ///\ref ProcessedMap type. 299 299 template <class T> 300 struct DefProcessedMap : public Dfs< Digraph, DefProcessedMapTraits<T> > {301 typedef Dfs< Digraph, DefProcessedMapTraits<T> > Create;302 }; 303 304 struct DefDigraphProcessedMapTraits : public Traits {300 struct SetProcessedMap : public Dfs< Digraph, SetProcessedMapTraits<T> > { 301 typedef Dfs< Digraph, SetProcessedMapTraits<T> > Create; 302 }; 303 304 struct SetStandardProcessedMapTraits : public Traits { 305 305 typedef typename Digraph::template NodeMap<bool> ProcessedMap; 306 306 static ProcessedMap *createProcessedMap(const Digraph &g) … … 315 315 ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>. 316 316 ///If you don't set it explicitly, it will be automatically allocated. 317 template <class T> 318 struct DefProcessedMapToBeDefaultMap : 319 public Dfs< Digraph, DefDigraphProcessedMapTraits> { 320 typedef Dfs< Digraph, DefDigraphProcessedMapTraits> Create; 317 struct SetStandardProcessedMap : 318 public Dfs< Digraph, SetStandardProcessedMapTraits > { 319 typedef Dfs< Digraph, SetStandardProcessedMapTraits > Create; 321 320 }; 322 321 … … 1001 1000 1002 1001 template<class T> 1003 struct DefPredMapBase : public Base {1002 struct SetPredMapBase : public Base { 1004 1003 typedef T PredMap; 1005 1004 static PredMap *createPredMap(const Digraph &) { return 0; }; 1006 DefPredMapBase(const TR &b) : TR(b) {}1005 SetPredMapBase(const TR &b) : TR(b) {} 1007 1006 }; 1008 1007 ///\brief \ref named-templ-param "Named parameter" … … 1012 1011 ///for setting \ref PredMap object. 1013 1012 template<class T> 1014 DfsWizard< DefPredMapBase<T> > predMap(const T &t)1013 DfsWizard<SetPredMapBase<T> > predMap(const T &t) 1015 1014 { 1016 1015 Base::_pred=reinterpret_cast<void*>(const_cast<T*>(&t)); 1017 return DfsWizard< DefPredMapBase<T> >(*this);1016 return DfsWizard<SetPredMapBase<T> >(*this); 1018 1017 } 1019 1018 1020 1019 template<class T> 1021 struct DefReachedMapBase : public Base {1020 struct SetReachedMapBase : public Base { 1022 1021 typedef T ReachedMap; 1023 1022 static ReachedMap *createReachedMap(const Digraph &) { return 0; }; 1024 DefReachedMapBase(const TR &b) : TR(b) {}1023 SetReachedMapBase(const TR &b) : TR(b) {} 1025 1024 }; 1026 1025 ///\brief \ref named-templ-param "Named parameter" … … 1030 1029 ///for setting \ref ReachedMap object. 1031 1030 template<class T> 1032 DfsWizard< DefReachedMapBase<T> > reachedMap(const T &t)1031 DfsWizard<SetReachedMapBase<T> > reachedMap(const T &t) 1033 1032 { 1034 1033 Base::_reached=reinterpret_cast<void*>(const_cast<T*>(&t)); 1035 return DfsWizard< DefReachedMapBase<T> >(*this);1034 return DfsWizard<SetReachedMapBase<T> >(*this); 1036 1035 } 1037 1036 1038 1037 template<class T> 1039 struct DefProcessedMapBase : public Base {1038 struct SetProcessedMapBase : public Base { 1040 1039 typedef T ProcessedMap; 1041 1040 static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; 1042 DefProcessedMapBase(const TR &b) : TR(b) {}1041 SetProcessedMapBase(const TR &b) : TR(b) {} 1043 1042 }; 1044 1043 ///\brief \ref named-templ-param "Named parameter" … … 1048 1047 ///for setting \ref ProcessedMap object. 1049 1048 template<class T> 1050 DfsWizard< DefProcessedMapBase<T> > processedMap(const T &t)1049 DfsWizard<SetProcessedMapBase<T> > processedMap(const T &t) 1051 1050 { 1052 1051 Base::_processed=reinterpret_cast<void*>(const_cast<T*>(&t)); 1053 return DfsWizard< DefProcessedMapBase<T> >(*this);1052 return DfsWizard<SetProcessedMapBase<T> >(*this); 1054 1053 } 1055 1054 1056 1055 template<class T> 1057 struct DefDistMapBase : public Base {1056 struct SetDistMapBase : public Base { 1058 1057 typedef T DistMap; 1059 1058 static DistMap *createDistMap(const Digraph &) { return 0; }; 1060 DefDistMapBase(const TR &b) : TR(b) {}1059 SetDistMapBase(const TR &b) : TR(b) {} 1061 1060 }; 1062 1061 ///\brief \ref named-templ-param "Named parameter" … … 1066 1065 ///for setting \ref DistMap object. 1067 1066 template<class T> 1068 DfsWizard< DefDistMapBase<T> > distMap(const T &t)1067 DfsWizard<SetDistMapBase<T> > distMap(const T &t) 1069 1068 { 1070 1069 Base::_dist=reinterpret_cast<void*>(const_cast<T*>(&t)); 1071 return DfsWizard< DefDistMapBase<T> >(*this);1070 return DfsWizard<SetDistMapBase<T> >(*this); 1072 1071 } 1073 1072 … … 1302 1301 ///@{ 1303 1302 template <class T> 1304 struct DefReachedMapTraits : public Traits {1303 struct SetReachedMapTraits : public Traits { 1305 1304 typedef T ReachedMap; 1306 1305 static ReachedMap *createReachedMap(const Digraph &digraph) { … … 1313 1312 /// \ref named-templ-param "Named parameter" for setting ReachedMap type. 1314 1313 template <class T> 1315 struct DefReachedMap : public DfsVisit< Digraph, Visitor,1316 DefReachedMapTraits<T> > {1317 typedef DfsVisit< Digraph, Visitor, DefReachedMapTraits<T> > Create;1314 struct SetReachedMap : public DfsVisit< Digraph, Visitor, 1315 SetReachedMapTraits<T> > { 1316 typedef DfsVisit< Digraph, Visitor, SetReachedMapTraits<T> > Create; 1318 1317 }; 1319 1318 ///@} -
lemon/dfs.h
r257 r258 1209 1209 /// the member functions of the \c Visitor class on every DFS event. 1210 1210 /// 1211 /// This interface of the DFS algorithm should be used in special cases 1212 /// when extra actions have to be performed in connection with certain 1213 /// events of the DFS algorithm. Otherwise consider to use Dfs or dfs() 1214 /// instead. 1215 /// 1211 1216 /// \tparam _Digraph The type of the digraph the algorithm runs on. 1212 1217 /// The default value is -
lemon/dijkstra.h
r251 r258 332 332 333 333 template <class T> 334 struct DefPredMapTraits : public Traits {334 struct SetPredMapTraits : public Traits { 335 335 typedef T PredMap; 336 336 static PredMap *createPredMap(const Digraph &) … … 345 345 ///\ref PredMap type. 346 346 template <class T> 347 struct DefPredMap348 : public Dijkstra< Digraph, LengthMap, DefPredMapTraits<T> > {349 typedef Dijkstra< Digraph, LengthMap, DefPredMapTraits<T> > Create;347 struct SetPredMap 348 : public Dijkstra< Digraph, LengthMap, SetPredMapTraits<T> > { 349 typedef Dijkstra< Digraph, LengthMap, SetPredMapTraits<T> > Create; 350 350 }; 351 351 352 352 template <class T> 353 struct DefDistMapTraits : public Traits {353 struct SetDistMapTraits : public Traits { 354 354 typedef T DistMap; 355 355 static DistMap *createDistMap(const Digraph &) … … 364 364 ///\ref DistMap type. 365 365 template <class T> 366 struct DefDistMap367 : public Dijkstra< Digraph, LengthMap, DefDistMapTraits<T> > {368 typedef Dijkstra< Digraph, LengthMap, DefDistMapTraits<T> > Create;366 struct SetDistMap 367 : public Dijkstra< Digraph, LengthMap, SetDistMapTraits<T> > { 368 typedef Dijkstra< Digraph, LengthMap, SetDistMapTraits<T> > Create; 369 369 }; 370 370 371 371 template <class T> 372 struct DefProcessedMapTraits : public Traits {372 struct SetProcessedMapTraits : public Traits { 373 373 typedef T ProcessedMap; 374 374 static ProcessedMap *createProcessedMap(const Digraph &) … … 383 383 ///\ref ProcessedMap type. 384 384 template <class T> 385 struct DefProcessedMap386 : public Dijkstra< Digraph, LengthMap, DefProcessedMapTraits<T> > {387 typedef Dijkstra< Digraph, LengthMap, DefProcessedMapTraits<T> > Create;388 }; 389 390 struct DefDigraphProcessedMapTraits : public Traits {385 struct SetProcessedMap 386 : public Dijkstra< Digraph, LengthMap, SetProcessedMapTraits<T> > { 387 typedef Dijkstra< Digraph, LengthMap, SetProcessedMapTraits<T> > Create; 388 }; 389 390 struct SetStandardProcessedMapTraits : public Traits { 391 391 typedef typename Digraph::template NodeMap<bool> ProcessedMap; 392 392 static ProcessedMap *createProcessedMap(const Digraph &g) … … 401 401 ///\ref ProcessedMap type to be <tt>Digraph::NodeMap<bool></tt>. 402 402 ///If you don't set it explicitly, it will be automatically allocated. 403 template <class T> 404 struct DefProcessedMapToBeDefaultMap 405 : public Dijkstra< Digraph, LengthMap, DefDigraphProcessedMapTraits> { 406 typedef Dijkstra< Digraph, LengthMap, DefDigraphProcessedMapTraits> 403 struct SetStandardProcessedMap 404 : public Dijkstra< Digraph, LengthMap, SetStandardProcessedMapTraits > { 405 typedef Dijkstra< Digraph, LengthMap, SetStandardProcessedMapTraits > 407 406 Create; 408 407 }; 409 408 410 409 template <class H, class CR> 411 struct DefHeapTraits : public Traits {410 struct SetHeapTraits : public Traits { 412 411 typedef CR HeapCrossRef; 413 412 typedef H Heap; … … 426 425 ///reference type. 427 426 template <class H, class CR = typename Digraph::template NodeMap<int> > 428 struct DefHeap429 : public Dijkstra< Digraph, LengthMap, DefHeapTraits<H, CR> > {430 typedef Dijkstra< Digraph, LengthMap, DefHeapTraits<H, CR> > Create;427 struct SetHeap 428 : public Dijkstra< Digraph, LengthMap, SetHeapTraits<H, CR> > { 429 typedef Dijkstra< Digraph, LengthMap, SetHeapTraits<H, CR> > Create; 431 430 }; 432 431 433 432 template <class H, class CR> 434 struct DefStandardHeapTraits : public Traits {433 struct SetStandardHeapTraits : public Traits { 435 434 typedef CR HeapCrossRef; 436 435 typedef H Heap; … … 451 450 ///parameter and the heap's constructor waits for the cross reference. 452 451 template <class H, class CR = typename Digraph::template NodeMap<int> > 453 struct DefStandardHeap454 : public Dijkstra< Digraph, LengthMap, DefStandardHeapTraits<H, CR> > {455 typedef Dijkstra< Digraph, LengthMap, DefStandardHeapTraits<H, CR> >452 struct SetStandardHeap 453 : public Dijkstra< Digraph, LengthMap, SetStandardHeapTraits<H, CR> > { 454 typedef Dijkstra< Digraph, LengthMap, SetStandardHeapTraits<H, CR> > 456 455 Create; 457 456 }; 458 457 459 458 template <class T> 460 struct DefOperationTraitsTraits : public Traits {459 struct SetOperationTraitsTraits : public Traits { 461 460 typedef T OperationTraits; 462 461 }; … … 468 467 ///\ref OperationTraits type. 469 468 template <class T> 470 struct DefOperationTraits471 : public Dijkstra<Digraph, LengthMap, DefOperationTraitsTraits<T> > {472 typedef Dijkstra<Digraph, LengthMap, DefOperationTraitsTraits<T> >469 struct SetOperationTraits 470 : public Dijkstra<Digraph, LengthMap, SetOperationTraitsTraits<T> > { 471 typedef Dijkstra<Digraph, LengthMap, SetOperationTraitsTraits<T> > 473 472 Create; 474 473 }; … … 1206 1205 1207 1206 template<class T> 1208 struct DefPredMapBase : public Base {1207 struct SetPredMapBase : public Base { 1209 1208 typedef T PredMap; 1210 1209 static PredMap *createPredMap(const Digraph &) { return 0; }; 1211 DefPredMapBase(const TR &b) : TR(b) {}1210 SetPredMapBase(const TR &b) : TR(b) {} 1212 1211 }; 1213 1212 ///\brief \ref named-templ-param "Named parameter" … … 1217 1216 ///for setting \ref PredMap object. 1218 1217 template<class T> 1219 DijkstraWizard< DefPredMapBase<T> > predMap(const T &t)1218 DijkstraWizard<SetPredMapBase<T> > predMap(const T &t) 1220 1219 { 1221 1220 Base::_pred=reinterpret_cast<void*>(const_cast<T*>(&t)); 1222 return DijkstraWizard< DefPredMapBase<T> >(*this);1221 return DijkstraWizard<SetPredMapBase<T> >(*this); 1223 1222 } 1224 1223 1225 1224 template<class T> 1226 struct DefProcessedMapBase : public Base {1225 struct SetProcessedMapBase : public Base { 1227 1226 typedef T ProcessedMap; 1228 1227 static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; 1229 DefProcessedMapBase(const TR &b) : TR(b) {}1228 SetProcessedMapBase(const TR &b) : TR(b) {} 1230 1229 }; 1231 1230 ///\brief \ref named-templ-param "Named parameter" … … 1235 1234 ///for setting \ref ProcessedMap object. 1236 1235 template<class T> 1237 DijkstraWizard< DefProcessedMapBase<T> > processedMap(const T &t)1236 DijkstraWizard<SetProcessedMapBase<T> > processedMap(const T &t) 1238 1237 { 1239 1238 Base::_processed=reinterpret_cast<void*>(const_cast<T*>(&t)); 1240 return DijkstraWizard< DefProcessedMapBase<T> >(*this);1239 return DijkstraWizard<SetProcessedMapBase<T> >(*this); 1241 1240 } 1242 1241 1243 1242 template<class T> 1244 struct DefDistMapBase : public Base {1243 struct SetDistMapBase : public Base { 1245 1244 typedef T DistMap; 1246 1245 static DistMap *createDistMap(const Digraph &) { return 0; }; 1247 DefDistMapBase(const TR &b) : TR(b) {}1246 SetDistMapBase(const TR &b) : TR(b) {} 1248 1247 }; 1249 1248 ///\brief \ref named-templ-param "Named parameter" … … 1253 1252 ///for setting \ref DistMap object. 1254 1253 template<class T> 1255 DijkstraWizard< DefDistMapBase<T> > distMap(const T &t)1254 DijkstraWizard<SetDistMapBase<T> > distMap(const T &t) 1256 1255 { 1257 1256 Base::_dist=reinterpret_cast<void*>(const_cast<T*>(&t)); 1258 return DijkstraWizard< DefDistMapBase<T> >(*this);1257 return DijkstraWizard<SetDistMapBase<T> >(*this); 1259 1258 } 1260 1259 -
lemon/dijkstra.h
r257 r258 1068 1068 //Pointer to the length map 1069 1069 void *_length; 1070 //Pointer to the map of processed nodes. 1071 void *_processed; 1070 1072 //Pointer to the map of predecessors arcs. 1071 1073 void *_pred; … … 1080 1082 /// This constructor does not require parameters, therefore it initiates 1081 1083 /// all of the attributes to default values (0, INVALID). 1082 DijkstraWizardBase() : _g(0), _length(0), _pr ed(0),1084 DijkstraWizardBase() : _g(0), _length(0), _processed(0), _pred(0), 1083 1085 _dist(0), _source(INVALID) {} 1084 1086 … … 1094 1096 _g(reinterpret_cast<void*>(const_cast<GR*>(&g))), 1095 1097 _length(reinterpret_cast<void*>(const_cast<LM*>(&l))), 1096 _pr ed(0), _dist(0), _source(s) {}1098 _processed(0), _pred(0), _dist(0), _source(s) {} 1097 1099 1098 1100 }; … … 1173 1175 dij(*reinterpret_cast<const Digraph*>(Base::_g), 1174 1176 *reinterpret_cast<const LengthMap*>(Base::_length)); 1175 if(Base::_pred) dij.predMap(*reinterpret_cast<PredMap*>(Base::_pred)); 1176 if(Base::_dist) dij.distMap(*reinterpret_cast<DistMap*>(Base::_dist)); 1177 if(Base::_processed) 1178 dij.processedMap(*reinterpret_cast<ProcessedMap*>(Base::_processed)); 1179 if(Base::_pred) 1180 dij.predMap(*reinterpret_cast<PredMap*>(Base::_pred)); 1181 if(Base::_dist) 1182 dij.distMap(*reinterpret_cast<DistMap*>(Base::_dist)); 1177 1183 dij.run(Base::_source); 1178 1184 }
Note: See TracChangeset
for help on using the changeset viewer.