mirror of
https://github.com/nlohmann/json.git
synced 2026-10-08 09:55:17 +00:00
Add a natvis fallback visualizer for detail::json_default_base (#5588)
* Add a natvis fallback visualizer for detail::json_default_base Squashed onto develop from: - Add a type in the natvis template for detail::json_default_base - Document the json_default_base natvis fallback and regenerate natvis - Match json_default_base in both its current and 3.12.0 namespace Co-authored-by: Mihnea Magheru <sakuntalle@yahoo.com> Signed-off-by: Mihnea Magheru <sakuntalle@yahoo.com> Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Take the natvis template from the PR in the amalgamation check The check ran generate_natvis.py from a develop checkout, which loads nlohmann_json.natvis.j2 from its own directory. A PR that changes the template was therefore checked against develop's template and always failed. Copy the PR's template next to the develop script before running it. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Mihnea Magheru <sakuntalle@yahoo.com> Signed-off-by: Niels Lohmann <mail@nlohmann.me> Co-authored-by: Mihnea Magheru <sakuntalle@yahoo.com>
This commit is contained in:
7
.github/workflows/check_amalgamation.yml
vendored
7
.github/workflows/check_amalgamation.yml
vendored
@@ -149,6 +149,13 @@ jobs:
|
||||
VERSION_MAJOR=$(grep -m1 'define NLOHMANN_JSON_VERSION_MAJOR' $ABI_MACROS | grep -o '[0-9]\+')
|
||||
VERSION_MINOR=$(grep -m1 'define NLOHMANN_JSON_VERSION_MINOR' $ABI_MACROS | grep -o '[0-9]\+')
|
||||
VERSION_PATCH=$(grep -m1 'define NLOHMANN_JSON_VERSION_PATCH' $ABI_MACROS | grep -o '[0-9]\+')
|
||||
# The template is what this check verifies the committed natvis
|
||||
# file against, so take it from this PR rather than from the
|
||||
# develop checkout: generate_natvis.py loads the template from its
|
||||
# own directory, and with develop's copy a PR that changes the
|
||||
# template could never pass. Like the macro_builder step above,
|
||||
# this only renders PR content in a job without credentials.
|
||||
cp tools/generate_natvis/nlohmann_json.natvis.j2 $NATVIS_TOOL_DIR/
|
||||
python3 $NATVIS_TOOL_DIR/generate_natvis.py --version "$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" $MAIN_DIR
|
||||
|
||||
- name: Build patch and check for differences
|
||||
|
||||
22572
nlohmann_json.natvis
22572
nlohmann_json.natvis
File diff suppressed because it is too large
Load Diff
@@ -36,5 +36,31 @@
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<!-- Fallback for when the basic_json entry above does not match: json_default_base is the (empty) default
|
||||
base class of basic_json, and base class visualizers are inherited by derived types and evaluated
|
||||
against the derived object, so m_data is accessible here. The class lives in {{ ns }} after
|
||||
3.12.0 (#5238) and in {{ ns }}::detail up to 3.12.0, so both names are listed. -->
|
||||
{% for default_base in ['json_default_base', 'detail::json_default_base'] %}
|
||||
<Type Name="{{ ns }}::{{ default_base }}">
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::null">null</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::object">{*(m_data.m_value.object)}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::array">{*(m_data.m_value.array)}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::string">{*(m_data.m_value.string)}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::boolean">{m_data.m_value.boolean}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::number_integer">{m_data.m_value.number_integer}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::number_unsigned">{m_data.m_value.number_unsigned}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::number_float">{m_data.m_value.number_float}</DisplayString>
|
||||
<DisplayString Condition="m_data.m_type == {{ ns }}::detail::value_t::discarded">discarded</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem Condition="m_data.m_type == {{ ns }}::detail::value_t::object">
|
||||
*(m_data.m_value.object),view(simple)
|
||||
</ExpandedItem>
|
||||
<ExpandedItem Condition="m_data.m_type == {{ ns }}::detail::value_t::array">
|
||||
*(m_data.m_value.array),view(simple)
|
||||
</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</AutoVisualizer>
|
||||
|
||||
Reference in New Issue
Block a user