gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge fix #321
0 1 0
merge 1.0
0 files changed with 51 insertions and 43 deletions:
↑ Collapse diff ↑
Ignore white space 4 line context
... ...
@@ -71,5 +71,5 @@
71 71
    template <typename CPath>
72 72
    Path(const CPath& cpath) {
73
      copyPath(*this, cpath);
73
      pathCopy(cpath, *this);
74 74
    }
75 75

	
... ...
@@ -79,5 +79,5 @@
79 79
    template <typename CPath>
80 80
    Path& operator=(const CPath& cpath) {
81
      copyPath(*this, cpath);
81
      pathCopy(cpath, *this);
82 82
      return *this;
83 83
    }
... ...
@@ -259,5 +259,5 @@
259 259
    template <typename CPath>
260 260
    SimplePath(const CPath& cpath) {
261
      copyPath(*this, cpath);
261
      pathCopy(cpath, *this);
262 262
    }
263 263

	
... ...
@@ -268,5 +268,5 @@
268 268
    template <typename CPath>
269 269
    SimplePath& operator=(const CPath& cpath) {
270
      copyPath(*this, cpath);
270
      pathCopy(cpath, *this);
271 271
      return *this;
272 272
    }
... ...
@@ -438,5 +438,5 @@
438 438
    template <typename CPath>
439 439
    ListPath(const CPath& cpath) : first(0), last(0) {
440
      copyPath(*this, cpath);
440
      pathCopy(cpath, *this);
441 441
    }
442 442

	
... ...
@@ -454,5 +454,5 @@
454 454
    template <typename CPath>
455 455
    ListPath& operator=(const CPath& cpath) {
456
      copyPath(*this, cpath);
456
      pathCopy(cpath, *this);
457 457
      return *this;
458 458
    }
... ...
@@ -764,5 +764,5 @@
764 764
    template <typename CPath>
765 765
    StaticPath(const CPath& cpath) : arcs(0) {
766
      copyPath(*this, cpath);
766
      pathCopy(cpath, *this);
767 767
    }
768 768

	
... ...
@@ -780,5 +780,5 @@
780 780
    template <typename CPath>
781 781
    StaticPath& operator=(const CPath& cpath) {
782
      copyPath(*this, cpath);
782
      pathCopy(cpath, *this);
783 783
      return *this;
784 784
    }
... ...
@@ -929,55 +929,55 @@
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
        target.build(source);
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
        target.buildRev(source);
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
    };
... ...
@@ -988,9 +988,17 @@
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
    _path_bits::PathCopySelector<Target, Source>::copy(target, source);
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

	
0 comments (0 inline)