Skip to content

Commit 4e18fe4

Browse files
committed
Remove pointer_to_values() type parameter default
1 parent 9dee212 commit 4e18fe4

2 files changed

Lines changed: 25 additions & 25 deletions

File tree

jsrc/array.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ num(int64_t n) {
3535
return reinterpret_cast<array>(Bnum[n - NUMMIN]);
3636
}
3737

38-
template <typename Value = int64_t>
38+
template <typename Value>
3939
[[nodiscard]] inline auto
4040
pointer_to_values(array x) -> Value* {
4141
return reinterpret_cast<Value*>(reinterpret_cast<C*>(x) + x->kchain.k);
@@ -50,7 +50,7 @@ is_sparse(array x) noexcept -> bool {
5050
template <typename T>
5151
auto
5252
set_value_at(array x, int32_t index, T const& value) -> void {
53-
pointer_to_values(x)[index] = value;
53+
pointer_to_values<T>(x)[index] = value;
5454
}
5555

5656
// TODO: remove eventually, temporary while c_types exist

jsrc/conversions.cpp

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ jtxd1(J jt, D p, I mode) -> X {
174174
if (p == -inf) { return jtvci(jt, XNINF); }
175175
array t = make_array<int64_t, copy_shape_0>(jt, 30, 1);
176176
if (!t) return 0;
177-
auto *u = pointer_to_values(t);
177+
auto *u = pointer_to_values<int64_t>(t);
178178
int64_t m = 0;
179179
auto d = std::abs(p);
180180
while (0 < d) {
@@ -184,7 +184,7 @@ jtxd1(J jt, D p, I mode) -> X {
184184
d = q;
185185
if (m == AN(t)) {
186186
RZ(t = jtext(jt, 0, t));
187-
u = pointer_to_values(t);
187+
u = pointer_to_values<int64_t>(t);
188188
}
189189
}
190190
if (m == 0) {
@@ -208,15 +208,15 @@ template <>
208208
convert<X, bool>(J jt, array w, void *yv) -> bool {
209209
auto *v = pointer_to_values<X>(w);
210210
auto *x = static_cast<B *>(yv);
211-
DO(AN(w), array q = v[i]; I e = pointer_to_values(q)[0]; if ((AN(q) ^ 1) | (e & -2)) return false; x[i] = (B)e;);
211+
DO(AN(w), array q = v[i]; I e = pointer_to_values<int64_t>(q)[0]; if ((AN(q) ^ 1) | (e & -2)) return false; x[i] = (B)e;);
212212
return true;
213213
}
214214

215215
template <typename T>
216216
[[nodiscard]] static auto
217217
value_from_X(X p) -> T {
218218
auto const n = AN(p);
219-
auto const v = std::reverse_iterator(pointer_to_values(p) + n);
219+
auto const v = std::reverse_iterator(pointer_to_values<int64_t>(p) + n);
220220
return std::accumulate(v, v + n, T{}, [](auto d, auto v) { return v + d * XBASE; });
221221
}
222222

@@ -242,7 +242,7 @@ template <>
242242
[[nodiscard]] auto
243243
convert<X, D>(J jt, array w, void *yv) -> bool {
244244
return convert<X, D>(jt, w, yv, [](auto p) {
245-
auto const c = pointer_to_values(p)[AN(p) - 1];
245+
auto const c = pointer_to_values<int64_t>(p)[AN(p) - 1];
246246
if (c == XPINF) { return inf; }
247247
if (c == XNINF) { return infm; }
248248
return value_from_X<double>(p);
@@ -297,7 +297,7 @@ convert<D, Q>(J jt, array w, void *yv, I mode) -> bool {
297297
q.d = jtca(jt, iv1);
298298
}
299299
}
300-
if (neg) { inplace_negate(pointer_to_values(q.n), AN(q.n)); }
300+
if (neg) { inplace_negate(pointer_to_values<int64_t>(q.n), AN(q.n)); }
301301
*x++ = q;
302302
}
303303
return !jt->jerr;
@@ -324,16 +324,16 @@ convert<Q, D>(J jt, array w, void *yv) -> bool {
324324
for (int64_t i = 0; i < wn; ++i) {
325325
auto *const p = wv[i].n;
326326
auto const pn = AN(p);
327-
auto const k = 1 == pn ? pointer_to_values(p)[0] : 0;
327+
auto const k = 1 == pn ? pointer_to_values<int64_t>(p)[0] : 0;
328328
auto *const q = wv[i].d;
329329
auto const qn = AN(q);
330330
if (k == XPINF) {
331331
x[i] = inf;
332332
} else if (k == XNINF) {
333333
x[i] = infm;
334334
} else if (pn <= nn && qn <= nn) {
335-
auto const n = add_digits(pn, pointer_to_values(p));
336-
auto const d = add_digits(qn, pointer_to_values(q));
335+
auto const n = add_digits(pn, pointer_to_values<int64_t>(p));
336+
auto const d = add_digits(qn, pointer_to_values<int64_t>(q));
337337
x[i] = n / d;
338338
} else {
339339
if (x2 == nullptr) {
@@ -345,7 +345,7 @@ convert<Q, D>(J jt, array w, void *yv) -> bool {
345345
auto const cn = AN(c);
346346
auto const m = MIN(cn, 5);
347347
auto const r = cn - (m + k);
348-
auto *const v = pointer_to_values(c) + cn - m;
348+
auto *const v = pointer_to_values<int64_t>(c) + cn - m;
349349
auto const n = add_digits(m, v);
350350
auto d = std::pow(xb, std::abs(r));
351351
x[i] = 0 > r ? n / d : n * d;
@@ -471,14 +471,14 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
471471
case CVCASE(XNUMX, B01X): return convert<bool, X>(jt, w, yv);
472472
case CVCASE(RATX, B01X):
473473
GATV(d, XNUM, n, r, s);
474-
return convert<bool, X>(jt, w, pointer_to_values(d)) && convert<X, Q>(jt, d, yv);
474+
return convert<bool, X>(jt, w, pointer_to_values<int64_t>(d)) && convert<X, Q>(jt, d, yv);
475475
case CVCASE(FLX, B01X): std::copy_n(pointer_to_values<B>(w), n, static_cast<D *>(yv)); return true;
476476
case CVCASE(CMPXX, B01X): set_real_part(static_cast<Z *>(yv), n, pointer_to_values<B>(w)); return true;
477477
case CVCASE(B01X, INTX): return convert<I, bool>(jt, w, yv);
478478
case CVCASE(XNUMX, INTX): return convert<I, X>(jt, w, yv);
479479
case CVCASE(RATX, INTX):
480480
GATV(d, XNUM, n, r, s);
481-
return convert<I, X>(jt, w, pointer_to_values(d)) && convert<X, Q>(jt, d, yv);
481+
return convert<I, X>(jt, w, pointer_to_values<int64_t>(d)) && convert<X, Q>(jt, d, yv);
482482
case CVCASE(FLX, INTX): std::copy_n(pointer_to_values<I>(w), n, static_cast<D *>(yv)); return true;
483483
case CVCASE(CMPXX, INTX): set_real_part(static_cast<Z *>(yv), n, pointer_to_values<I>(w)); return true;
484484
case CVCASE(B01X, FLX): return convert<D, bool>(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
@@ -492,20 +492,20 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
492492
case CVCASE(CMPXX, FLX): return convert<D, Z>(jt, w, yv);
493493
case CVCASE(B01X, CMPXX):
494494
GATV(d, FL, n, r, s);
495-
return convert<Z, D>(jt, w, pointer_to_values(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
495+
return convert<Z, D>(jt, w, pointer_to_values<int64_t>(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
496496
convert<D, bool>(jt, d, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
497497
case CVCASE(INTX, CMPXX):
498498
GATV(d, FL, n, r, s);
499-
return convert<Z, D>(jt, w, pointer_to_values(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
499+
return convert<Z, D>(jt, w, pointer_to_values<int64_t>(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
500500
convert<D, I>(jt, d, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
501501
case CVCASE(XNUMX, CMPXX):
502502
GATV(d, FL, n, r, s);
503-
return convert<Z, D>(jt, w, pointer_to_values(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
503+
return convert<Z, D>(jt, w, pointer_to_values<int64_t>(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
504504
convert<D, X>(
505505
jt, d, yv, (jt->xmode & REPSGN(SGNIFNOT(tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
506506
case CVCASE(RATX, CMPXX):
507507
GATV(d, FL, n, r, s);
508-
return convert<Z, D>(jt, w, pointer_to_values(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
508+
return convert<Z, D>(jt, w, pointer_to_values<int64_t>(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
509509
convert<D, Q>(
510510
jt, d, yv, (jt->xmode & REPSGN(SGNIFNOT(tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
511511
case CVCASE(FLX, CMPXX): return convert<Z, D>(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
@@ -515,18 +515,18 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
515515
case CVCASE(FLX, XNUMX): return convert<X, D>(jt, w, yv);
516516
case CVCASE(CMPXX, XNUMX):
517517
GATV(d, FL, n, r, s);
518-
return convert<X, D>(jt, w, pointer_to_values(d)) && convert<D, Z>(jt, d, yv);
518+
return convert<X, D>(jt, w, pointer_to_values<int64_t>(d)) && convert<D, Z>(jt, d, yv);
519519
case CVCASE(B01X, RATX):
520520
GATV(d, XNUM, n, r, s);
521-
return convert<Q, X>(jt, w, pointer_to_values(d)) && convert<X, bool>(jt, d, yv);
521+
return convert<Q, X>(jt, w, pointer_to_values<int64_t>(d)) && convert<X, bool>(jt, d, yv);
522522
case CVCASE(INTX, RATX):
523523
GATV(d, XNUM, n, r, s);
524-
return convert<Q, X>(jt, w, pointer_to_values(d)) && convert<X, I>(jt, d, yv);
524+
return convert<Q, X>(jt, w, pointer_to_values<int64_t>(d)) && convert<X, I>(jt, d, yv);
525525
case CVCASE(XNUMX, RATX): return convert<Q, X>(jt, w, yv);
526526
case CVCASE(FLX, RATX): return convert<Q, D>(jt, w, yv);
527527
case CVCASE(CMPXX, RATX):
528528
GATV(d, FL, n, r, s);
529-
return convert<Q, D>(jt, w, pointer_to_values(d)) && convert<D, Z>(jt, d, yv);
529+
return convert<Q, D>(jt, w, pointer_to_values<int64_t>(d)) && convert<D, Z>(jt, d, yv);
530530
default: ASSERT(0, EVDOMAIN);
531531
}
532532
}
@@ -568,7 +568,7 @@ jtbcvt(J jt, C mode, array w) -> array {
568568
if (flags == AN(w)) {
569569
if (ipok >= 0) GATV(result, INT, AN(w), AR(w), AS(w));
570570
std::transform(
571-
wv, wv + AN(w), pointer_to_values(result), [&](auto const &z) { return as_integer(z.re); });
571+
wv, wv + AN(w), pointer_to_values<int64_t>(result), [&](auto const &z) { return as_integer(z.re); });
572572
} else {
573573
if (ipok >= 0) GATV(result, CMPX, AN(w), AR(w), AS(w));
574574
std::transform(wv, wv + AN(w), pointer_to_values<Z>(result), [&](auto const &z) -> Z {
@@ -600,7 +600,7 @@ jticvt(J jt, array w) -> array {
600600
auto const *v = pointer_to_values<double>(w);
601601
array z = nullptr;
602602
GATV(z, INT, n, AR(w), AS(w));
603-
auto *u = pointer_to_values(z);
603+
auto *u = pointer_to_values<int64_t>(z);
604604
for (int64_t i = 0; i < n; ++i) {
605605
auto x = *v++;
606606
if (x < IMIN || FLIMAX <= x) {
@@ -655,7 +655,7 @@ jtxco2(J jt, array a, array w) -> array {
655655
array z = nullptr;
656656
GATV(z, XNUM, 2 * n, r + 1, AS(w));
657657
AS(z)[r] = 2;
658-
memcpy(pointer_to_values(z), pointer_to_values(w), 2 * n * SZI);
658+
memcpy(pointer_to_values<void>(z), pointer_to_values<void>(w), 2 * n * SZI);
659659
return z;
660660
}
661661
default: ASSERT(0, EVDOMAIN);

0 commit comments

Comments
 (0)