Procházet zdrojové kódy

Auto enable std::string and stream on modern compilers (closes #1156)

Benoit Blanchon před 6 roky
rodič
revize
8550418875
2 změnil soubory, kde provedl 25 přidání a 0 odebrání
  1. 2 0
      CHANGELOG.md
  2. 23 0
      src/ArduinoJson/Configuration.hpp

+ 2 - 0
CHANGELOG.md

@@ -6,6 +6,8 @@ HEAD
 
 * Added `BasicJsonDocument::shrinkToFit()`
 * Added support of `uint8_t` for `serializeJson()`, `serializeJsonPretty()`, and `serializeMsgPack()` (issue #1142)
+* Auto enable support for `std::string` and `std::stream` on modern compilers (issue #1156)
+  No need to define `ARDUINOJSON_ENABLE_STD_STRING` and `ARDUINOJSON_ENABLE_STD_STREAM`.
 
 v6.13.0 (2019-11-01)
 -------

+ 23 - 0
src/ArduinoJson/Configuration.hpp

@@ -31,6 +31,29 @@
 #endif
 #endif
 
+// Auto enable std::stream if the right headers are here and no conflicting
+// macro is defined
+#if !defined(ARDUINOJSON_ENABLE_STD_STREAM) && defined(__has_include)
+#if __has_include(<istream>) && \
+    __has_include(<ostream>) && \
+    !defined(min) && \
+    !defined(max)
+#define ARDUINOJSON_ENABLE_STD_STREAM 1
+#else
+#define ARDUINOJSON_ENABLE_STD_STREAM 0
+#endif
+#endif
+
+// Auto enable std::string if the right header is here and no conflicting
+// macro is defined
+#if !defined(ARDUINOJSON_ENABLE_STD_STRING) && defined(__has_include)
+#if __has_include(<string>) && !defined(min) && !defined(max)
+#define ARDUINOJSON_ENABLE_STD_STRING 1
+#else
+#define ARDUINOJSON_ENABLE_STD_STRING 0
+#endif
+#endif
+
 #if ARDUINOJSON_EMBEDDED_MODE
 
 // Store floats by default to reduce the memory usage (issue #134)