EmbAJAX
Simplistic framework for creating and handling displays and controls on a web page served by an embeddable device (Arduino or other microcontroller with Arduino support).
macro_definitions.h
1
22
/* //////////// String formatting tokens //////////////// */
23
24
#define JS_QUOTED_STRING_ARG "\10"
25
#define HTML_QUOTED_STRING_ARG "\11"
26
//#define JS_ESCAPED_STRING_ARG '\12'
27
#define HTML_ESCAPED_STRING_ARG "\13"
28
#define PLAIN_STRING_ARG "\14"
29
#define INTEGER_VALUE_ARG "\15"
30
31
/* //////////// String formatting macros ////////////////
32
*
33
* The user-facing macro here is printFormatted(). This takes static strings and args in a
34
* and re-aggranges them so that static strings are merged into one, and the variable args args
35
* are appended at the end (suitable for EmbAJAXOutputDriverBase::printContentF(). */
36
37
// See https://stackoverflow.com/questions/11761703/overloading-macro-on-number-of-arguments
38
#define GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,NAME,...) NAME
39
#define printF_(...) GET_MACRO(__VA_ARGS__, printF_26, printF_25, printF_24, printF_23, printF_22, printF_21, printF_20, printF_19, printF_18, printF_17, printF_16, printF_15, printF_14, printF_13, printF_12, printF_11, printF_10, printF_9, printF_8, printF_7, printF_6, printF_5, printF_4, printF_3, printF_2, printF_1)(__VA_ARGS__)
40
41
#define JS_QUOTED_STRING(X) JS_QUOTED_STRING_ARG, (const char*) X
42
#define HTML_QUOTED_STRING(X) HTML_QUOTED_STRING_ARG, (const char*) X
43
//#define JS_QUOTED_STRING(X) JS_ESCAPED_STRING_ARG, (const char*) X
44
#define HTML_ESCAPED_STRING(X) HTML_ESCAPED_STRING_ARG, (const char*) X
45
#define PLAIN_STRING(X) PLAIN_STRING_ARG, (const char*) X
46
#define INTEGER_VALUE(X) INTEGER_VALUE_ARG, (int) X
47
48
#define printF_proxy(X, ...) _printContentF(X, __VA_ARGS__);
49
50
#define printFormatted(...) printF_(__VA_ARGS__)
51
#define printF_3(F1, A1a, A1b) printF_proxy((F1 A1a), A1b)
52
#define printF_4(F1, A1a, A1b, F2) printF_proxy((F1 A1a F2), A1b)
53
//#define printF_5(...) // Not validly possible, as we always follow fmt, arg, fmt, arg...
54
#define printF_6(F1, A1a, A1b, F2, A2a, A2b) printF_proxy((F1 A1a F2 A2a), A1b, A2b)
55
#define printF_7(F1, A1a, A1b, F2, A2a, A2b, F3) printF_proxy((F1 A1a F2 A2a F3), A1b, A2b)
56
//#define printF_8(...)
57
#define printF_9(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b) printF_proxy((F1 A1a F2 A2a F3 A3a), A1b, A2b, A3b)
58
#define printF_10(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4) printF_proxy((F1 A1a F2 A2a F3 A3a F4), A1b, A2b, A3b)
59
//#define printF_11(...)
60
#define printF_12(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a), A1b, A2b, A3b, A4b)
61
#define printF_13(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5), A1b, A2b, A3b, A4b)
62
//#define printF_14(...)
63
#define printF_15(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a), A1b, A2b, A3b, A4b, A5b)
64
#define printF_16(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6), A1b, A2b, A3b, A4b, A5b)
65
//#define printF_17(...)
66
#define printF_18(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a), A1b, A2b, A3b, A4b, A5b, A6b)
67
#define printF_19(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b, F7) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a F7), A1b, A2b, A3b, A4b, A5b, A6b)
68
//#define printF_20(...)
69
#define printF_21(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b, F7, A7a, A7b) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a F7 A7a), A1b, A2b, A3b, A4b, A5b, A6b, A7b)
70
#define printF_22(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b, F7, A7a, A7b, F8) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a F7 A7a F8), A1b, A2b, A3b, A4b, A5b, A6b, A7b)
71
//#define printF_23(...)
72
#define printF_24(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b, F7, A7a, A7b, F8, A8a, A8b) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a F7 A7a F8 A8a), A1b, A2b, A3b, A4b, A5b, A6b, A7b, A8b)
73
#define printF_25(F1, A1a, A1b, F2, A2a, A2b, F3, A3a, A3b, F4, A4a, A4b, F5, A5a, A5b, F6, A6a, A6b, F7, A7a, A7b, F8, A8a, A8b, F9) printF_proxy((F1 A1a F2 A2a F3 A3a F4 A4a F5 A5a F6 A6a F7 A7a F8 A8a F9), A1b, A2b, A3b, A4b, A5b, A6b, A7b, A8b)
74
75
//printFormatted("A string", HTML(value), "appendix", HTML(id), "end")
76
Generated by
1.9.1