Browse Source

:art: Additional utility macros

Scott Lahteine 4 years ago
parent
commit
390878e78a

+ 38
- 0
Marlin/src/core/macros.h View File

237
     memcpy(&a[0],&b[0],_MIN(sizeof(a),sizeof(b))); \
237
     memcpy(&a[0],&b[0],_MIN(sizeof(a),sizeof(b))); \
238
   }while(0)
238
   }while(0)
239
 
239
 
240
+#define CODE_9( A,B,C,D,E,F,G,H,I,...) A; B; C; D; E; F; G; H; I
241
+#define CODE_8( A,B,C,D,E,F,G,H,...) A; B; C; D; E; F; G; H
242
+#define CODE_7( A,B,C,D,E,F,G,...) A; B; C; D; E; F; G
243
+#define CODE_6( A,B,C,D,E,F,...) A; B; C; D; E; F
244
+#define CODE_5( A,B,C,D,E,...) A; B; C; D; E
245
+#define CODE_4( A,B,C,D,...) A; B; C; D
246
+#define CODE_3( A,B,C,...) A; B; C
247
+#define CODE_2( A,B,...) A; B
248
+#define CODE_1( A,...) A
249
+#define _CODE_N(N,V...) CODE_##N(V)
250
+#define CODE_N(N,V...) _CODE_N(N,V)
251
+
252
+#define GANG_16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,...) A B C D E F G H I J K L M N O P
253
+#define GANG_15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,...) A B C D E F G H I J K L M N O
254
+#define GANG_14(A,B,C,D,E,F,G,H,I,J,K,L,M,N,...) A B C D E F G H I J K L M N
255
+#define GANG_13(A,B,C,D,E,F,G,H,I,J,K,L,M...) A B C D E F G H I J K L M
256
+#define GANG_12(A,B,C,D,E,F,G,H,I,J,K,L...) A B C D E F G H I J K L
257
+#define GANG_11(A,B,C,D,E,F,G,H,I,J,K,...) A B C D E F G H I J K
258
+#define GANG_10(A,B,C,D,E,F,G,H,I,J,...) A B C D E F G H I J
259
+#define GANG_9( A,B,C,D,E,F,G,H,I,...) A B C D E F G H I
260
+#define GANG_8( A,B,C,D,E,F,G,H,...) A B C D E F G H
261
+#define GANG_7( A,B,C,D,E,F,G,...) A B C D E F G
262
+#define GANG_6( A,B,C,D,E,F,...) A B C D E F
263
+#define GANG_5( A,B,C,D,E,...) A B C D E
264
+#define GANG_4( A,B,C,D,...) A B C D
265
+#define GANG_3( A,B,C,...) A B C
266
+#define GANG_2( A,B,...) A B
267
+#define GANG_1( A,...) A
268
+#define _GANG_N(N,V...) GANG_##N(V)
269
+#define GANG_N(N,V...) _GANG_N(N,V)
270
+#define GANG_N_1(N,K) _GANG_N(N,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K)
271
+
240
 // Macros for initializing arrays
272
 // Macros for initializing arrays
241
 #define LIST_16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
273
 #define LIST_16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
242
 #define LIST_15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
274
 #define LIST_15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
254
 #define LIST_3( A,B,C,...) A,B,C
286
 #define LIST_3( A,B,C,...) A,B,C
255
 #define LIST_2( A,B,...) A,B
287
 #define LIST_2( A,B,...) A,B
256
 #define LIST_1( A,...) A
288
 #define LIST_1( A,...) A
289
+#define LIST_0(...)
257
 
290
 
258
 #define _LIST_N(N,V...) LIST_##N(V)
291
 #define _LIST_N(N,V...) LIST_##N(V)
259
 #define LIST_N(N,V...) _LIST_N(N,V)
292
 #define LIST_N(N,V...) _LIST_N(N,V)
293
+#define LIST_N_1(N,K) _LIST_N(N,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K)
260
 #define ARRAY_N(N,V...) { _LIST_N(N,V) }
294
 #define ARRAY_N(N,V...) { _LIST_N(N,V) }
295
+#define ARRAY_N_1(N,K)  { LIST_N_1(N,K) }
261
 
296
 
262
 #define _JOIN_1(O)         (O)
297
 #define _JOIN_1(O)         (O)
263
 #define JOIN_N(N,C,V...)   (DO(JOIN,C,LIST_N(N,V)))
298
 #define JOIN_N(N,C,V...)   (DO(JOIN,C,LIST_N(N,V)))
465
 #define ADD8(N)  ADD4(ADD4(N))
500
 #define ADD8(N)  ADD4(ADD4(N))
466
 #define ADD9(N)  ADD4(ADD5(N))
501
 #define ADD9(N)  ADD4(ADD5(N))
467
 #define ADD10(N) ADD5(ADD5(N))
502
 #define ADD10(N) ADD5(ADD5(N))
503
+#define SUM(A,B) _CAT(ADD,A)(B)
504
+#define DOUBLE_(n) ADD##n(n)
505
+#define DOUBLE(n) DOUBLE_(n)
468
 
506
 
469
 // Macros for subtracting
507
 // Macros for subtracting
470
 #define DEC_0   0
508
 #define DEC_0   0

+ 2
- 1
Marlin/src/gcode/feature/trinamic/M122.cpp View File

32
  * M122: Debug TMC drivers
32
  * M122: Debug TMC drivers
33
  */
33
  */
34
 void GcodeSuite::M122() {
34
 void GcodeSuite::M122() {
35
-  xyze_bool_t print_axis = { false, false, false, false };
35
+  xyze_bool_t print_axis = ARRAY_N_1(NUM_AXIS, false);
36
+
36
   bool print_all = true;
37
   bool print_all = true;
37
   LOOP_XYZE(i) if (parser.seen(axis_codes[i])) { print_axis[i] = true; print_all = false; }
38
   LOOP_XYZE(i) if (parser.seen(axis_codes[i])) { print_axis[i] = true; print_all = false; }
38
 
39
 

+ 2
- 2
Marlin/src/inc/Conditionals_LCD.h View File

617
 // Helper macros for extruder and hotend arrays
617
 // Helper macros for extruder and hotend arrays
618
 #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
618
 #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
619
 #define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
619
 #define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
620
-#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1, v1, v1)
620
+#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_N_1(EXTRUDERS, v1)
621
 #define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V)
621
 #define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V)
622
-#define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1, v1, v1)
622
+#define ARRAY_BY_HOTENDS1(v1) ARRAY_N_1(HOTENDS, v1)
623
 
623
 
624
 #if ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR)
624
 #if ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR)
625
   #define DO_SWITCH_EXTRUDER 1
625
   #define DO_SWITCH_EXTRUDER 1

+ 1
- 1
Marlin/src/module/temperature.cpp View File

313
   #endif
313
   #endif
314
 
314
 
315
   #if ENABLED(ADAPTIVE_FAN_SLOWING)
315
   #if ENABLED(ADAPTIVE_FAN_SLOWING)
316
-    uint8_t Temperature::fan_speed_scaler[FAN_COUNT] = ARRAY_N(FAN_COUNT, 128, 128, 128, 128, 128, 128, 128, 128);
316
+    uint8_t Temperature::fan_speed_scaler[FAN_COUNT] = ARRAY_N_1(FAN_COUNT, 128);
317
   #endif
317
   #endif
318
 
318
 
319
   /**
319
   /**

Loading…
Cancel
Save