Azure / azure-sdk-for-cpp

This repository is for active development of the Azure SDK for C++. For consumers of the SDK we recommend visiting our versioned developer docs at https://azure.github.io/azure-sdk-for-cpp.
MIT License
170 stars 118 forks source link

Json library update and Xcode15 #5681

Closed gearama closed 1 week ago

gearama commented 1 month ago

closes #5670 Updated json library Updated macos tests to ver 14 Readmes have been touched with add/remove spaces at the end to trigger all Ci pipelines in order to run all tests to verify the json library behaves as expected

Ran all the CI pipelines , since i have to revert the readme files i paste the result here

image

Pull Request Checklist

Please leverage this checklist as a reminder to address commonly occurring feedback when submitting a pull request to make sure your PR can be reviewed quickly:

See the detailed list in the contributing guide.

antkmsft commented 3 weeks ago

I compared the files locally, and we need to add prefix to all the macros that are getting defined. In the previous version, we prefixed them all with _az_, but if we're touching them anyways, let's change that to _azure_?

#ifndef _azure_JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
#define _azure_JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
#endif

etc, etc.

antkmsft commented 3 weeks ago

@gearama, this should do it:

(Get-Content sdk/core/azure-core/inc/azure/core/internal/json/json.hpp) `
.Replace('NLOHMANN_JSON_TO', '_azure_NLOHMANN_JSON_TO') `
.Replace('NLOHMANN_JSON_SERIALIZE_ENUM', '_azure_NLOHMANN_JSON_SERIALIZE_ENUM') `
.Replace('NLOHMANN_JSON_PASTE64', '_azure_NLOHMANN_JSON_PASTE64') `
.Replace('NLOHMANN_JSON_PASTE63', '_azure_NLOHMANN_JSON_PASTE63') `
.Replace('NLOHMANN_JSON_PASTE62', '_azure_NLOHMANN_JSON_PASTE62') `
.Replace('NLOHMANN_JSON_PASTE61', '_azure_NLOHMANN_JSON_PASTE61') `
.Replace('NLOHMANN_JSON_PASTE60', '_azure_NLOHMANN_JSON_PASTE60') `
.Replace('NLOHMANN_JSON_PASTE59', '_azure_NLOHMANN_JSON_PASTE59') `
.Replace('NLOHMANN_JSON_PASTE58', '_azure_NLOHMANN_JSON_PASTE58') `
.Replace('NLOHMANN_JSON_PASTE57', '_azure_NLOHMANN_JSON_PASTE57') `
.Replace('NLOHMANN_JSON_PASTE56', '_azure_NLOHMANN_JSON_PASTE56') `
.Replace('NLOHMANN_JSON_PASTE55', '_azure_NLOHMANN_JSON_PASTE55') `
.Replace('NLOHMANN_JSON_PASTE54', '_azure_NLOHMANN_JSON_PASTE54') `
.Replace('NLOHMANN_JSON_PASTE53', '_azure_NLOHMANN_JSON_PASTE53') `
.Replace('NLOHMANN_JSON_PASTE52', '_azure_NLOHMANN_JSON_PASTE52') `
.Replace('NLOHMANN_JSON_PASTE51', '_azure_NLOHMANN_JSON_PASTE51') `
.Replace('NLOHMANN_JSON_PASTE50', '_azure_NLOHMANN_JSON_PASTE50') `
.Replace('NLOHMANN_JSON_PASTE49', '_azure_NLOHMANN_JSON_PASTE49') `
.Replace('NLOHMANN_JSON_PASTE48', '_azure_NLOHMANN_JSON_PASTE48') `
.Replace('NLOHMANN_JSON_PASTE47', '_azure_NLOHMANN_JSON_PASTE47') `
.Replace('NLOHMANN_JSON_PASTE46', '_azure_NLOHMANN_JSON_PASTE46') `
.Replace('NLOHMANN_JSON_PASTE45', '_azure_NLOHMANN_JSON_PASTE45') `
.Replace('NLOHMANN_JSON_PASTE44', '_azure_NLOHMANN_JSON_PASTE44') `
.Replace('NLOHMANN_JSON_PASTE43', '_azure_NLOHMANN_JSON_PASTE43') `
.Replace('NLOHMANN_JSON_PASTE42', '_azure_NLOHMANN_JSON_PASTE42') `
.Replace('NLOHMANN_JSON_PASTE41', '_azure_NLOHMANN_JSON_PASTE41') `
.Replace('NLOHMANN_JSON_PASTE40', '_azure_NLOHMANN_JSON_PASTE40') `
.Replace('NLOHMANN_JSON_PASTE39', '_azure_NLOHMANN_JSON_PASTE39') `
.Replace('NLOHMANN_JSON_PASTE38', '_azure_NLOHMANN_JSON_PASTE38') `
.Replace('NLOHMANN_JSON_PASTE37', '_azure_NLOHMANN_JSON_PASTE37') `
.Replace('NLOHMANN_JSON_PASTE36', '_azure_NLOHMANN_JSON_PASTE36') `
.Replace('NLOHMANN_JSON_PASTE35', '_azure_NLOHMANN_JSON_PASTE35') `
.Replace('NLOHMANN_JSON_PASTE34', '_azure_NLOHMANN_JSON_PASTE34') `
.Replace('NLOHMANN_JSON_PASTE33', '_azure_NLOHMANN_JSON_PASTE33') `
.Replace('NLOHMANN_JSON_PASTE32', '_azure_NLOHMANN_JSON_PASTE32') `
.Replace('NLOHMANN_JSON_PASTE31', '_azure_NLOHMANN_JSON_PASTE31') `
.Replace('NLOHMANN_JSON_PASTE30', '_azure_NLOHMANN_JSON_PASTE30') `
.Replace('NLOHMANN_JSON_PASTE29', '_azure_NLOHMANN_JSON_PASTE29') `
.Replace('NLOHMANN_JSON_PASTE28', '_azure_NLOHMANN_JSON_PASTE28') `
.Replace('NLOHMANN_JSON_PASTE27', '_azure_NLOHMANN_JSON_PASTE27') `
.Replace('NLOHMANN_JSON_PASTE26', '_azure_NLOHMANN_JSON_PASTE26') `
.Replace('NLOHMANN_JSON_PASTE25', '_azure_NLOHMANN_JSON_PASTE25') `
.Replace('NLOHMANN_JSON_PASTE24', '_azure_NLOHMANN_JSON_PASTE24') `
.Replace('NLOHMANN_JSON_PASTE23', '_azure_NLOHMANN_JSON_PASTE23') `
.Replace('NLOHMANN_JSON_PASTE22', '_azure_NLOHMANN_JSON_PASTE22') `
.Replace('NLOHMANN_JSON_PASTE21', '_azure_NLOHMANN_JSON_PASTE21') `
.Replace('NLOHMANN_JSON_PASTE20', '_azure_NLOHMANN_JSON_PASTE20') `
.Replace('NLOHMANN_JSON_PASTE19', '_azure_NLOHMANN_JSON_PASTE19') `
.Replace('NLOHMANN_JSON_PASTE18', '_azure_NLOHMANN_JSON_PASTE18') `
.Replace('NLOHMANN_JSON_PASTE17', '_azure_NLOHMANN_JSON_PASTE17') `
.Replace('NLOHMANN_JSON_PASTE16', '_azure_NLOHMANN_JSON_PASTE16') `
.Replace('NLOHMANN_JSON_PASTE15', '_azure_NLOHMANN_JSON_PASTE15') `
.Replace('NLOHMANN_JSON_PASTE14', '_azure_NLOHMANN_JSON_PASTE14') `
.Replace('NLOHMANN_JSON_PASTE13', '_azure_NLOHMANN_JSON_PASTE13') `
.Replace('NLOHMANN_JSON_PASTE12', '_azure_NLOHMANN_JSON_PASTE12') `
.Replace('NLOHMANN_JSON_PASTE11', '_azure_NLOHMANN_JSON_PASTE11') `
.Replace('NLOHMANN_JSON_PASTE10', '_azure_NLOHMANN_JSON_PASTE10') `
.Replace('NLOHMANN_JSON_PASTE9', '_azure_NLOHMANN_JSON_PASTE9') `
.Replace('NLOHMANN_JSON_PASTE8', '_azure_NLOHMANN_JSON_PASTE8') `
.Replace('NLOHMANN_JSON_PASTE7', '_azure_NLOHMANN_JSON_PASTE7') `
.Replace('NLOHMANN_JSON_PASTE6', '_azure_NLOHMANN_JSON_PASTE6') `
.Replace('NLOHMANN_JSON_PASTE5', '_azure_NLOHMANN_JSON_PASTE5') `
.Replace('NLOHMANN_JSON_PASTE4', '_azure_NLOHMANN_JSON_PASTE4') `
.Replace('NLOHMANN_JSON_PASTE3', '_azure_NLOHMANN_JSON_PASTE3') `
.Replace('NLOHMANN_JSON_PASTE2', '_azure_NLOHMANN_JSON_PASTE2') `
.Replace('NLOHMANN_JSON_PASTE', '_azure_NLOHMANN_JSON_PASTE') `
.Replace('NLOHMANN_JSON_NAMESPACE_NO_VERSION', '_azure_NLOHMANN_JSON_NAMESPACE_NO_VERSION') `
.Replace('NLOHMANN_JSON_GET_MACRO', '_azure_NLOHMANN_JSON_GET_MACRO') `
.Replace('NLOHMANN_JSON_FROM_WITH_DEFAULT', '_azure_NLOHMANN_JSON_FROM_WITH_DEFAULT') `
.Replace('NLOHMANN_JSON_FROM', '_azure_NLOHMANN_JSON_FROM') `
.Replace('NLOHMANN_JSON_EXPAND', '_azure_NLOHMANN_JSON_EXPAND') `
.Replace('NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON', '_azure_NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON') `
.Replace('NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS', '_azure_NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS') `
.Replace('NLOHMANN_JSON_ABI_TAGS_CONCAT_EX', '_azure_NLOHMANN_JSON_ABI_TAGS_CONCAT_EX') `
.Replace('NLOHMANN_JSON_ABI_TAGS_CONCAT', '_azure_NLOHMANN_JSON_ABI_TAGS_CONCAT') `
.Replace('NLOHMANN_JSON_ABI_TAGS', '_azure_NLOHMANN_JSON_ABI_TAGS') `
.Replace('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT', '_azure_NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT') `
.Replace('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE', '_azure_NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE') `
.Replace('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE', '_azure_NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE') `
.Replace('NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT', '_azure_NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT') `
.Replace('NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE', '_azure_NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE') `
.Replace('NLOHMANN_DEFINE_TYPE_INTRUSIVE', '_azure_NLOHMANN_DEFINE_TYPE_INTRUSIVE') `
.Replace('NLOHMANN_CAN_CALL_STD_FUNC_IMPL', '_azure_NLOHMANN_CAN_CALL_STD_FUNC_IMPL') `
.Replace('NLOHMANN_BASIC_JSON_TPL_DECLARATION', '_azure_NLOHMANN_BASIC_JSON_TPL_DECLARATION') `
.Replace('NLOHMANN_BASIC_JSON_TPL', '_azure_NLOHMANN_BASIC_JSON_TPL') `
.Replace('JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON', '_azure_JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON') `
.Replace('JSON_USE_IMPLICIT_CONVERSIONS', '_azure_JSON_USE_IMPLICIT_CONVERSIONS') `
.Replace('JSON_USE_GLOBAL_UDLS', '_azure_JSON_USE_GLOBAL_UDLS') `
.Replace('JSON_TRY', '_azure_JSON_TRY') `
.Replace('JSON_THROW', '_azure_JSON_THROW') `
.Replace('JSON_PRIVATE_UNLESS_TESTED', '_azure_JSON_PRIVATE_UNLESS_TESTED') `
.Replace('JSON_NO_UNIQUE_ADDRESS', '_azure_JSON_NO_UNIQUE_ADDRESS') `
.Replace('JSON_INTERNAL_CATCH', '_azure_JSON_INTERNAL_CATCH') `
.Replace('JSON_INLINE_VARIABLE', '_azure_JSON_INLINE_VARIABLE') `
.Replace('JSON_IMPLEMENT_OPERATOR', '_azure_JSON_IMPLEMENT_OPERATOR') `
.Replace('JSON_HEDLEY_WARN_UNUSED_RESULT_MSG', '_azure_JSON_HEDLEY_WARN_UNUSED_RESULT_MSG') `
.Replace('JSON_HEDLEY_WARN_UNUSED_RESULT', '_azure_JSON_HEDLEY_WARN_UNUSED_RESULT') `
.Replace('JSON_HEDLEY_WARNING', '_azure_JSON_HEDLEY_WARNING') `
.Replace('JSON_HEDLEY_VERSION_ENCODE', '_azure_JSON_HEDLEY_VERSION_ENCODE') `
.Replace('JSON_HEDLEY_VERSION_DECODE_REVISION', '_azure_JSON_HEDLEY_VERSION_DECODE_REVISION') `
.Replace('JSON_HEDLEY_VERSION_DECODE_MINOR', '_azure_JSON_HEDLEY_VERSION_DECODE_MINOR') `
.Replace('JSON_HEDLEY_VERSION_DECODE_MAJOR', '_azure_JSON_HEDLEY_VERSION_DECODE_MAJOR') `
.Replace('JSON_HEDLEY_VERSION', '_azure_JSON_HEDLEY_VERSION') `
.Replace('JSON_HEDLEY_UNREACHABLE_RETURN', '_azure_JSON_HEDLEY_UNREACHABLE_RETURN') `
.Replace('JSON_HEDLEY_UNREACHABLE', '_azure_JSON_HEDLEY_UNREACHABLE') `
.Replace('JSON_HEDLEY_UNPREDICTABLE', '_azure_JSON_HEDLEY_UNPREDICTABLE') `
.Replace('JSON_HEDLEY_UNLIKELY', '_azure_JSON_HEDLEY_UNLIKELY') `
.Replace('JSON_HEDLEY_UNAVAILABLE', '_azure_JSON_HEDLEY_UNAVAILABLE') `
.Replace('JSON_HEDLEY_TI_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_VERSION', '_azure_JSON_HEDLEY_TI_VERSION') `
.Replace('JSON_HEDLEY_TI_CLPRU_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_CLPRU_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_CLPRU_VERSION', '_azure_JSON_HEDLEY_TI_CLPRU_VERSION') `
.Replace('JSON_HEDLEY_TI_CL2000_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_CL2000_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_CL2000_VERSION', '_azure_JSON_HEDLEY_TI_CL2000_VERSION') `
.Replace('JSON_HEDLEY_TI_CL430_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_CL430_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_CL430_VERSION', '_azure_JSON_HEDLEY_TI_CL430_VERSION') `
.Replace('JSON_HEDLEY_TI_CL7X_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_CL7X_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_CL7X_VERSION', '_azure_JSON_HEDLEY_TI_CL7X_VERSION') `
.Replace('JSON_HEDLEY_TI_CL6X_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_CL6X_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_CL6X_VERSION', '_azure_JSON_HEDLEY_TI_CL6X_VERSION') `
.Replace('JSON_HEDLEY_TI_ARMCL_VERSION_CHECK', '_azure_JSON_HEDLEY_TI_ARMCL_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TI_ARMCL_VERSION', '_azure_JSON_HEDLEY_TI_ARMCL_VERSION') `
.Replace('JSON_HEDLEY_TINYC_VERSION_CHECK', '_azure_JSON_HEDLEY_TINYC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_TINYC_VERSION', '_azure_JSON_HEDLEY_TINYC_VERSION') `
.Replace('JSON_HEDLEY_SUNPRO_VERSION_CHECK', '_azure_JSON_HEDLEY_SUNPRO_VERSION_CHECK') `
.Replace('JSON_HEDLEY_SUNPRO_VERSION', '_azure_JSON_HEDLEY_SUNPRO_VERSION') `
.Replace('JSON_HEDLEY_STRINGIFY_EX', '_azure_JSON_HEDLEY_STRINGIFY_EX') `
.Replace('JSON_HEDLEY_STRINGIFY', '_azure_JSON_HEDLEY_STRINGIFY') `
.Replace('JSON_HEDLEY_STATIC_CAST', '_azure_JSON_HEDLEY_STATIC_CAST') `
.Replace('JSON_HEDLEY_STATIC_ASSERT', '_azure_JSON_HEDLEY_STATIC_ASSERT') `
.Replace('JSON_HEDLEY_SENTINEL', '_azure_JSON_HEDLEY_SENTINEL') `
.Replace('JSON_HEDLEY_RETURNS_NON_NULL', '_azure_JSON_HEDLEY_RETURNS_NON_NULL') `
.Replace('JSON_HEDLEY_RESTRICT', '_azure_JSON_HEDLEY_RESTRICT') `
.Replace('JSON_HEDLEY_REQUIRE_MSG', '_azure_JSON_HEDLEY_REQUIRE_MSG') `
.Replace('JSON_HEDLEY_REQUIRE_CONSTEXPR', '_azure_JSON_HEDLEY_REQUIRE_CONSTEXPR') `
.Replace('JSON_HEDLEY_REQUIRE', '_azure_JSON_HEDLEY_REQUIRE') `
.Replace('JSON_HEDLEY_REINTERPRET_CAST', '_azure_JSON_HEDLEY_REINTERPRET_CAST') `
.Replace('JSON_HEDLEY_PURE', '_azure_JSON_HEDLEY_PURE') `
.Replace('JSON_HEDLEY_PUBLIC', '_azure_JSON_HEDLEY_PUBLIC') `
.Replace('JSON_HEDLEY_PRIVATE', '_azure_JSON_HEDLEY_PRIVATE') `
.Replace('JSON_HEDLEY_PRINTF_FORMAT', '_azure_JSON_HEDLEY_PRINTF_FORMAT') `
.Replace('JSON_HEDLEY_PREDICT_TRUE', '_azure_JSON_HEDLEY_PREDICT_TRUE') `
.Replace('JSON_HEDLEY_PREDICT_FALSE', '_azure_JSON_HEDLEY_PREDICT_FALSE') `
.Replace('JSON_HEDLEY_PREDICT', '_azure_JSON_HEDLEY_PREDICT') `
.Replace('JSON_HEDLEY_PRAGMA', '_azure_JSON_HEDLEY_PRAGMA') `
.Replace('JSON_HEDLEY_PGI_VERSION_CHECK', '_azure_JSON_HEDLEY_PGI_VERSION_CHECK') `
.Replace('JSON_HEDLEY_PGI_VERSION', '_azure_JSON_HEDLEY_PGI_VERSION') `
.Replace('JSON_HEDLEY_PELLES_VERSION_CHECK', '_azure_JSON_HEDLEY_PELLES_VERSION_CHECK') `
.Replace('JSON_HEDLEY_PELLES_VERSION', '_azure_JSON_HEDLEY_PELLES_VERSION') `
.Replace('JSON_HEDLEY_NULL', '_azure_JSON_HEDLEY_NULL') `
.Replace('JSON_HEDLEY_NO_THROW', '_azure_JSON_HEDLEY_NO_THROW') `
.Replace('JSON_HEDLEY_NO_RETURN', '_azure_JSON_HEDLEY_NO_RETURN') `
.Replace('JSON_HEDLEY_NO_ESCAPE', '_azure_JSON_HEDLEY_NO_ESCAPE') `
.Replace('JSON_HEDLEY_NON_NULL', '_azure_JSON_HEDLEY_NON_NULL') `
.Replace('JSON_HEDLEY_NEVER_INLINE', '_azure_JSON_HEDLEY_NEVER_INLINE') `
.Replace('JSON_HEDLEY_MSVC_VERSION_CHECK', '_azure_JSON_HEDLEY_MSVC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_MSVC_VERSION', '_azure_JSON_HEDLEY_MSVC_VERSION') `
.Replace('JSON_HEDLEY_MESSAGE', '_azure_JSON_HEDLEY_MESSAGE') `
.Replace('JSON_HEDLEY_MCST_LCC_VERSION_CHECK', '_azure_JSON_HEDLEY_MCST_LCC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_MCST_LCC_VERSION', '_azure_JSON_HEDLEY_MCST_LCC_VERSION') `
.Replace('JSON_HEDLEY_MALLOC', '_azure_JSON_HEDLEY_MALLOC') `
.Replace('JSON_HEDLEY_LIKELY', '_azure_JSON_HEDLEY_LIKELY') `
.Replace('JSON_HEDLEY_IS_CONSTEXPR_', '_azure_JSON_HEDLEY_IS_CONSTEXPR_') `
.Replace('JSON_HEDLEY_IS_CONSTANT', '_azure_JSON_HEDLEY_IS_CONSTANT') `
.Replace('JSON_HEDLEY_INTEL_VERSION_CHECK', '_azure_JSON_HEDLEY_INTEL_VERSION_CHECK') `
.Replace('JSON_HEDLEY_INTEL_VERSION', '_azure_JSON_HEDLEY_INTEL_VERSION') `
.Replace('JSON_HEDLEY_INTEL_CL_VERSION_CHECK', '_azure_JSON_HEDLEY_INTEL_CL_VERSION_CHECK') `
.Replace('JSON_HEDLEY_INTEL_CL_VERSION', '_azure_JSON_HEDLEY_INTEL_CL_VERSION') `
.Replace('JSON_HEDLEY_INLINE', '_azure_JSON_HEDLEY_INLINE') `
.Replace('JSON_HEDLEY_IMPORT', '_azure_JSON_HEDLEY_IMPORT') `
.Replace('JSON_HEDLEY_IBM_VERSION_CHECK', '_azure_JSON_HEDLEY_IBM_VERSION_CHECK') `
.Replace('JSON_HEDLEY_IBM_VERSION', '_azure_JSON_HEDLEY_IBM_VERSION') `
.Replace('JSON_HEDLEY_IAR_VERSION_CHECK', '_azure_JSON_HEDLEY_IAR_VERSION_CHECK') `
.Replace('JSON_HEDLEY_IAR_VERSION', '_azure_JSON_HEDLEY_IAR_VERSION') `
.Replace('JSON_HEDLEY_HAS_WARNING', '_azure_JSON_HEDLEY_HAS_WARNING') `
.Replace('JSON_HEDLEY_HAS_FEATURE', '_azure_JSON_HEDLEY_HAS_FEATURE') `
.Replace('JSON_HEDLEY_HAS_EXTENSION', '_azure_JSON_HEDLEY_HAS_EXTENSION') `
.Replace('JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE', '_azure_JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE') `
.Replace('JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS', '_azure_JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS') `
.Replace('JSON_HEDLEY_HAS_CPP_ATTRIBUTE', '_azure_JSON_HEDLEY_HAS_CPP_ATTRIBUTE') `
.Replace('JSON_HEDLEY_HAS_BUILTIN', '_azure_JSON_HEDLEY_HAS_BUILTIN') `
.Replace('JSON_HEDLEY_HAS_ATTRIBUTE', '_azure_JSON_HEDLEY_HAS_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GNUC_VERSION_CHECK', '_azure_JSON_HEDLEY_GNUC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_GNUC_VERSION', '_azure_JSON_HEDLEY_GNUC_VERSION') `
.Replace('JSON_HEDLEY_GNUC_HAS_WARNING', '_azure_JSON_HEDLEY_GNUC_HAS_WARNING') `
.Replace('JSON_HEDLEY_GNUC_HAS_FEATURE', '_azure_JSON_HEDLEY_GNUC_HAS_FEATURE') `
.Replace('JSON_HEDLEY_GNUC_HAS_EXTENSION', '_azure_JSON_HEDLEY_GNUC_HAS_EXTENSION') `
.Replace('JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE', '_azure_JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE', '_azure_JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GNUC_HAS_BUILTIN', '_azure_JSON_HEDLEY_GNUC_HAS_BUILTIN') `
.Replace('JSON_HEDLEY_GNUC_HAS_ATTRIBUTE', '_azure_JSON_HEDLEY_GNUC_HAS_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GCC_VERSION_CHECK', '_azure_JSON_HEDLEY_GCC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_GCC_VERSION', '_azure_JSON_HEDLEY_GCC_VERSION') `
.Replace('JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK', '_azure_JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK') `
.Replace('JSON_HEDLEY_GCC_HAS_WARNING', '_azure_JSON_HEDLEY_GCC_HAS_WARNING') `
.Replace('JSON_HEDLEY_GCC_HAS_FEATURE', '_azure_JSON_HEDLEY_GCC_HAS_FEATURE') `
.Replace('JSON_HEDLEY_GCC_HAS_EXTENSION', '_azure_JSON_HEDLEY_GCC_HAS_EXTENSION') `
.Replace('JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE', '_azure_JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE', '_azure_JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE') `
.Replace('JSON_HEDLEY_GCC_HAS_BUILTIN', '_azure_JSON_HEDLEY_GCC_HAS_BUILTIN') `
.Replace('JSON_HEDLEY_GCC_HAS_ATTRIBUTE', '_azure_JSON_HEDLEY_GCC_HAS_ATTRIBUTE') `
.Replace('JSON_HEDLEY_FLAGS_CAST', '_azure_JSON_HEDLEY_FLAGS_CAST') `
.Replace('JSON_HEDLEY_FLAGS', '_azure_JSON_HEDLEY_FLAGS') `
.Replace('JSON_HEDLEY_FALL_THROUGH', '_azure_JSON_HEDLEY_FALL_THROUGH') `
.Replace('JSON_HEDLEY_END_C_DECLS', '_azure_JSON_HEDLEY_END_C_DECLS') `
.Replace('JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK', '_azure_JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK') `
.Replace('JSON_HEDLEY_EMSCRIPTEN_VERSION', '_azure_JSON_HEDLEY_EMSCRIPTEN_VERSION') `
.Replace('JSON_HEDLEY_EMPTY_BASES', '_azure_JSON_HEDLEY_EMPTY_BASES') `
.Replace('JSON_HEDLEY_DMC_VERSION_CHECK', '_azure_JSON_HEDLEY_DMC_VERSION_CHECK') `
.Replace('JSON_HEDLEY_DMC_VERSION', '_azure_JSON_HEDLEY_DMC_VERSION') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_PUSH', '_azure_JSON_HEDLEY_DIAGNOSTIC_PUSH') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_POP', '_azure_JSON_HEDLEY_DIAGNOSTIC_POP') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_') `
.Replace('JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL', '_azure_JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL') `
.Replace('JSON_HEDLEY_DEPRECATED_FOR', '_azure_JSON_HEDLEY_DEPRECATED_FOR') `
.Replace('JSON_HEDLEY_DEPRECATED', '_azure_JSON_HEDLEY_DEPRECATED') `
.Replace('JSON_HEDLEY_C_DECL', '_azure_JSON_HEDLEY_C_DECL') `
.Replace('JSON_HEDLEY_CRAY_VERSION_CHECK', '_azure_JSON_HEDLEY_CRAY_VERSION_CHECK') `
.Replace('JSON_HEDLEY_CRAY_VERSION', '_azure_JSON_HEDLEY_CRAY_VERSION') `
.Replace('JSON_HEDLEY_CPP_CAST', '_azure_JSON_HEDLEY_CPP_CAST') `
.Replace('JSON_HEDLEY_CONST_CAST', '_azure_JSON_HEDLEY_CONST_CAST') `
.Replace('JSON_HEDLEY_CONSTEXPR', '_azure_JSON_HEDLEY_CONSTEXPR') `
.Replace('JSON_HEDLEY_CONST', '_azure_JSON_HEDLEY_CONST') `
.Replace('JSON_HEDLEY_CONCAT_EX', '_azure_JSON_HEDLEY_CONCAT_EX') `
.Replace('JSON_HEDLEY_CONCAT3_EX', '_azure_JSON_HEDLEY_CONCAT3_EX') `
.Replace('JSON_HEDLEY_CONCAT3', '_azure_JSON_HEDLEY_CONCAT3') `
.Replace('JSON_HEDLEY_CONCAT', '_azure_JSON_HEDLEY_CONCAT') `
.Replace('JSON_HEDLEY_COMPCERT_VERSION_CHECK', '_azure_JSON_HEDLEY_COMPCERT_VERSION_CHECK') `
.Replace('JSON_HEDLEY_COMPCERT_VERSION', '_azure_JSON_HEDLEY_COMPCERT_VERSION') `
.Replace('JSON_HEDLEY_CLANG_HAS_WARNING', '_azure_JSON_HEDLEY_CLANG_HAS_WARNING') `
.Replace('JSON_HEDLEY_CLANG_HAS_FEATURE', '_azure_JSON_HEDLEY_CLANG_HAS_FEATURE') `
.Replace('JSON_HEDLEY_CLANG_HAS_EXTENSION', '_azure_JSON_HEDLEY_CLANG_HAS_EXTENSION') `
.Replace('JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE', '_azure_JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE') `
.Replace('JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE', '_azure_JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE') `
.Replace('JSON_HEDLEY_CLANG_HAS_BUILTIN', '_azure_JSON_HEDLEY_CLANG_HAS_BUILTIN') `
.Replace('JSON_HEDLEY_CLANG_HAS_ATTRIBUTE', '_azure_JSON_HEDLEY_CLANG_HAS_ATTRIBUTE') `
.Replace('JSON_HEDLEY_BEGIN_C_DECLS', '_azure_JSON_HEDLEY_BEGIN_C_DECLS') `
.Replace('JSON_HEDLEY_ASSUME', '_azure_JSON_HEDLEY_ASSUME') `
.Replace('JSON_HEDLEY_ARRAY_PARAM', '_azure_JSON_HEDLEY_ARRAY_PARAM') `
.Replace('JSON_HEDLEY_ARM_VERSION_CHECK', '_azure_JSON_HEDLEY_ARM_VERSION_CHECK') `
.Replace('JSON_HEDLEY_ARM_VERSION', '_azure_JSON_HEDLEY_ARM_VERSION') `
.Replace('JSON_HEDLEY_ALWAYS_INLINE', '_azure_JSON_HEDLEY_ALWAYS_INLINE') `
.Replace('JSON_HAS_THREE_WAY_COMPARISON', '_azure_JSON_HAS_THREE_WAY_COMPARISON') `
.Replace('JSON_HAS_STATIC_RTTI', '_azure_JSON_HAS_STATIC_RTTI') `
.Replace('JSON_HAS_RANGES', '_azure_JSON_HAS_RANGES') `
.Replace('JSON_HAS_FILESYSTEM', '_azure_JSON_HAS_FILESYSTEM') `
.Replace('JSON_HAS_EXPERIMENTAL_FILESYSTEM', '_azure_JSON_HAS_EXPERIMENTAL_FILESYSTEM') `
.Replace('JSON_HAS_CPP_20', '_azure_JSON_HAS_CPP_20') `
.Replace('JSON_HAS_CPP_17', '_azure_JSON_HAS_CPP_17') `
.Replace('JSON_HAS_CPP_14', '_azure_JSON_HAS_CPP_14') `
.Replace('JSON_HAS_CPP_11', '_azure_JSON_HAS_CPP_11') `
.Replace('JSON_EXPLICIT', '_azure_JSON_EXPLICIT') `
.Replace('JSON_DISABLE_ENUM_SERIALIZATION', '_azure_JSON_DISABLE_ENUM_SERIALIZATION') `
.Replace('JSON_DIAGNOSTICS', '_azure_JSON_DIAGNOSTICS') `
.Replace('JSON_CATCH', '_azure_JSON_CATCH') `
.Replace('JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_', '_azure_JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_') `
.Replace('JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_', '_azure_JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_') `
.Replace('JSON_ASSERT', '_azure_JSON_ASSERT') `
.Replace('INCLUDE_NLOHMANN_JSON_FWD_HPP_', '_azure_INCLUDE_NLOHMANN_JSON_FWD_HPP_') `
| Set-Content sdk/core/azure-core/inc/azure/core/internal/json/json.hpp
antkmsft commented 3 weeks ago

Also,

#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_

and

#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_

lines should probably be dropped, no need to prefix INCLUDE_NLOHMANN_JSON_FWD_HPP_.

gearama commented 3 weeks ago

@antkmsft done the changes you requested

ahsonkhan commented 3 weeks ago

The diff of the json file looks right, but is a lot. Can you outline the steps to you did to add/update the new file.

I haven't been able to review this PR yet, but given the size, I would love to understand what exact steps you took for the json library update to help make the review process quicker.

antkmsft commented 3 weeks ago

@ahsonkhan, it does pass the existing tests (both nlohmann JSON and Azure SDK), so I don't think it should be blocked from Beta release at least, but it would be better if we fetch 3.11.3 unit test updates as part of the same PR well.

gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
LarryOsterman commented 3 weeks ago

Ah, I also think we probably should update sdk/core/azure-core/test/nlohmann-json-test/*.

As @antkmsft mentioned, we should definitely keep the source and tests versions in-sync, so an update of the nlohmann json source should be together with the test update as well.

Please address this before merging, at the very least. I'll try to review the rest, tomorrow, but would like some help in making reviewing this change easier. What should we focus on?

I'd like to make sure that the existing tests run with the newer json library, to be honest. If there are any breaking changes in the nlohmann implementation, the old tests will start failing, but the new tests would have accounted for any breaking changes.

Since our implementation was built around the old implementation, we should keep the old tests for at least the first iteration of this PR.

Once the PR is in and we've run at least a single nightly build on the new implementation with the old tests, we should integrate the new tests.

Basically, we start by using the old tests to help ensure that the new json library won't break us, then switch to the new tests to ensure that if we have tests covering any new additions to the library.

gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
gearama commented 3 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 3 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
gearama commented 3 weeks ago

Ah, I also think we probably should update sdk/core/azure-core/test/nlohmann-json-test/*.

As @antkmsft mentioned, we should definitely keep the source and tests versions in-sync, so an update of the nlohmann json source should be together with the test update as well. Please address this before merging, at the very least. I'll try to review the rest, tomorrow, but would like some help in making reviewing this change easier. What should we focus on?

I'd like to make sure that the existing tests run with the newer json library, to be honest. If there are any breaking changes in the nlohmann implementation, the old tests will start failing, but the new tests would have accounted for any breaking changes.

Since our implementation was built around the old implementation, we should keep the old tests for at least the first iteration of this PR.

Once the PR is in and we've run at least a single nightly build on the new implementation with the old tests, we should integrate the new tests.

Basically, we start by using the old tests to help ensure that the new json library won't break us, then switch to the new tests to ensure that if we have tests covering any new additions to the library.

while i would agree with you there are api changes in the internal impl of the tests , the old ones don't compile properly , thus i had to update.

As mentioned in the description i ran all the CI pipelines that IMHO cover most if not all of the public interface , thus the functionality out of it that we use is covered , if we want to run some coverage tools to determine dead code in the json that we don't use that i would like to do to remove unneeded functionality, only that future updates would be harder to perform as we would need to determine what we removed and where it is and get rid of them again.

We can talk about it more monday, i did not bring this up thursday as that meeting was too clogged with go lang issues :)

LarryOsterman commented 3 weeks ago

We can talk about it more monday, i did not bring this up thursday as that meeting was too clogged with go lang issues :)

So be it. I was hoping to avoid doing even more work to update the tests, but if the existing tests break, so be it.

antkmsft commented 3 weeks ago

Reminder, in case this got lost -

Sorry, I just found two more macros that I missed, but that should be it! - JSON_NO_IO and JSON_TEST_KEEP_MACROS.

I can now see JSON_NO_IO prefixed, but the JSON_TEST_KEEP_MACROS is still unprefixed.

gearama commented 2 weeks ago

Reminder, in case this got lost -

Sorry, I just found two more macros that I missed, but that should be it! - JSON_NO_IO and JSON_TEST_KEEP_MACROS.

I can now see JSON_NO_IO prefixed, but the JSON_TEST_KEEP_MACROS is still unprefixed.

done, apologies , i somehow missed that

gearama commented 2 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 2 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).
ahsonkhan commented 2 weeks ago

Just to understand, how come we remove INCLUDE_NLOHMANN_JSON_HPP_ instead of renaming it? It's probably right, so not suggesting we do something else, but trying to understand the rationale. Does it fail to compile with it?

image

antkmsft commented 2 weeks ago

@ahsonkhan, similar to https://github.com/Azure/azure-sdk-for-cpp/pull/5681#issuecomment-2150898548. More, the pattern,

#ifndef X_HPP_INCLUDED
#define X_HPP_INCLUDED

// header file contents

#endif 

it is called "include guard". It is basically the same as

#pragma once

// header file contents

It is in our guidelines for C++ to use #pragma once instead of include guards. Formally, #pragmas are not standardized, but practically, every C++ compiler implements it.

This is maybe not so often the case with C compilers, BTW, especially maybe for some exotic embedded platforms, which is why in Embedded C repo, we were using include guards and not pragmas.

antkmsft commented 2 weeks ago

@gearama, could you please drop all the occurrences of

/*!
@brief namespace for Niels Lohmann
@see
https://github.com/nlohmann
@since version 1.0.0
*/

?

The reason is that I used doxygen to generate docs, and what it does is that it ends up attaching namespace for Niels Lohmann as a description for Azure namespace (not the Azure::Core::Json::_internal).

gearama commented 2 weeks ago

/azp run cpp - core

azure-pipelines[bot] commented 2 weeks ago
Azure Pipelines successfully started running 1 pipeline(s).