You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: Marlin/src/core/types.h
+55-38
Original file line number
Diff line number
Diff line change
@@ -430,21 +430,24 @@ struct XYval {
430
430
FI XYval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
431
431
FI XYval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
432
432
FI XYval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
433
-
FI XYval<T>& operator+=(const XYZval<T> &rs) { x += rs.x; y += rs.y; return *this; }
434
-
FI XYval<T>& operator-=(const XYZval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
435
-
FI XYval<T>& operator*=(const XYZval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
436
-
FI XYval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; return *this; }
437
-
FI XYval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
438
-
FI XYval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
433
+
FI XYval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
434
+
FI XYval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
435
+
FI XYval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
436
+
FI XYval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
437
+
FI XYval<T>& operator/=(const XYZval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
438
+
FI XYval<T>& operator+=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
439
+
FI XYval<T>& operator-=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
440
+
FI XYval<T>& operator*=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
441
+
FI XYval<T>& operator/=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
439
442
FI XYval<T>& operator*=(constfloat &p) { x *= p; y *= p; return *this; }
440
443
FI XYval<T>& operator*=(constint &p) { x *= p; y *= p; return *this; }
441
444
FI XYval<T>& operator>>=(constint &p) { _RS(x); _RS(y); return *this; }
442
445
FI XYval<T>& operator<<=(constint &p) { _LS(x); _LS(y); return *this; }
443
446
444
447
// Exact comparisons. For floats a "NEAR" operation may be better.
445
-
FI booloperator==(const XYval<T> &rs) const { return x == rs.x && y == rs.y; }
446
-
FI booloperator==(const XYZval<T> &rs) const { return x == rs.x && y == rs.y; }
447
-
FI booloperator==(const XYZEval<T> &rs) const { return x == rs.x && y == rs.y; }
448
+
FI booloperator==(const XYval<T> &rs) const { returnNUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
449
+
FI booloperator==(const XYZval<T> &rs) const { returnNUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
450
+
FI booloperator==(const XYZEval<T> &rs) const { returnNUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
448
451
FI booloperator!=(const XYval<T> &rs) const { return !operator==(rs); }
449
452
FI booloperator!=(const XYZval<T> &rs) const { return !operator==(rs); }
450
453
FI booloperator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
@@ -465,22 +468,27 @@ struct XYZval {
465
468
FI voidreset() { NUM_AXIS_GANG(x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
466
469
467
470
// Setters taking struct types and arrays
468
-
FI voidset(const T px) { x = px; }
469
-
FI voidset(const T px, const T py) { x = px; y = py; }
470
-
FI voidset(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
471
-
FI voidset(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP); }
472
-
FI voidset(constT (&arr)[XY]) { x = arr[0]; y = arr[1]; }
473
-
#if HAS_Z_AXIS
474
-
FI voidset(constT (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
475
-
FI voidset(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
476
-
#endif
471
+
FI voidset(const XYval<T> pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); }
472
+
FI voidset(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); }
473
+
FI voidset(constT (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
477
474
#if LOGICAL_AXES > NUM_AXES
478
475
FI voidset(constT (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
479
476
FI voidset(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
480
477
#if DISTINCT_AXES > LOGICAL_AXES
481
478
FI voidset(constT (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
482
479
#endif
483
480
#endif
481
+
482
+
// Setter for all individual args
483
+
FI voidset(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
484
+
485
+
// Setters with fewer elements leave the rest untouched
486
+
#if HAS_Y_AXIS
487
+
FI voidset(const T px) { x = px; }
488
+
#endif
489
+
#if HAS_Z_AXIS
490
+
FI voidset(const T px, const T py) { x = px; y = py; }
491
+
#endif
484
492
#if HAS_I_AXIS
485
493
FI voidset(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
486
494
#endif
@@ -620,9 +628,31 @@ struct XYZEval {
620
628
// Reset all to 0
621
629
FI voidreset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
622
630
623
-
// Setters for some number of linear axes, not all
624
-
FI voidset(const T px) { x = px; }
625
-
FI voidset(const T px, const T py) { x = px; y = py; }
631
+
// Setters taking struct types and arrays
632
+
FI voidset(const XYval<T> pxy) { x = pxy.x; OPTCODE(HAS_Y_AXIS, y = pxy.y) }
633
+
FI voidset(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
634
+
FI voidset(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
635
+
FI voidset(constT (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
636
+
#if LOGICAL_AXES > NUM_AXES
637
+
FI voidset(constT (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
638
+
FI voidset(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
639
+
FI voidset(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
640
+
FI voidset(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
641
+
#if DISTINCT_AXES > LOGICAL_AXES
642
+
FI voidset(constT (&arr)[DISTINCT_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
643
+
#endif
644
+
#endif
645
+
646
+
// Setter for all individual args
647
+
FI voidset(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
648
+
649
+
// Setters with fewer elements leave the rest untouched
650
+
#if HAS_Y_AXIS
651
+
FI voidset(const T px) { x = px; }
652
+
#endif
653
+
#if HAS_Z_AXIS
654
+
FI voidset(const T px, const T py) { x = px; y = py; }
655
+
#endif
626
656
#if HAS_I_AXIS
627
657
FI voidset(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
628
658
#endif
@@ -642,19 +672,6 @@ struct XYZEval {
642
672
FI voidset(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; v = pv; }
643
673
#endif
644
674
645
-
// Setters taking struct types and arrays
646
-
FI voidset(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
647
-
FI voidset(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
648
-
#if HAS_Z_AXIS
649
-
FI voidset(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
650
-
#endif
651
-
FI voidset(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
652
-
#if LOGICAL_AXES > NUM_AXES
653
-
FI voidset(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
654
-
FI voidset(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
655
-
FI voidset(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
743
-
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
744
-
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
745
-
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
759
+
FI XYZEval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
760
+
FI XYZEval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
761
+
FI XYZEval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
762
+
FI XYZEval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
746
763
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
747
764
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
748
765
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
0 commit comments