gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Add missing tags and functions for item counting in SmartGraph (#3)
0 1 0
default
1 file changed with 7 insertions and 0 deletions:
↑ Collapse diff ↑
Show white space 48 line context
... ...
@@ -459,48 +459,55 @@
459 459
    class Arc {
460 460
      friend class SmartGraphBase;
461 461
    protected:
462 462

	
463 463
      int _id;
464 464
      explicit Arc(int id) { _id = id;}
465 465

	
466 466
    public:
467 467
      operator Edge() const {
468 468
        return _id != -1 ? edgeFromId(_id / 2) : INVALID;
469 469
      }
470 470

	
471 471
      Arc() {}
472 472
      Arc (Invalid) { _id = -1; }
473 473
      bool operator==(const Arc& arc) const {return _id == arc._id;}
474 474
      bool operator!=(const Arc& arc) const {return _id != arc._id;}
475 475
      bool operator<(const Arc& arc) const {return _id < arc._id;}
476 476
    };
477 477

	
478 478

	
479 479

	
480 480
    SmartGraphBase()
481 481
      : nodes(), arcs() {}
482 482

	
483
    typedef True NodeNumTag;
484
    typedef True EdgeNumTag;
485
    typedef True ArcNumTag;
486

	
487
    int nodeNum() const { return nodes.size(); }
488
    int edgeNum() const { return arcs.size() / 2; }
489
    int arcNum() const { return arcs.size(); }
483 490

	
484 491
    int maxNodeId() const { return nodes.size()-1; }
485 492
    int maxEdgeId() const { return arcs.size() / 2 - 1; }
486 493
    int maxArcId() const { return arcs.size()-1; }
487 494

	
488 495
    Node source(Arc e) const { return Node(arcs[e._id ^ 1].target); }
489 496
    Node target(Arc e) const { return Node(arcs[e._id].target); }
490 497

	
491 498
    Node u(Edge e) const { return Node(arcs[2 * e._id].target); }
492 499
    Node v(Edge e) const { return Node(arcs[2 * e._id + 1].target); }
493 500

	
494 501
    static bool direction(Arc e) {
495 502
      return (e._id & 1) == 1;
496 503
    }
497 504

	
498 505
    static Arc direct(Edge e, bool d) {
499 506
      return Arc(e._id * 2 + (d ? 1 : 0));
500 507
    }
501 508

	
502 509
    void first(Node& node) const {
503 510
      node._id = nodes.size() - 1;
504 511
    }
505 512

	
506 513
    void next(Node& node) const {
0 comments (0 inline)