gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Extend the interface of StaticDigraph (#68) with index(), arc() and node() functions similarly to other static graph structures.
0 2 0
default
2 files changed with 57 insertions and 6 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -239,6 +239,14 @@
239 239
  /// However it only provides build() and clear() functions and does not
240 240
  /// support any other modification of the digraph.
241 241
  ///
242
  /// Since this digraph structure is completely static, its nodes and arcs
243
  /// can be indexed with integers from the ranges <tt>[0..nodeNum()-1]</tt>
244
  /// and <tt>[0..arcNum()-1]</tt>, respectively. 
245
  /// The index of an item is the same as its ID, it can be obtained
246
  /// using the corresponding \ref index() or \ref concepts::Digraph::id()
247
  /// "id()" function. A node or arc with a certain index can be obtained
248
  /// using node() or arc().
249
  ///
242 250
  /// This type fully conforms to the \ref concepts::Digraph "Digraph concept".
243 251
  /// Most of its member functions and nested classes are documented
244 252
  /// only in the concept class.
... ...
@@ -251,13 +259,45 @@
251 259
  
252 260
  public:
253 261
  
254
    /// \brief Clear the digraph.
262
    /// \brief Constructor
255 263
    ///
256
    /// This function erases all nodes and arcs from the digraph.
257
    void clear() {
258
      Parent::clear();
259
    }
260
    
264
    /// Default constructor.
265
    StaticDigraph() : Parent() {}
266

	
267
    /// \brief The node with the given index.
268
    ///
269
    /// This function returns the node with the given index.
270
    /// \sa index()
271
    Node node(int ix) const { return Parent::nodeFromId(ix); }
272

	
273
    /// \brief The arc with the given index.
274
    ///
275
    /// This function returns the arc with the given index.
276
    /// \sa index()
277
    Arc arc(int ix) const { return Parent::arcFromId(ix); }
278

	
279
    /// \brief The index of the given node.
280
    ///
281
    /// This function returns the index of the the given node.
282
    /// \sa node()
283
    int index(Node node) const { return Parent::id(node); }
284

	
285
    /// \brief The index of the given arc.
286
    ///
287
    /// This function returns the index of the the given arc.
288
    /// \sa arc()
289
    int index(Arc arc) const { return Parent::id(arc); }
290

	
291
    /// \brief Number of nodes.
292
    ///
293
    /// This function returns the number of nodes.
294
    int nodeNum() const { return node_num; }
295

	
296
    /// \brief Number of arcs.
297
    ///
298
    /// This function returns the number of arcs.
299
    int arcNum() const { return arc_num; }
300

	
261 301
    /// \brief Build the digraph copying another digraph.
262 302
    ///
263 303
    /// This function builds the digraph copying another digraph of any
... ...
@@ -288,6 +328,12 @@
288 328
      Parent::build(digraph, nodeRef, arcRef);
289 329
    }
290 330
  
331
    /// \brief Clear the digraph.
332
    ///
333
    /// This function erases all nodes and arcs from the digraph.
334
    void clear() {
335
      Parent::clear();
336
    }
291 337

	
292 338
  protected:
293 339

	
Ignore white space 6 line context
... ...
@@ -445,6 +445,11 @@
445 445
  checkArcIds(G);
446 446
  checkGraphNodeMap(G);
447 447
  checkGraphArcMap(G);
448
  
449
  int n = G.nodeNum();
450
  int m = G.arcNum();
451
  check(G.index(G.node(n-1)) == n-1, "Wrong index.");
452
  check(G.index(G.arc(m-1)) == m-1, "Wrong index.");
448 453
}
449 454

	
450 455
void checkFullDigraph(int num) {
0 comments (0 inline)