| ... | ... |
@@ -1841,9 +1841,10 @@ |
| 1841 | 1841 |
|
| 1842 |
class Arc |
|
| 1842 |
class Arc {
|
|
| 1843 | 1843 |
friend class UndirectorBase; |
| 1844 | 1844 |
protected: |
| 1845 |
Edge _edge; |
|
| 1845 | 1846 |
bool _forward; |
| 1846 | 1847 |
|
| 1847 |
Arc(const Edge& edge, bool forward) : |
|
| 1848 |
Edge(edge), _forward(forward) {}
|
|
| 1848 |
Arc(const Edge& edge, bool forward) |
|
| 1849 |
: _edge(edge), _forward(forward) {}
|
|
| 1849 | 1850 |
|
| ... | ... |
@@ -1852,11 +1853,11 @@ |
| 1852 | 1853 |
|
| 1853 |
Arc(Invalid) : |
|
| 1854 |
Arc(Invalid) : _edge(INVALID), _forward(true) {}
|
|
| 1855 |
|
|
| 1856 |
operator const Edge&() const { return _edge; }
|
|
| 1854 | 1857 |
|
| 1855 | 1858 |
bool operator==(const Arc &other) const {
|
| 1856 |
return _forward == other._forward && |
|
| 1857 |
static_cast<const Edge&>(*this) == static_cast<const Edge&>(other); |
|
| 1859 |
return _forward == other._forward && _edge == other._edge; |
|
| 1858 | 1860 |
} |
| 1859 | 1861 |
bool operator!=(const Arc &other) const {
|
| 1860 |
return _forward != other._forward || |
|
| 1861 |
static_cast<const Edge&>(*this) != static_cast<const Edge&>(other); |
|
| 1862 |
return _forward != other._forward || _edge != other._edge; |
|
| 1862 | 1863 |
} |
| ... | ... |
@@ -1864,4 +1865,3 @@ |
| 1864 | 1865 |
return _forward < other._forward || |
| 1865 |
(_forward == other._forward && |
|
| 1866 |
static_cast<const Edge&>(*this) < static_cast<const Edge&>(other)); |
|
| 1866 |
(_forward == other._forward && _edge < other._edge); |
|
| 1867 | 1867 |
} |
| ... | ... |
@@ -1878,3 +1878,3 @@ |
| 1878 | 1878 |
void first(Arc& a) const {
|
| 1879 |
_digraph->first(a); |
|
| 1879 |
_digraph->first(a._edge); |
|
| 1880 | 1880 |
a._forward = true; |
| ... | ... |
@@ -1886,3 +1886,3 @@ |
| 1886 | 1886 |
} else {
|
| 1887 |
_digraph->next(a); |
|
| 1887 |
_digraph->next(a._edge); |
|
| 1888 | 1888 |
a._forward = true; |
| ... | ... |
@@ -1900,7 +1900,7 @@ |
| 1900 | 1900 |
void firstOut(Arc& a, const Node& n) const {
|
| 1901 |
_digraph->firstIn(a, n); |
|
| 1902 |
if( static_cast<const Edge&>(a) != INVALID ) {
|
|
| 1901 |
_digraph->firstIn(a._edge, n); |
|
| 1902 |
if (a._edge != INVALID ) {
|
|
| 1903 | 1903 |
a._forward = false; |
| 1904 | 1904 |
} else {
|
| 1905 |
_digraph->firstOut(a, n); |
|
| 1905 |
_digraph->firstOut(a._edge, n); |
|
| 1906 | 1906 |
a._forward = true; |
| ... | ... |
@@ -1910,6 +1910,6 @@ |
| 1910 | 1910 |
if (!a._forward) {
|
| 1911 |
Node n = _digraph->target(a); |
|
| 1912 |
_digraph->nextIn(a); |
|
| 1913 |
if (static_cast<const Edge&>(a) == INVALID ) {
|
|
| 1914 |
_digraph->firstOut(a, n); |
|
| 1911 |
Node n = _digraph->target(a._edge); |
|
| 1912 |
_digraph->nextIn(a._edge); |
|
| 1913 |
if (a._edge == INVALID) {
|
|
| 1914 |
_digraph->firstOut(a._edge, n); |
|
| 1915 | 1915 |
a._forward = true; |
| ... | ... |
@@ -1918,3 +1918,3 @@ |
| 1918 | 1918 |
else {
|
| 1919 |
_digraph->nextOut(a); |
|
| 1919 |
_digraph->nextOut(a._edge); |
|
| 1920 | 1920 |
} |
| ... | ... |
@@ -1923,7 +1923,7 @@ |
| 1923 | 1923 |
void firstIn(Arc &a, const Node &n) const {
|
| 1924 |
_digraph->firstOut(a, n); |
|
| 1925 |
if (static_cast<const Edge&>(a) != INVALID ) {
|
|
| 1924 |
_digraph->firstOut(a._edge, n); |
|
| 1925 |
if (a._edge != INVALID ) {
|
|
| 1926 | 1926 |
a._forward = false; |
| 1927 | 1927 |
} else {
|
| 1928 |
_digraph->firstIn(a, n); |
|
| 1928 |
_digraph->firstIn(a._edge, n); |
|
| 1929 | 1929 |
a._forward = true; |
| ... | ... |
@@ -1933,6 +1933,6 @@ |
| 1933 | 1933 |
if (!a._forward) {
|
| 1934 |
Node n = _digraph->source(a); |
|
| 1935 |
_digraph->nextOut(a); |
|
| 1936 |
if( static_cast<const Edge&>(a) == INVALID ) {
|
|
| 1937 |
_digraph->firstIn(a, n); |
|
| 1934 |
Node n = _digraph->source(a._edge); |
|
| 1935 |
_digraph->nextOut(a._edge); |
|
| 1936 |
if (a._edge == INVALID ) {
|
|
| 1937 |
_digraph->firstIn(a._edge, n); |
|
| 1938 | 1938 |
a._forward = true; |
| ... | ... |
@@ -1941,3 +1941,3 @@ |
| 1941 | 1941 |
else {
|
| 1942 |
_digraph->nextIn(a); |
|
| 1942 |
_digraph->nextIn(a._edge); |
|
| 1943 | 1943 |
} |
| ... | ... |
@@ -1974,3 +1974,3 @@ |
| 1974 | 1974 |
Node source(const Arc &a) const {
|
| 1975 |
return a._forward ? _digraph->source(a) : _digraph->target(a); |
|
| 1975 |
return a._forward ? _digraph->source(a._edge) : _digraph->target(a._edge); |
|
| 1976 | 1976 |
} |
| ... | ... |
@@ -1978,3 +1978,3 @@ |
| 1978 | 1978 |
Node target(const Arc &a) const {
|
| 1979 |
return a._forward ? _digraph->target(a) : _digraph->source(a); |
|
| 1979 |
return a._forward ? _digraph->target(a._edge) : _digraph->source(a._edge); |
|
| 1980 | 1980 |
} |
| ... | ... |
@@ -1984,5 +1984,2 @@ |
| 1984 | 1984 |
} |
| 1985 |
Arc direct(const Edge &e, const Node& n) const {
|
|
| 1986 |
return Arc(e, _digraph->source(e) == n); |
|
| 1987 |
} |
|
| 1988 | 1985 |
|
0 comments (0 inline)