From 0dd4a68913c8b6aa6e43342015f966143802ff22 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 13 Feb 2023 18:55:26 +0100 Subject: [PATCH] Use only letters to encode configuration in the namespace --- src/ArduinoJson/Namespace.hpp | 7 ++-- src/ArduinoJson/Polyfills/preprocessor.hpp | 38 ++++++++++++---------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/ArduinoJson/Namespace.hpp b/src/ArduinoJson/Namespace.hpp index e6e472a1..46a55c1a 100644 --- a/src/ArduinoJson/Namespace.hpp +++ b/src/ArduinoJson/Namespace.hpp @@ -11,15 +11,14 @@ #ifndef ARDUINOJSON_VERSION_NAMESPACE # define ARDUINOJSON_VERSION_NAMESPACE \ - ARDUINOJSON_CONCAT4( \ + ARDUINOJSON_CONCAT3( \ ARDUINOJSON_CONCAT4(V, ARDUINOJSON_VERSION_MAJOR, \ ARDUINOJSON_VERSION_MINOR, \ ARDUINOJSON_VERSION_REVISION), \ - _, \ - ARDUINOJSON_HEX_DIGIT( \ + ARDUINOJSON_BIN2ALPHA( \ ARDUINOJSON_ENABLE_PROGMEM, ARDUINOJSON_USE_LONG_LONG, \ ARDUINOJSON_USE_DOUBLE, ARDUINOJSON_ENABLE_STRING_DEDUPLICATION), \ - ARDUINOJSON_HEX_DIGIT( \ + ARDUINOJSON_BIN2ALPHA( \ ARDUINOJSON_ENABLE_NAN, ARDUINOJSON_ENABLE_INFINITY, \ ARDUINOJSON_ENABLE_COMMENTS, ARDUINOJSON_DECODE_UNICODE)) diff --git a/src/ArduinoJson/Polyfills/preprocessor.hpp b/src/ArduinoJson/Polyfills/preprocessor.hpp index c9b97c94..4b76186d 100644 --- a/src/ArduinoJson/Polyfills/preprocessor.hpp +++ b/src/ArduinoJson/Polyfills/preprocessor.hpp @@ -12,24 +12,26 @@ #define ARDUINOJSON_CONCAT_(A, B) A##B #define ARDUINOJSON_CONCAT2(A, B) ARDUINOJSON_CONCAT_(A, B) +#define ARDUINOJSON_CONCAT3(A, B, C) \ + ARDUINOJSON_CONCAT2(ARDUINOJSON_CONCAT2(A, B), C) #define ARDUINOJSON_CONCAT4(A, B, C, D) \ ARDUINOJSON_CONCAT2(ARDUINOJSON_CONCAT2(A, B), ARDUINOJSON_CONCAT2(C, D)) -#define ARDUINOJSON_HEX_DIGIT_0000() 0 -#define ARDUINOJSON_HEX_DIGIT_0001() 1 -#define ARDUINOJSON_HEX_DIGIT_0010() 2 -#define ARDUINOJSON_HEX_DIGIT_0011() 3 -#define ARDUINOJSON_HEX_DIGIT_0100() 4 -#define ARDUINOJSON_HEX_DIGIT_0101() 5 -#define ARDUINOJSON_HEX_DIGIT_0110() 6 -#define ARDUINOJSON_HEX_DIGIT_0111() 7 -#define ARDUINOJSON_HEX_DIGIT_1000() 8 -#define ARDUINOJSON_HEX_DIGIT_1001() 9 -#define ARDUINOJSON_HEX_DIGIT_1010() A -#define ARDUINOJSON_HEX_DIGIT_1011() B -#define ARDUINOJSON_HEX_DIGIT_1100() C -#define ARDUINOJSON_HEX_DIGIT_1101() D -#define ARDUINOJSON_HEX_DIGIT_1110() E -#define ARDUINOJSON_HEX_DIGIT_1111() F -#define ARDUINOJSON_HEX_DIGIT_(A, B, C, D) ARDUINOJSON_HEX_DIGIT_##A##B##C##D() -#define ARDUINOJSON_HEX_DIGIT(A, B, C, D) ARDUINOJSON_HEX_DIGIT_(A, B, C, D) +#define ARDUINOJSON_BIN2ALPHA_0000() A +#define ARDUINOJSON_BIN2ALPHA_0001() B +#define ARDUINOJSON_BIN2ALPHA_0010() C +#define ARDUINOJSON_BIN2ALPHA_0011() D +#define ARDUINOJSON_BIN2ALPHA_0100() E +#define ARDUINOJSON_BIN2ALPHA_0101() F +#define ARDUINOJSON_BIN2ALPHA_0110() F +#define ARDUINOJSON_BIN2ALPHA_0111() H +#define ARDUINOJSON_BIN2ALPHA_1000() I +#define ARDUINOJSON_BIN2ALPHA_1001() J +#define ARDUINOJSON_BIN2ALPHA_1010() K +#define ARDUINOJSON_BIN2ALPHA_1011() L +#define ARDUINOJSON_BIN2ALPHA_1100() M +#define ARDUINOJSON_BIN2ALPHA_1101() N +#define ARDUINOJSON_BIN2ALPHA_1110() O +#define ARDUINOJSON_BIN2ALPHA_1111() P +#define ARDUINOJSON_BIN2ALPHA_(A, B, C, D) ARDUINOJSON_BIN2ALPHA_##A##B##C##D() +#define ARDUINOJSON_BIN2ALPHA(A, B, C, D) ARDUINOJSON_BIN2ALPHA_(A, B, C, D)