Skip to content

Commit b1bc154

Browse files
committed
iota is sizediff_t by default
1 parent 593aa93 commit b1bc154

File tree

3 files changed

+48
-5
lines changed

3 files changed

+48
-5
lines changed

source/mir/ndslice/slice.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1986,7 +1986,7 @@ struct Slice(SliceKind kind, size_t[] packs, Iterator)
19861986
// auto minor = sli.indexed(c);
19871987
auto minor = sli[[0, $ / 2, $ - 1].sliced, [0, $ / 2, $ - 1].sliced];
19881988

1989-
minor[] = iota([3, 3], 1);
1989+
minor[] = iota!int([3, 3], 1);
19901990

19911991
assert(sli == [
19921992
// ↓ ↓ ↓︎

source/mir/ndslice/topology.d

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -597,11 +597,54 @@ iota
597597
return IotaIterator!I(I.init).sliced(lengths);
598598
}
599599

600+
///ditto
601+
Slice!(Contiguous, [N], IotaIterator!sizediff_t)
602+
iota
603+
(size_t N)(size_t[N] lengths, sizediff_t start)
604+
{
605+
import mir.ndslice.slice : sliced;
606+
return IotaIterator!sizediff_t(start).sliced(lengths);
607+
}
608+
609+
///ditto
610+
Slice!(Contiguous, [N], StrideIterator!(IotaIterator!sizediff_t))
611+
iota
612+
(size_t N)(size_t[N] lengths, sizediff_t start, size_t stride)
613+
{
614+
import mir.ndslice.slice : sliced;
615+
return StrideIterator!(IotaIterator!sizediff_t)(stride, IotaIterator!sizediff_t(start)).sliced(lengths);
616+
}
617+
618+
///ditto
619+
template iota(I)
620+
if (isIntegral!I)
621+
{
622+
///
623+
Slice!(Contiguous, [N], IotaIterator!I)
624+
iota
625+
(size_t N)(size_t[N] lengths, I start)
626+
if (isIntegral!I)
627+
{
628+
import mir.ndslice.slice : sliced;
629+
return IotaIterator!I(start).sliced(lengths);
630+
}
631+
632+
///ditto
633+
Slice!(Contiguous, [N], StrideIterator!(IotaIterator!I))
634+
iota
635+
(size_t N)(size_t[N] lengths, I start, size_t stride)
636+
if (isIntegral!I)
637+
{
638+
import mir.ndslice.slice : sliced;
639+
return StrideIterator!(IotaIterator!I)(stride, IotaIterator!I(start)).sliced(lengths);
640+
}
641+
}
642+
600643
///ditto
601644
Slice!(Contiguous, [N], IotaIterator!I)
602645
iota
603646
(I, size_t N)(size_t[N] lengths, I start)
604-
if (isIntegral!I || isPointer!I)
647+
if (isPointer!I)
605648
{
606649
import mir.ndslice.slice : sliced;
607650
return IotaIterator!I(start).sliced(lengths);
@@ -611,7 +654,7 @@ iota
611654
Slice!(Contiguous, [N], StrideIterator!(IotaIterator!I))
612655
iota
613656
(I, size_t N)(size_t[N] lengths, I start, size_t stride)
614-
if (isIntegral!I || isPointer!I)
657+
if (isPointer!I)
615658
{
616659
import mir.ndslice.slice : sliced;
617660
return StrideIterator!(IotaIterator!I)(stride, IotaIterator!I(start)).sliced(lengths);

source/mir/series.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ struct Series(IndexIterator, SliceKind kind, size_t[] packs, Iterator)
664664
// 6, 7, 8, 9, 10
665665
// 11, 12, 13, 14, 15
666666
// 16, 17, 18, 19, 20
667-
auto data = iota([index.length, row_length], 1);
667+
auto data = iota!int([index.length, row_length], 1);
668668

669669
// canonical and universal ndslices are more flexible then contiguous
670670
auto series = index.series(data.canonical);
@@ -679,7 +679,7 @@ struct Series(IndexIterator, SliceKind kind, size_t[] packs, Iterator)
679679

680680
/// indexing
681681
assert(series[1, 4] == observation(Date(2017, 02, 01), 10));
682-
assert(series[2] == observation(Date(2017, 03, 01), iota([row_length], 11)));
682+
assert(series[2] == observation(Date(2017, 03, 01), iota!int([row_length], 11)));
683683

684684
/// range primitives
685685
assert(series.length == 4);

0 commit comments

Comments
 (0)