@@ -329,7 +329,7 @@ Returns:
329329 n-dimensional slice of the same type
330330See_also: $(LREF swapped), $(LREF transposed)
331331+/
332- Slice! (N, Range ) everted(size_t N, Range )(auto ref Slice! (N, Range ) slice)
332+ Slice! (N, Range ) everted(size_t N, Range )(Slice! (N, Range ) slice)
333333{
334334 mixin _DefineRet;
335335 with (slice)
@@ -378,7 +378,7 @@ private enum _transposedCode = q{
378378 }
379379};
380380
381- private size_t [N] completeTranspose (size_t N)(in size_t [] dimensions)
381+ private size_t [N] completeTranspose (size_t N)(size_t [] dimensions)
382382{
383383 assert (dimensions.length <= N);
384384 size_t [N] ctr;
@@ -410,7 +410,7 @@ See_also: $(LREF swapped), $(LREF everted)
410410template transposed (Dimensions... )
411411 if (Dimensions.length)
412412{
413- @fmb Slice! (N, Range ) transposed(size_t N, Range )(auto ref Slice! (N, Range ) slice)
413+ @fmb Slice! (N, Range ) transposed(size_t N, Range )(Slice! (N, Range ) slice)
414414 {
415415 mixin DimensionsCountCTError;
416416 foreach (i, dimension; Dimensions)
@@ -425,22 +425,7 @@ template transposed(Dimensions...)
425425}
426426
427427// /ditto
428- Slice! (N, Range ) transposed(size_t N, Range )(auto ref Slice! (N, Range ) slice, size_t dimension)
429- in
430- {
431- mixin (DimensionRTError);
432- }
433- body
434- {
435- size_t [1 ] permutation = void ;
436- permutation[0 ] = dimension;
437- immutable perm = completeTranspose! N(permutation);
438- assert (perm.isPermutation, __PRETTY_FUNCTION__ ~ " : internal error." );
439- mixin (_transposedCode);
440- }
441-
442- // /ditto
443- Slice! (N, Range ) transposed(size_t N, Range )(auto ref Slice! (N, Range ) slice, in size_t [] dimensions... )
428+ Slice! (N, Range ) transposed(size_t N, Range , size_t M)(Slice! (N, Range ) slice, size_t [M] dimensions... )
444429in
445430{
446431 mixin (DimensionsCountRTError);
458443}
459444
460445// /ditto
461- Slice! (2 , Range ) transposed(Range )(auto ref Slice! (2 , Range ) slice)
446+ Slice! (2 , Range ) transposed(Range )(Slice! (2 , Range ) slice)
462447{
463448 return .transposed! (1 , 0 )(slice);
464449}
@@ -564,28 +549,19 @@ template reversed(Dimensions...)
564549}
565550
566551// /ditto
567- Slice! (N, Range ) reversed(size_t N, Range )(Slice! (N, Range ) slice, size_t dimension)
568- in
569- {
570- mixin (DimensionRTError);
571- }
572- body
573- {
574- mixin (_reversedCode);
575- return slice;
576- }
577-
578- // /ditto
579- Slice! (N, Range ) reversed(size_t N, Range )(Slice! (N, Range ) slice, in size_t [] dimensions... )
552+ Slice! (N, Range ) reversed(size_t N, Range , size_t M)(Slice! (N, Range ) slice, size_t [M] dimensions... )
580553in
581554{
582555 foreach (dimension; dimensions)
583556 mixin (DimensionRTError);
584557}
585558body
586559{
587- foreach (dimension; dimensions)
560+ foreach (i; Iota! (0 , M))
561+ {
562+ auto dimension = dimensions[i];
588563 mixin (_reversedCode);
564+ }
589565 return slice;
590566}
591567
@@ -904,28 +880,19 @@ template dropOne(Dimensions...)
904880}
905881
906882// /ditto
907- Slice! (N, Range ) dropOne(size_t N, Range )(Slice! (N, Range ) slice, size_t dimension)
908- in
909- {
910- mixin (DimensionRTError);
911- }
912- body
913- {
914- slice.popFront(dimension);
915- return slice;
916- }
917-
918- // /ditto
919- Slice! (N, Range ) dropOne(size_t N, Range )(Slice! (N, Range ) slice, in size_t [] dimensions... )
883+ Slice! (N, Range ) dropOne(size_t N, Range , size_t M)(Slice! (N, Range ) slice, size_t [M] dimensions... )
920884in
921885{
922886 foreach (dimension; dimensions)
923887 mixin (DimensionRTError);
924888}
925889body
926890{
927- foreach (dimension; dimensions)
891+ foreach (i; Iota! (0 , M))
892+ {
893+ auto dimension = dimensions[i];
928894 slice.popFront(dimension);
895+ }
929896 return slice;
930897}
931898
@@ -945,28 +912,19 @@ template dropBackOne(Dimensions...)
945912}
946913
947914// /ditto
948- Slice! (N, Range ) dropBackOne(size_t N, Range )(Slice! (N, Range ) slice, size_t dimension)
949- in
950- {
951- mixin (DimensionRTError);
952- }
953- body
954- {
955- slice.popBack(dimension);
956- return slice;
957- }
958-
959- // /ditto
960- Slice! (N, Range ) dropBackOne(size_t N, Range )(Slice! (N, Range ) slice, in size_t [] dimensions... )
915+ Slice! (N, Range ) dropBackOne(size_t N, Range , size_t M)(Slice! (N, Range ) slice, size_t [M] dimensions... )
961916in
962917{
963918 foreach (dimension; dimensions)
964919 mixin (DimensionRTError);
965920}
966921body
967922{
968- foreach (dimension; dimensions)
923+ foreach (i; Iota! (0 , M))
924+ {
925+ auto dimension = dimensions[i];
969926 slice.popBack(dimension);
927+ }
970928 return slice;
971929}
972930
0 commit comments