gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Use pathCopy(from,to) instead of copyPath(to,from) (#321) The old version is kept as a deprecated alternative.
0 1 0
default
1 file changed with 51 insertions and 43 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
      copyPath(*this, cpath);
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
        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
    };
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
    _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

	
997 1005
  /// \brief Check the consistency of a path.
0 comments (0 inline)