// ArduinoJson - https://arduinojson.org // Copyright © 2014-2023, Benoit BLANCHON // MIT License #pragma once #include #include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE namespace string_traits_impl { // const char* c_str() const // - String // - std::string template struct has_cstr : false_type {}; template struct has_cstr().c_str()), const char*>::value>::type> : true_type {}; // const char* data() const // - std::string // - std::string_view // - etl::string template struct has_data : false_type {}; template struct has_data().data()), const char*>::value>::type> : true_type {}; // size_t length() const // - String template struct has_length : false_type {}; template struct has_length< T, typename enable_if< is_same().length()), size_t>::value>::type> : true_type {}; // size_t size() const // - std::string // - std::string_view // - etl::string template struct has_size : false_type {}; template struct has_size< T, typename enable_if< is_same().size()), size_t>::value>::type> : true_type {}; } // namespace string_traits_impl template struct string_traits { enum { has_cstr = string_traits_impl::has_cstr::value, has_length = string_traits_impl::has_length::value, has_data = string_traits_impl::has_data::value, has_size = string_traits_impl::has_size::value }; }; ARDUINOJSON_END_PRIVATE_NAMESPACE