... | ... |
@@ -1065,25 +1065,27 @@ |
1065 | 1065 |
typedef typename Base::Digraph::Node Node; |
1066 | 1066 |
|
1067 | 1067 |
//Pointer to the digraph the algorithm runs on. |
1068 | 1068 |
void *_g; |
1069 | 1069 |
//Pointer to the length map |
1070 | 1070 |
void *_length; |
1071 |
//Pointer to the map of processed nodes. |
|
1072 |
void *_processed; |
|
1071 | 1073 |
//Pointer to the map of predecessors arcs. |
1072 | 1074 |
void *_pred; |
1073 | 1075 |
//Pointer to the map of distances. |
1074 | 1076 |
void *_dist; |
1075 | 1077 |
//Pointer to the source node. |
1076 | 1078 |
Node _source; |
1077 | 1079 |
|
1078 | 1080 |
public: |
1079 | 1081 |
/// Constructor. |
1080 | 1082 |
|
1081 | 1083 |
/// This constructor does not require parameters, therefore it initiates |
1082 | 1084 |
/// all of the attributes to default values (0, INVALID). |
1083 |
DijkstraWizardBase() : _g(0), _length(0), _pred(0), |
|
1085 |
DijkstraWizardBase() : _g(0), _length(0), _processed(0), _pred(0), |
|
1084 | 1086 |
_dist(0), _source(INVALID) {} |
1085 | 1087 |
|
1086 | 1088 |
/// Constructor. |
1087 | 1089 |
|
1088 | 1090 |
/// This constructor requires some parameters, |
1089 | 1091 |
/// listed in the parameters list. |
... | ... |
@@ -1091,13 +1093,13 @@ |
1091 | 1093 |
/// \param g The digraph the algorithm runs on. |
1092 | 1094 |
/// \param l The length map. |
1093 | 1095 |
/// \param s The source node. |
1094 | 1096 |
DijkstraWizardBase(const GR &g,const LM &l, Node s=INVALID) : |
1095 | 1097 |
_g(reinterpret_cast<void*>(const_cast<GR*>(&g))), |
1096 | 1098 |
_length(reinterpret_cast<void*>(const_cast<LM*>(&l))), |
1097 |
_pred(0), _dist(0), _source(s) {} |
|
1099 |
_processed(0), _pred(0), _dist(0), _source(s) {} |
|
1098 | 1100 |
|
1099 | 1101 |
}; |
1100 | 1102 |
|
1101 | 1103 |
/// Auxiliary class for the function type interface of Dijkstra algorithm. |
1102 | 1104 |
|
1103 | 1105 |
/// This auxiliary class is created to implement the function type |
... | ... |
@@ -1170,14 +1172,18 @@ |
1170 | 1172 |
void run() |
1171 | 1173 |
{ |
1172 | 1174 |
if(Base::_source==INVALID) throw UninitializedParameter(); |
1173 | 1175 |
Dijkstra<Digraph,LengthMap,TR> |
1174 | 1176 |
dij(*reinterpret_cast<const Digraph*>(Base::_g), |
1175 | 1177 |
*reinterpret_cast<const LengthMap*>(Base::_length)); |
1176 |
if(Base::_pred) dij.predMap(*reinterpret_cast<PredMap*>(Base::_pred)); |
|
1177 |
if(Base::_dist) dij.distMap(*reinterpret_cast<DistMap*>(Base::_dist)); |
|
1178 |
if(Base::_processed) |
|
1179 |
dij.processedMap(*reinterpret_cast<ProcessedMap*>(Base::_processed)); |
|
1180 |
if(Base::_pred) |
|
1181 |
dij.predMap(*reinterpret_cast<PredMap*>(Base::_pred)); |
|
1182 |
if(Base::_dist) |
|
1183 |
dij.distMap(*reinterpret_cast<DistMap*>(Base::_dist)); |
|
1178 | 1184 |
dij.run(Base::_source); |
1179 | 1185 |
} |
1180 | 1186 |
|
1181 | 1187 |
///Runs Dijkstra algorithm from the given node. |
1182 | 1188 |
|
1183 | 1189 |
///Runs Dijkstra algorithm from the given node. |
0 comments (0 inline)