| ... | ... |
@@ -70,7 +70,7 @@ |
| 70 | 70 |
/// It simply makes a copy of the given path. |
| 71 | 71 |
template <typename CPath> |
| 72 | 72 |
Path(const CPath& cpath) {
|
| 73 |
|
|
| 73 |
pathCopy(cpath, *this); |
|
| 74 | 74 |
} |
| 75 | 75 |
|
| 76 | 76 |
/// \brief Template copy assignment |
| ... | ... |
@@ -78,7 +78,7 @@ |
| 78 | 78 |
/// This operator makes a copy of a path of any other type. |
| 79 | 79 |
template <typename CPath> |
| 80 | 80 |
Path& operator=(const CPath& cpath) {
|
| 81 |
|
|
| 81 |
pathCopy(cpath, *this); |
|
| 82 | 82 |
return *this; |
| 83 | 83 |
} |
| 84 | 84 |
|
| ... | ... |
@@ -258,7 +258,7 @@ |
| 258 | 258 |
/// makes a copy of the given path. |
| 259 | 259 |
template <typename CPath> |
| 260 | 260 |
SimplePath(const CPath& cpath) {
|
| 261 |
|
|
| 261 |
pathCopy(cpath, *this); |
|
| 262 | 262 |
} |
| 263 | 263 |
|
| 264 | 264 |
/// \brief Template copy assignment |
| ... | ... |
@@ -267,7 +267,7 @@ |
| 267 | 267 |
/// makes a copy of the given path. |
| 268 | 268 |
template <typename CPath> |
| 269 | 269 |
SimplePath& operator=(const CPath& cpath) {
|
| 270 |
|
|
| 270 |
pathCopy(cpath, *this); |
|
| 271 | 271 |
return *this; |
| 272 | 272 |
} |
| 273 | 273 |
|
| ... | ... |
@@ -437,7 +437,7 @@ |
| 437 | 437 |
/// makes a copy of the given path. |
| 438 | 438 |
template <typename CPath> |
| 439 | 439 |
ListPath(const CPath& cpath) : first(0), last(0) {
|
| 440 |
|
|
| 440 |
pathCopy(cpath, *this); |
|
| 441 | 441 |
} |
| 442 | 442 |
|
| 443 | 443 |
/// \brief Destructor of the path |
| ... | ... |
@@ -453,7 +453,7 @@ |
| 453 | 453 |
/// makes a copy of the given path. |
| 454 | 454 |
template <typename CPath> |
| 455 | 455 |
ListPath& operator=(const CPath& cpath) {
|
| 456 |
|
|
| 456 |
pathCopy(cpath, *this); |
|
| 457 | 457 |
return *this; |
| 458 | 458 |
} |
| 459 | 459 |
|
| ... | ... |
@@ -763,7 +763,7 @@ |
| 763 | 763 |
/// This path can be initialized from any other path type. |
| 764 | 764 |
template <typename CPath> |
| 765 | 765 |
StaticPath(const CPath& cpath) : arcs(0) {
|
| 766 |
|
|
| 766 |
pathCopy(cpath, *this); |
|
| 767 | 767 |
} |
| 768 | 768 |
|
| 769 | 769 |
/// \brief Destructor of the path |
| ... | ... |
@@ -779,7 +779,7 @@ |
| 779 | 779 |
/// makes a copy of the given path. |
| 780 | 780 |
template <typename CPath> |
| 781 | 781 |
StaticPath& operator=(const CPath& cpath) {
|
| 782 |
|
|
| 782 |
pathCopy(cpath, *this); |
|
| 783 | 783 |
return *this; |
| 784 | 784 |
} |
| 785 | 785 |
|
| ... | ... |
@@ -928,57 +928,57 @@ |
| 928 | 928 |
static const bool value = true; |
| 929 | 929 |
}; |
| 930 | 930 |
|
| 931 |
template <typename Target, typename Source, |
|
| 932 |
bool buildEnable = BuildTagIndicator<Target>::value> |
|
| 931 |
template <typename From, typename To, |
|
| 932 |
bool buildEnable = BuildTagIndicator<To>::value> |
|
| 933 | 933 |
struct PathCopySelectorForward {
|
| 934 |
static void copy(Target& target, const Source& source) {
|
|
| 935 |
target.clear(); |
|
| 936 |
for (typename Source::ArcIt it(source); it != INVALID; ++it) {
|
|
| 937 |
target.addBack(it); |
|
| 934 |
static void copy(const From& from, To& to) {
|
|
| 935 |
to.clear(); |
|
| 936 |
for (typename From::ArcIt it(from); it != INVALID; ++it) {
|
|
| 937 |
to.addBack(it); |
|
| 938 | 938 |
} |
| 939 | 939 |
} |
| 940 | 940 |
}; |
| 941 | 941 |
|
| 942 |
template <typename Target, typename Source> |
|
| 943 |
struct PathCopySelectorForward<Target, Source, true> {
|
|
| 944 |
static void copy(Target& target, const Source& source) {
|
|
| 945 |
target.clear(); |
|
| 946 |
|
|
| 942 |
template <typename From, typename To> |
|
| 943 |
struct PathCopySelectorForward<From, To, true> {
|
|
| 944 |
static void copy(const From& from, To& to) {
|
|
| 945 |
to.clear(); |
|
| 946 |
to.build(from); |
|
| 947 | 947 |
} |
| 948 | 948 |
}; |
| 949 | 949 |
|
| 950 |
template <typename Target, typename Source, |
|
| 951 |
bool buildEnable = BuildTagIndicator<Target>::value> |
|
| 950 |
template <typename From, typename To, |
|
| 951 |
bool buildEnable = BuildTagIndicator<To>::value> |
|
| 952 | 952 |
struct PathCopySelectorBackward {
|
| 953 |
static void copy(Target& target, const Source& source) {
|
|
| 954 |
target.clear(); |
|
| 955 |
for (typename Source::RevArcIt it(source); it != INVALID; ++it) {
|
|
| 956 |
target.addFront(it); |
|
| 953 |
static void copy(const From& from, To& to) {
|
|
| 954 |
to.clear(); |
|
| 955 |
for (typename From::RevArcIt it(from); it != INVALID; ++it) {
|
|
| 956 |
to.addFront(it); |
|
| 957 | 957 |
} |
| 958 | 958 |
} |
| 959 | 959 |
}; |
| 960 | 960 |
|
| 961 |
template <typename Target, typename Source> |
|
| 962 |
struct PathCopySelectorBackward<Target, Source, true> {
|
|
| 963 |
static void copy(Target& target, const Source& source) {
|
|
| 964 |
target.clear(); |
|
| 965 |
|
|
| 961 |
template <typename From, typename To> |
|
| 962 |
struct PathCopySelectorBackward<From, To, true> {
|
|
| 963 |
static void copy(const From& from, To& to) {
|
|
| 964 |
to.clear(); |
|
| 965 |
to.buildRev(from); |
|
| 966 | 966 |
} |
| 967 | 967 |
}; |
| 968 | 968 |
|
| 969 | 969 |
|
| 970 |
template <typename Target, typename Source, |
|
| 971 |
bool revEnable = RevPathTagIndicator<Source>::value> |
|
| 970 |
template <typename From, typename To, |
|
| 971 |
bool revEnable = RevPathTagIndicator<From>::value> |
|
| 972 | 972 |
struct PathCopySelector {
|
| 973 |
static void copy(Target& target, const Source& source) {
|
|
| 974 |
PathCopySelectorForward<Target, Source>::copy(target, source); |
|
| 973 |
static void copy(const From& from, To& to) {
|
|
| 974 |
PathCopySelectorForward<From, To>::copy(from, to); |
|
| 975 | 975 |
} |
| 976 | 976 |
}; |
| 977 | 977 |
|
| 978 |
template <typename Target, typename Source> |
|
| 979 |
struct PathCopySelector<Target, Source, true> {
|
|
| 980 |
static void copy(Target& target, const Source& source) {
|
|
| 981 |
PathCopySelectorBackward<Target, Source>::copy(target, source); |
|
| 978 |
template <typename From, typename To> |
|
| 979 |
struct PathCopySelector<From, To, true> {
|
|
| 980 |
static void copy(const From& from, To& to) {
|
|
| 981 |
PathCopySelectorBackward<From, To>::copy(from, to); |
|
| 982 | 982 |
} |
| 983 | 983 |
}; |
| 984 | 984 |
|
| ... | ... |
@@ -987,11 +987,19 @@ |
| 987 | 987 |
|
| 988 | 988 |
/// \brief Make a copy of a path. |
| 989 | 989 |
/// |
| 990 |
/// This function makes a copy of a path. |
|
| 991 |
template <typename Target, typename Source> |
|
| 992 |
void copyPath(Target& target, const Source& source) {
|
|
| 993 |
checkConcept<concepts::PathDumper<typename Source::Digraph>, Source>(); |
|
| 994 |
|
|
| 990 |
/// This function makes a copy of a path. |
|
| 991 |
template <typename From, typename To> |
|
| 992 |
void pathCopy(const From& from, To& to) {
|
|
| 993 |
checkConcept<concepts::PathDumper<typename From::Digraph>, From>(); |
|
| 994 |
_path_bits::PathCopySelector<From, To>::copy(from, to); |
|
| 995 |
} |
|
| 996 |
|
|
| 997 |
/// \brief Deprecated version of \ref pathCopy(). |
|
| 998 |
/// |
|
| 999 |
/// Deprecated version of \ref pathCopy() (only for reverse compatibility). |
|
| 1000 |
template <typename To, typename From> |
|
| 1001 |
void copyPath(To& to, const From& from) {
|
|
| 1002 |
pathCopy(from, to); |
|
| 995 | 1003 |
} |
| 996 | 1004 |
|
| 997 | 1005 |
/// \brief Check the consistency of a path. |
0 comments (0 inline)