tree 8c60546891ff7b47e4c25a514b378b2015aef666
parent 2c2754f3c935bfb86af21b8b1636b16a98e793f6
author Jordan Bayles <bayles.jordan@gmail.com> 1775756228 -0700
committer GitHub <noreply@github.com> 1775756228 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJp1+PECRC1aQ7uu5UhlAAAh8MQADhtf3z8wRCYB4IY5fne9B6H
 GmHJd9cKTsmEAEy2s6mztZKuijh2F01eAZ/l2lVrZER5wQfqR9T4GBQkj+/NImsy
 Kj6w1neQyEHBq/44pYc00MuVT0x7CaoTTy/hS2dZqavg7dzGoQ1BcvfHAVVor3pc
 wq1cmcqZtEcUu6g3GYu6IhZ5gI+SUfi5WpCKdU22lkCwIMhIvsqyB/wFHdd4ZF68
 HCAYKhHA1ciEjyKcNQo3flFhuh3F7b/i/pZiadtuPCujl3UHvK2xcalqG0kQaq8g
 OBIJ8wy1y9Uynnxrgl2amOKk+vaDSTO6X7B9jvhqYNqtVhL2EU91FDZ46Ah70lH2
 j85c9ZH1zBi/X4rB9AmDrJJil5kw2sGqRcMhggeKG97Dc/27rB3ljC/yGrbCn4P8
 QHBBrSyYuBMF8XcO9nYuHuSLfNCrFEubVsKNkoDAFWAWaRlUqXYYk2MRbiFlBvXk
 K1MwKcafPYUA+NBeX7L8Q2MBA5wYxOdAV2qi5+cnj3Z1XA4ImycAA1qfPV/8Gd1l
 5qbeH69xvqU44tbPeYp5akG1fE6ePCurtcdoNI7T3l0/J6N1BGxhG1nezDUwUfYk
 ZYL6kDk/AXO9SokJ5BsPETdY69jTDB1scMOA+UdOcls/FBlY3BqUDHcXCSAT7qvk
 43nkKGGKBANMNPs2bStS
 =CnpJ
 -----END PGP SIGNATURE-----
 

Fix C++11 ABI breakage when compiled with C++17 #1668 (#1675)

* ci: suppress Node 20 deprecation and missing python-version warnings

- Injects `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` in all workflows to
  opt-in to Node.js 24 and suppress the deprecation warnings from
  multiple GitHub Actions.
- Specifies `python-version: '3.x'` for `actions/setup-python@v5` in
  `meson.yml` to fix the missing input warning.

* Fix C++11 ABI breakage when compiled with C++17 (#1668)

When JSONCPP_HAS_STRING_VIEW was defined, the library dropped the
`const char*` and `const String&` overloads for `operator[]`, `get`,
`removeMember`, and `isMember`, breaking ABI compatibility for projects
consuming the library with C++11.

This change unconditionally declares and defines the legacy overloads
so they are always exported, restoring compatibility.

* ci: add ABI compatibility matrix workflow

This adds a new GitHub Actions workflow to verify ABI compatibility across C++ standard boundaries. It explicitly tests the scenario where JsonCpp is built with one standard (e.g., C++11) and consumed by an application built with a newer one (e.g., C++23), and vice versa.

To facilitate testing the specific `std::string_view` boundary that is conditionally compiled, a new `stringView` demo application has been added to the `example/` directory and is consumed directly by the CI matrix to ensure standard library symbols link correctly across standard versions, build types (shared/static), and operating systems.

* fix: inline std::string_view methods to prevent ABI breaks

This commit completely eliminates the ABI breakage that occurs across C++ standard boundaries when using `std::string_view`.

Previously, when the library was built with C++17+, CMake would leak `JSONCPP_HAS_STRING_VIEW=1` as a PUBLIC definition. A C++11 consumer would receive this definition, attempt to parse the header, and fail with compiler errors because `std::string_view` is not available in their environment.

Conversely, if the library was built in C++11 (without `string_view` symbols), a C++17 consumer would naturally define `JSONCPP_HAS_STRING_VIEW` based on `__cplusplus` inside `value.h`. The consumer would then call the declared `string_view` methods, resulting in linker errors because the methods weren't compiled into the library.

By moving all `std::string_view` overloads directly into `value.h` as `inline` methods that delegate to the fundamental `const char*, const char*` methods:
1. The consumer's compiler dictates whether the overloads are visible (via `__cplusplus >= 201703L`).
2. The consumer compiles the inline wrappers locally, removing any reliance on the library's exported symbols for `std::string_view`.
3. CMake no longer needs to pollute the consumer's environment with PUBLIC compile definitions.

* run clang format

* finish clang format