# SPDX-License-Identifier: MPL-2.0
#
# Codec JSON (provisoire) des messages de scène du protocole Core - rendu 0.1
# (docs/specs/protocole-core-rendu-0.1.md §5 ; hexadécimal : protocole-studio-core-0.2.md §2).
# Décodage sans exception : accès vérifiés uniquement, aucune ne sort du codec.

add_library(sequa_3d_wire
    src/wire.cpp)
add_library(sequa::3d_wire ALIAS sequa_3d_wire)

target_include_directories(sequa_3d_wire PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_compile_features(sequa_3d_wire PUBLIC cxx_std_20)

# nlohmann_json est PUBLIC : les charges utiles du codec sont des nlohmann::json.
target_link_libraries(sequa_3d_wire
    PUBLIC sequa::3d nlohmann_json::nlohmann_json)

sequa_target_defaults(sequa_3d_wire)

if(SEQUA_BUILD_TESTS)
    add_executable(sequa_3d_wire_tests
        tests/main.cpp
        tests/test_wire.cpp)
    target_link_libraries(sequa_3d_wire_tests
        PRIVATE sequa::3d_wire doctest::doctest)
    sequa_target_defaults(sequa_3d_wire_tests)
    doctest_discover_tests(sequa_3d_wire_tests)
endif()
