gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge
0 2 0
merge default
0 files changed with 10 insertions and 0 deletions:
↑ Collapse diff ↑
Show white space 96 line context
... ...
@@ -1217,96 +1217,101 @@
1217 1217
        visitor.reach(node);
1218 1218
        visitor.process(node);
1219 1219
        visitor.discover(arc);
1220 1220
        visitor.examine(arc);
1221 1221
      }
1222 1222
      _Visitor& visitor;
1223 1223
    };
1224 1224
  };
1225 1225
#endif
1226 1226

	
1227 1227
  /// \brief Default traits class of BfsVisit class.
1228 1228
  ///
1229 1229
  /// Default traits class of BfsVisit class.
1230 1230
  /// \tparam _Digraph The type of the digraph the algorithm runs on.
1231 1231
  template<class _Digraph>
1232 1232
  struct BfsVisitDefaultTraits {
1233 1233

	
1234 1234
    /// \brief The type of the digraph the algorithm runs on.
1235 1235
    typedef _Digraph Digraph;
1236 1236

	
1237 1237
    /// \brief The type of the map that indicates which nodes are reached.
1238 1238
    ///
1239 1239
    /// The type of the map that indicates which nodes are reached.
1240 1240
    /// It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
1241 1241
    typedef typename Digraph::template NodeMap<bool> ReachedMap;
1242 1242

	
1243 1243
    /// \brief Instantiates a \ref ReachedMap.
1244 1244
    ///
1245 1245
    /// This function instantiates a \ref ReachedMap.
1246 1246
    /// \param digraph is the digraph, to which
1247 1247
    /// we would like to define the \ref ReachedMap.
1248 1248
    static ReachedMap *createReachedMap(const Digraph &digraph) {
1249 1249
      return new ReachedMap(digraph);
1250 1250
    }
1251 1251

	
1252 1252
  };
1253 1253

	
1254 1254
  /// \ingroup search
1255 1255
  ///
1256 1256
  /// \brief %BFS algorithm class with visitor interface.
1257 1257
  ///
1258 1258
  /// This class provides an efficient implementation of the %BFS algorithm
1259 1259
  /// with visitor interface.
1260 1260
  ///
1261 1261
  /// The %BfsVisit class provides an alternative interface to the Bfs
1262 1262
  /// class. It works with callback mechanism, the BfsVisit object calls
1263 1263
  /// the member functions of the \c Visitor class on every BFS event.
1264 1264
  ///
1265
  /// This interface of the BFS algorithm should be used in special cases
1266
  /// when extra actions have to be performed in connection with certain
1267
  /// events of the BFS algorithm. Otherwise consider to use Bfs or bfs()
1268
  /// instead.
1269
  ///
1265 1270
  /// \tparam _Digraph The type of the digraph the algorithm runs on.
1266 1271
  /// The default value is
1267 1272
  /// \ref ListDigraph. The value of _Digraph is not used directly by
1268 1273
  /// \ref BfsVisit, it is only passed to \ref BfsVisitDefaultTraits.
1269 1274
  /// \tparam _Visitor The Visitor type that is used by the algorithm.
1270 1275
  /// \ref BfsVisitor "BfsVisitor<_Digraph>" is an empty visitor, which
1271 1276
  /// does not observe the BFS events. If you want to observe the BFS
1272 1277
  /// events, you should implement your own visitor class.
1273 1278
  /// \tparam _Traits Traits class to set various data types used by the
1274 1279
  /// algorithm. The default traits class is
1275 1280
  /// \ref BfsVisitDefaultTraits "BfsVisitDefaultTraits<_Digraph>".
1276 1281
  /// See \ref BfsVisitDefaultTraits for the documentation of
1277 1282
  /// a BFS visit traits class.
1278 1283
#ifdef DOXYGEN
1279 1284
  template <typename _Digraph, typename _Visitor, typename _Traits>
1280 1285
#else
1281 1286
  template <typename _Digraph = ListDigraph,
1282 1287
            typename _Visitor = BfsVisitor<_Digraph>,
1283 1288
            typename _Traits = BfsDefaultTraits<_Digraph> >
1284 1289
#endif
1285 1290
  class BfsVisit {
1286 1291
  public:
1287 1292

	
1288 1293
    /// \brief \ref Exception for uninitialized parameters.
1289 1294
    ///
1290 1295
    /// This error represents problems in the initialization
1291 1296
    /// of the parameters of the algorithm.
1292 1297
    class UninitializedParameter : public lemon::UninitializedParameter {
1293 1298
    public:
1294 1299
      virtual const char* what() const throw()
1295 1300
      {
1296 1301
        return "lemon::BfsVisit::UninitializedParameter";
1297 1302
      }
1298 1303
    };
1299 1304

	
1300 1305
    ///The traits class.
1301 1306
    typedef _Traits Traits;
1302 1307

	
1303 1308
    ///The type of the digraph the algorithm runs on.
1304 1309
    typedef typename Traits::Digraph Digraph;
1305 1310

	
1306 1311
    ///The visitor type used by the algorithm.
1307 1312
    typedef _Visitor Visitor;
1308 1313

	
1309 1314
    ///The type of the map that indicates which nodes are reached.
1310 1315
    typedef typename Traits::ReachedMap ReachedMap;
1311 1316

	
1312 1317
  private:
Show white space 96 line context
... ...
@@ -1164,96 +1164,101 @@
1164 1164
        visitor.discover(arc);
1165 1165
        visitor.examine(arc);
1166 1166
        visitor.leave(node);
1167 1167
        visitor.backtrack(arc);
1168 1168
      }
1169 1169
      _Visitor& visitor;
1170 1170
    };
1171 1171
  };
1172 1172
#endif
1173 1173

	
1174 1174
  /// \brief Default traits class of DfsVisit class.
1175 1175
  ///
1176 1176
  /// Default traits class of DfsVisit class.
1177 1177
  /// \tparam _Digraph The type of the digraph the algorithm runs on.
1178 1178
  template<class _Digraph>
1179 1179
  struct DfsVisitDefaultTraits {
1180 1180

	
1181 1181
    /// \brief The type of the digraph the algorithm runs on.
1182 1182
    typedef _Digraph Digraph;
1183 1183

	
1184 1184
    /// \brief The type of the map that indicates which nodes are reached.
1185 1185
    ///
1186 1186
    /// The type of the map that indicates which nodes are reached.
1187 1187
    /// It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
1188 1188
    typedef typename Digraph::template NodeMap<bool> ReachedMap;
1189 1189

	
1190 1190
    /// \brief Instantiates a \ref ReachedMap.
1191 1191
    ///
1192 1192
    /// This function instantiates a \ref ReachedMap.
1193 1193
    /// \param digraph is the digraph, to which
1194 1194
    /// we would like to define the \ref ReachedMap.
1195 1195
    static ReachedMap *createReachedMap(const Digraph &digraph) {
1196 1196
      return new ReachedMap(digraph);
1197 1197
    }
1198 1198

	
1199 1199
  };
1200 1200

	
1201 1201
  /// \ingroup search
1202 1202
  ///
1203 1203
  /// \brief %DFS algorithm class with visitor interface.
1204 1204
  ///
1205 1205
  /// This class provides an efficient implementation of the %DFS algorithm
1206 1206
  /// with visitor interface.
1207 1207
  ///
1208 1208
  /// The %DfsVisit class provides an alternative interface to the Dfs
1209 1209
  /// class. It works with callback mechanism, the DfsVisit object calls
1210 1210
  /// the member functions of the \c Visitor class on every DFS event.
1211 1211
  ///
1212
  /// This interface of the DFS algorithm should be used in special cases
1213
  /// when extra actions have to be performed in connection with certain
1214
  /// events of the DFS algorithm. Otherwise consider to use Dfs or dfs()
1215
  /// instead.
1216
  ///
1212 1217
  /// \tparam _Digraph The type of the digraph the algorithm runs on.
1213 1218
  /// The default value is
1214 1219
  /// \ref ListDigraph. The value of _Digraph is not used directly by
1215 1220
  /// \ref DfsVisit, it is only passed to \ref DfsVisitDefaultTraits.
1216 1221
  /// \tparam _Visitor The Visitor type that is used by the algorithm.
1217 1222
  /// \ref DfsVisitor "DfsVisitor<_Digraph>" is an empty visitor, which
1218 1223
  /// does not observe the DFS events. If you want to observe the DFS
1219 1224
  /// events, you should implement your own visitor class.
1220 1225
  /// \tparam _Traits Traits class to set various data types used by the
1221 1226
  /// algorithm. The default traits class is
1222 1227
  /// \ref DfsVisitDefaultTraits "DfsVisitDefaultTraits<_Digraph>".
1223 1228
  /// See \ref DfsVisitDefaultTraits for the documentation of
1224 1229
  /// a DFS visit traits class.
1225 1230
#ifdef DOXYGEN
1226 1231
  template <typename _Digraph, typename _Visitor, typename _Traits>
1227 1232
#else
1228 1233
  template <typename _Digraph = ListDigraph,
1229 1234
            typename _Visitor = DfsVisitor<_Digraph>,
1230 1235
            typename _Traits = DfsDefaultTraits<_Digraph> >
1231 1236
#endif
1232 1237
  class DfsVisit {
1233 1238
  public:
1234 1239

	
1235 1240
    /// \brief \ref Exception for uninitialized parameters.
1236 1241
    ///
1237 1242
    /// This error represents problems in the initialization
1238 1243
    /// of the parameters of the algorithm.
1239 1244
    class UninitializedParameter : public lemon::UninitializedParameter {
1240 1245
    public:
1241 1246
      virtual const char* what() const throw()
1242 1247
      {
1243 1248
        return "lemon::DfsVisit::UninitializedParameter";
1244 1249
      }
1245 1250
    };
1246 1251

	
1247 1252
    ///The traits class.
1248 1253
    typedef _Traits Traits;
1249 1254

	
1250 1255
    ///The type of the digraph the algorithm runs on.
1251 1256
    typedef typename Traits::Digraph Digraph;
1252 1257

	
1253 1258
    ///The visitor type used by the algorithm.
1254 1259
    typedef _Visitor Visitor;
1255 1260

	
1256 1261
    ///The type of the map that indicates which nodes are reached.
1257 1262
    typedef typename Traits::ReachedMap ReachedMap;
1258 1263

	
1259 1264
  private:
0 comments (0 inline)