|
@@ -237,6 +237,38 @@
|
237
|
237
|
memcpy(&a[0],&b[0],_MIN(sizeof(a),sizeof(b))); \
|
238
|
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
|
272
|
// Macros for initializing arrays
|
241
|
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
|
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,10 +286,13 @@
|
254
|
286
|
#define LIST_3( A,B,C,...) A,B,C
|
255
|
287
|
#define LIST_2( A,B,...) A,B
|
256
|
288
|
#define LIST_1( A,...) A
|
|
289
|
+#define LIST_0(...)
|
257
|
290
|
|
258
|
291
|
#define _LIST_N(N,V...) LIST_##N(V)
|
259
|
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
|
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
|
297
|
#define _JOIN_1(O) (O)
|
263
|
298
|
#define JOIN_N(N,C,V...) (DO(JOIN,C,LIST_N(N,V)))
|
|
@@ -465,6 +500,9 @@
|
465
|
500
|
#define ADD8(N) ADD4(ADD4(N))
|
466
|
501
|
#define ADD9(N) ADD4(ADD5(N))
|
467
|
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
|
507
|
// Macros for subtracting
|
470
|
508
|
#define DEC_0 0
|