From b73cdb555d7990cbdb30fca38cb29d057cc3a99f Mon Sep 17 00:00:00 2001 From: DarkMicro Date: Sun, 21 Apr 2024 22:16:35 +0200 Subject: [PATCH 01/41] HighDPI UI behavouir (#467) * Allow ImGui to scale itself by dpi and added Open Sans as default font to have a nice looking UI on HighDPI Monitors. * - Changed OpenSans-Regular to OpenSans-Semibold witch is better readable and adjusted the font config for the new font. - Changed the names of the new variables. - Simplifyed the dpi stuff and moved the two new floats to the Header as private. - Added comments to the changes. * Run clang-format * Removed new font * Reworked GUI scaling by getting display dpi and apply the scale on events. * Using ImGui_ImplWin32_GetDpiScaleForMonitor to support Windows 8.1 Get DpiScale instaed of DPI in window events * Put SDL_GetDisplayDPI into if statement to prevent crash on Switch. --------- Co-authored-by: Mirco --- src/window/gui/Gui.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++ src/window/gui/Gui.h | 4 ++++ 2 files changed, 56 insertions(+) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index a4cef5437..a4ccb78ee 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -65,6 +65,10 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARA #endif +#ifndef USER_DEFAULT_SCREEN_DPI +#define USER_DEFAULT_SCREEN_DPI 96 +#endif + namespace LUS { #define TOGGLE_BTN ImGuiKey_F1 #define TOGGLE_PAD_BTN ImGuiKey_GamepadBack @@ -279,6 +283,8 @@ void Gui::Update(WindowEvent event) { mNeedsConsoleVariableSave = false; } + float dpiScale = 0; + switch (Context::GetInstance()->GetWindow()->GetWindowBackend()) { #ifdef __WIIU__ case WindowBackend::GX2: @@ -289,6 +295,21 @@ void Gui::Update(WindowEvent event) { case WindowBackend::SDL_METAL: ImGui_ImplSDL2_ProcessEvent(static_cast(event.Sdl.Event)); + if (static_cast(event.Sdl.Event)->window.event == SDL_WINDOWEVENT_DISPLAY_CHANGED || + mDpiInit) { + int display = 0; + if (Context::GetInstance()->GetWindow()->GetWindowBackend() == WindowBackend::SDL_OPENGL) { + display = SDL_GetWindowDisplayIndex(static_cast(mImpl.Opengl.Window)); + } else { + display = SDL_GetWindowDisplayIndex(static_cast(mImpl.Metal.Window)); + } + + float dpi; + if (SDL_GetDisplayDPI(display, &dpi, nullptr, nullptr) == 0) { + dpiScale = dpi / USER_DEFAULT_SCREEN_DPI; + } + } + #ifdef __SWITCH__ LUS::Switch::ImGuiProcessEvent(mImGuiIo->WantTextInput); #endif @@ -301,11 +322,30 @@ void Gui::Update(WindowEvent event) { case WindowBackend::DX11: ImGui_ImplWin32_WndProcHandler(static_cast(event.Win32.Handle), event.Win32.Msg, event.Win32.Param1, event.Win32.Param2); + + if (event.Win32.Msg == WM_DPICHANGED || mDpiInit) { + HMONITOR monitor = MonitorFromWindow(static_cast(event.Win32.Handle), MONITOR_DEFAULTTONEAREST); + dpiScale = (float)ImGui_ImplWin32_GetDpiScaleForMonitor(monitor); + } break; #endif default: break; } + + if (dpiScale > 0) { + if (mDpiInit) { + mLastDpiScale = 1.f; + mDpiInit = false; + } + + float diff = dpiScale / mLastDpiScale; + mLastDpiScale = dpiScale; + + ImGui::GetStyle().ScaleAllSizes(diff); + ImFont* font = ImGui::GetFont(); + font->Scale *= diff; + } } bool Gui::ImGuiGamepadNavigationEnabled() { @@ -322,12 +362,24 @@ void Gui::UnblockImGuiGamepadNavigation() { } } +float Gui::GetCurrentDpiScale() { + if (mLastDpiScale <= 0) { + return 1.f; + } + + return mLastDpiScale; +} + void Gui::DrawMenu() { LUS::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")->Update(); ImGuiBackendNewFrame(); ImGuiWMNewFrame(); ImGui::NewFrame(); + if (mLastDpiScale == 0) { + mDpiInit = true; + } + const std::shared_ptr wnd = Context::GetInstance()->GetWindow(); const std::shared_ptr conf = Context::GetInstance()->GetConfig(); diff --git a/src/window/gui/Gui.h b/src/window/gui/Gui.h index c3dd0ca0f..3a4f3d6ee 100644 --- a/src/window/gui/Gui.h +++ b/src/window/gui/Gui.h @@ -92,6 +92,7 @@ class Gui { bool ImGuiGamepadNavigationEnabled(); void BlockImGuiGamepadNavigation(); void UnblockImGuiGamepadNavigation(); + float GetCurrentDpiScale(); protected: void ImGuiWMInit(); @@ -111,6 +112,9 @@ class Gui { std::shared_ptr mMenuBar; std::map mGuiTextures; std::map> mGuiWindows; + + bool mDpiInit = false; + float mLastDpiScale = 0; }; } // namespace LUS From 1555c90f00a9199cb459175d8310f19a6dd8fb86 Mon Sep 17 00:00:00 2001 From: Spodi Date: Mon, 22 Apr 2024 01:03:55 +0200 Subject: [PATCH 02/41] Fix compute shader on Feature Level 10_0 (#497) * Fix compute shader on Feature level 10_0 Missed a condition, so compute shaders where disabled altogether if you tried to use MSAA on feature level 10_0. * Refactor disabled MSAA Reduced the number of checks by simply setting the msaa_level variable to 1 if Feature Level is lower than 10_1 --- src/graphic/Fast3D/gfx_direct3d11.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/graphic/Fast3D/gfx_direct3d11.cpp b/src/graphic/Fast3D/gfx_direct3d11.cpp index 811f07733..37cbdf723 100644 --- a/src/graphic/Fast3D/gfx_direct3d11.cpp +++ b/src/graphic/Fast3D/gfx_direct3d11.cpp @@ -170,7 +170,7 @@ static void create_depth_stencil_objects(uint32_t width, uint32_t height, uint32 texture_desc.ArraySize = 1; texture_desc.Format = d3d.feature_level >= D3D_FEATURE_LEVEL_10_0 ? DXGI_FORMAT_R32_TYPELESS : DXGI_FORMAT_R24G8_TYPELESS; - texture_desc.SampleDesc.Count = d3d.feature_level >= D3D_FEATURE_LEVEL_10_1 ? msaa_count : 1; + texture_desc.SampleDesc.Count = msaa_count; texture_desc.SampleDesc.Quality = 0; texture_desc.Usage = D3D11_USAGE_DEFAULT; texture_desc.BindFlags = D3D11_BIND_DEPTH_STENCIL | (srv != nullptr ? D3D11_BIND_SHADER_RESOURCE : 0); @@ -856,6 +856,8 @@ static void gfx_d3d11_update_framebuffer_parameters(int fb_id, uint32_t width, u width = max(width, 1U); height = max(height, 1U); + // We can't use MSAA the way we are using it on Feature Level 10.0 Hardware, so disable it altogether. + msaa_level = d3d.feature_level < D3D_FEATURE_LEVEL_10_1 ? 1 : msaa_level; while (msaa_level > 1 && d3d.msaa_num_quality_levels[msaa_level - 1] == 0) { --msaa_level; } @@ -875,7 +877,7 @@ static void gfx_d3d11_update_framebuffer_parameters(int fb_id, uint32_t width, u texture_desc.MiscFlags = 0; texture_desc.ArraySize = 1; texture_desc.MipLevels = 1; - texture_desc.SampleDesc.Count = d3d.feature_level >= D3D_FEATURE_LEVEL_10_1 ? msaa_level : 1; + texture_desc.SampleDesc.Count = msaa_level; texture_desc.SampleDesc.Quality = 0; ThrowIfFailed(d3d.device->CreateTexture2D(&texture_desc, nullptr, tex.texture.ReleaseAndGetAddressOf())); @@ -1162,7 +1164,7 @@ gfx_d3d11_get_pixel_depth(int fb_id, const std::set>& co D3D11_MAPPED_SUBRESOURCE ms; - if (fb.msaa_level > 1 && d3d.feature_level >= D3D_FEATURE_LEVEL_10_1 && d3d.compute_shader_msaa.Get() == nullptr) { + if (fb.msaa_level > 1 && d3d.compute_shader_msaa.Get() == nullptr) { ThrowIfFailed(d3d.device->CreateComputeShader(d3d.compute_shader_msaa_blob->GetBufferPointer(), d3d.compute_shader_msaa_blob->GetBufferSize(), nullptr, d3d.compute_shader_msaa.GetAddressOf())); From 11af758d41dbcfdab25aef191d95d47585257a76 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Sun, 21 Apr 2024 20:08:45 -0400 Subject: [PATCH 03/41] move json resource/factory to LUS (#496) * move `RawJson` to LUS * rename --- src/CMakeLists.txt | 4 ++++ src/resource/ResourceLoader.cpp | 3 +++ src/resource/ResourceType.h | 1 + src/resource/factory/JsonFactory.cpp | 19 +++++++++++++++++++ src/resource/factory/JsonFactory.h | 11 +++++++++++ src/resource/type/Json.cpp | 14 ++++++++++++++ src/resource/type/Json.h | 20 ++++++++++++++++++++ 7 files changed, 72 insertions(+) create mode 100644 src/resource/factory/JsonFactory.cpp create mode 100644 src/resource/factory/JsonFactory.h create mode 100644 src/resource/type/Json.cpp create mode 100644 src/resource/type/Json.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 158600eb8..3b95cfdba 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -387,6 +387,8 @@ set(Source_Files__Resource__Types ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Texture.h ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Vertex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Vertex.h + ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Json.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Json.h ) source_group("resource/type" FILES ${Source_Files__Resource__Types}) @@ -403,6 +405,8 @@ set(Source_Files__Resource__Factories ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/TextureFactory.h ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/VertexFactory.cpp ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/VertexFactory.h + ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/JsonFactory.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/JsonFactory.h ) source_group("resource/factory" FILES ${Source_Files__Resource__Factories}) diff --git a/src/resource/ResourceLoader.cpp b/src/resource/ResourceLoader.cpp index fce4a2e96..026cfbe96 100644 --- a/src/resource/ResourceLoader.cpp +++ b/src/resource/ResourceLoader.cpp @@ -12,6 +12,7 @@ #include "factory/BlobFactory.h" #include "factory/DisplayListFactory.h" #include "factory/MatrixFactory.h" +#include "factory/JsonFactory.h" namespace LUS { ResourceLoader::ResourceLoader() { @@ -41,6 +42,8 @@ void ResourceLoader::RegisterGlobalResourceFactories() { static_cast(ResourceType::Array), 0); RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Blob", static_cast(ResourceType::Blob), 0); + RegisterResourceFactory(std::make_shared(), RESOURCE_FORMAT_BINARY, "Json", + static_cast(ResourceType::Json), 0); } bool ResourceLoader::RegisterResourceFactory(std::shared_ptr factory, uint32_t format, diff --git a/src/resource/ResourceType.h b/src/resource/ResourceType.h index 5f777210b..2dfd53568 100644 --- a/src/resource/ResourceType.h +++ b/src/resource/ResourceType.h @@ -14,5 +14,6 @@ enum class ResourceType { Array = 0x4F415252, // OARR Blob = 0x4F424C42, // OBLB Texture = 0x4F544558, // OTEX + Json = 0x4A534F4E, // JSON }; } // namespace LUS diff --git a/src/resource/factory/JsonFactory.cpp b/src/resource/factory/JsonFactory.cpp new file mode 100644 index 000000000..11f15dedf --- /dev/null +++ b/src/resource/factory/JsonFactory.cpp @@ -0,0 +1,19 @@ +#include "resource/factory/JsonFactory.h" +#include "resource/type/Json.h" +#include "spdlog/spdlog.h" + +namespace LUS { +std::shared_ptr ResourceFactoryBinaryJsonV0::ReadResource(std::shared_ptr file) { + if (!FileHasValidFormatAndReader(file)) { + return nullptr; + } + + auto json = std::make_shared(file->InitData); + auto reader = std::get>(file->Reader); + + json->DataSize = file->Buffer->size(); + json->Data = nlohmann::json::parse(reader->ReadCString(), nullptr, true, true); + + return json; +} +} // namespace LUS diff --git a/src/resource/factory/JsonFactory.h b/src/resource/factory/JsonFactory.h new file mode 100644 index 000000000..01ca2163a --- /dev/null +++ b/src/resource/factory/JsonFactory.h @@ -0,0 +1,11 @@ +#pragma once + +#include "resource/Resource.h" +#include "resource/ResourceFactoryBinary.h" + +namespace LUS { +class ResourceFactoryBinaryJsonV0 : public LUS::ResourceFactoryBinary { + public: + std::shared_ptr ReadResource(std::shared_ptr file) override; +}; +}; // namespace LUS diff --git a/src/resource/type/Json.cpp b/src/resource/type/Json.cpp new file mode 100644 index 000000000..cf354e1f8 --- /dev/null +++ b/src/resource/type/Json.cpp @@ -0,0 +1,14 @@ +#include "Json.h" + +namespace LUS { +Json::Json() : Resource(std::shared_ptr()) { +} + +void* Json::GetPointer() { + return &Data; +} + +size_t Json::GetPointerSize() { + return DataSize * sizeof(char); +} +} // namespace LUS diff --git a/src/resource/type/Json.h b/src/resource/type/Json.h new file mode 100644 index 000000000..7493f5437 --- /dev/null +++ b/src/resource/type/Json.h @@ -0,0 +1,20 @@ +#pragma once + +#include "resource/Resource.h" +#include + +namespace LUS { + +class Json : public Resource { + public: + using Resource::Resource; + + Json(); + + void* GetPointer() override; + size_t GetPointerSize() override; + + nlohmann::json Data; + size_t DataSize; +}; +}; // namespace LUS From 8a079ed15852fbd26e701fd317afc14530578a92 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Sun, 21 Apr 2024 21:04:50 -0400 Subject: [PATCH 04/41] fix: ifdef macro that doesn't exist on switch (#501) --- src/window/gui/Gui.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index a4ccb78ee..ba768044b 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -295,8 +295,13 @@ void Gui::Update(WindowEvent event) { case WindowBackend::SDL_METAL: ImGui_ImplSDL2_ProcessEvent(static_cast(event.Sdl.Event)); +#ifdef __SWITCH__ + // Switch doesn't support SDL_WINDOWEVENT_DISPLAY_CHANGED + if (mDpiInit) { +#else if (static_cast(event.Sdl.Event)->window.event == SDL_WINDOWEVENT_DISPLAY_CHANGED || mDpiInit) { +#endif int display = 0; if (Context::GetInstance()->GetWindow()->GetWindowBackend() == WindowBackend::SDL_OPENGL) { display = SDL_GetWindowDisplayIndex(static_cast(mImpl.Opengl.Window)); From c29a484dc6e0ae0a891c31a71352434ff95b14ed Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:03:14 -0400 Subject: [PATCH 05/41] revert HighDPI (#502) * Revert "fix: ifdef macro that doesn't exist on switch (#501)" This reverts commit 8a079ed15852fbd26e701fd317afc14530578a92. * Revert "HighDPI UI behavouir (#467)" This reverts commit b73cdb555d7990cbdb30fca38cb29d057cc3a99f. --- src/window/gui/Gui.cpp | 57 ------------------------------------------ src/window/gui/Gui.h | 4 --- 2 files changed, 61 deletions(-) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index ba768044b..a4cef5437 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -65,10 +65,6 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARA #endif -#ifndef USER_DEFAULT_SCREEN_DPI -#define USER_DEFAULT_SCREEN_DPI 96 -#endif - namespace LUS { #define TOGGLE_BTN ImGuiKey_F1 #define TOGGLE_PAD_BTN ImGuiKey_GamepadBack @@ -283,8 +279,6 @@ void Gui::Update(WindowEvent event) { mNeedsConsoleVariableSave = false; } - float dpiScale = 0; - switch (Context::GetInstance()->GetWindow()->GetWindowBackend()) { #ifdef __WIIU__ case WindowBackend::GX2: @@ -295,26 +289,6 @@ void Gui::Update(WindowEvent event) { case WindowBackend::SDL_METAL: ImGui_ImplSDL2_ProcessEvent(static_cast(event.Sdl.Event)); -#ifdef __SWITCH__ - // Switch doesn't support SDL_WINDOWEVENT_DISPLAY_CHANGED - if (mDpiInit) { -#else - if (static_cast(event.Sdl.Event)->window.event == SDL_WINDOWEVENT_DISPLAY_CHANGED || - mDpiInit) { -#endif - int display = 0; - if (Context::GetInstance()->GetWindow()->GetWindowBackend() == WindowBackend::SDL_OPENGL) { - display = SDL_GetWindowDisplayIndex(static_cast(mImpl.Opengl.Window)); - } else { - display = SDL_GetWindowDisplayIndex(static_cast(mImpl.Metal.Window)); - } - - float dpi; - if (SDL_GetDisplayDPI(display, &dpi, nullptr, nullptr) == 0) { - dpiScale = dpi / USER_DEFAULT_SCREEN_DPI; - } - } - #ifdef __SWITCH__ LUS::Switch::ImGuiProcessEvent(mImGuiIo->WantTextInput); #endif @@ -327,30 +301,11 @@ void Gui::Update(WindowEvent event) { case WindowBackend::DX11: ImGui_ImplWin32_WndProcHandler(static_cast(event.Win32.Handle), event.Win32.Msg, event.Win32.Param1, event.Win32.Param2); - - if (event.Win32.Msg == WM_DPICHANGED || mDpiInit) { - HMONITOR monitor = MonitorFromWindow(static_cast(event.Win32.Handle), MONITOR_DEFAULTTONEAREST); - dpiScale = (float)ImGui_ImplWin32_GetDpiScaleForMonitor(monitor); - } break; #endif default: break; } - - if (dpiScale > 0) { - if (mDpiInit) { - mLastDpiScale = 1.f; - mDpiInit = false; - } - - float diff = dpiScale / mLastDpiScale; - mLastDpiScale = dpiScale; - - ImGui::GetStyle().ScaleAllSizes(diff); - ImFont* font = ImGui::GetFont(); - font->Scale *= diff; - } } bool Gui::ImGuiGamepadNavigationEnabled() { @@ -367,24 +322,12 @@ void Gui::UnblockImGuiGamepadNavigation() { } } -float Gui::GetCurrentDpiScale() { - if (mLastDpiScale <= 0) { - return 1.f; - } - - return mLastDpiScale; -} - void Gui::DrawMenu() { LUS::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")->Update(); ImGuiBackendNewFrame(); ImGuiWMNewFrame(); ImGui::NewFrame(); - if (mLastDpiScale == 0) { - mDpiInit = true; - } - const std::shared_ptr wnd = Context::GetInstance()->GetWindow(); const std::shared_ptr conf = Context::GetInstance()->GetConfig(); diff --git a/src/window/gui/Gui.h b/src/window/gui/Gui.h index 3a4f3d6ee..c3dd0ca0f 100644 --- a/src/window/gui/Gui.h +++ b/src/window/gui/Gui.h @@ -92,7 +92,6 @@ class Gui { bool ImGuiGamepadNavigationEnabled(); void BlockImGuiGamepadNavigation(); void UnblockImGuiGamepadNavigation(); - float GetCurrentDpiScale(); protected: void ImGuiWMInit(); @@ -112,9 +111,6 @@ class Gui { std::shared_ptr mMenuBar; std::map mGuiTextures; std::map> mGuiWindows; - - bool mDpiInit = false; - float mLastDpiScale = 0; }; } // namespace LUS From a496a6f82a38eaab0da978701e4aa731df5838cd Mon Sep 17 00:00:00 2001 From: Archez Date: Mon, 22 Apr 2024 19:29:12 -0400 Subject: [PATCH 06/41] fix DL branch not assigning the new dl to the active command (#503) --- src/graphic/Fast3D/gfx_pc.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/graphic/Fast3D/gfx_pc.cpp b/src/graphic/Fast3D/gfx_pc.cpp index cae6ccf15..635a0d9e4 100644 --- a/src/graphic/Fast3D/gfx_pc.cpp +++ b/src/graphic/Fast3D/gfx_pc.cpp @@ -2914,7 +2914,7 @@ bool gfx_dl_otr_filepath_handler_custom(Gfx** cmd0) { g_exec_stack.call(*cmd0, nDL); } else { if (nDL != nullptr) { - cmd = nDL; + (*cmd0) = nDL; g_exec_stack.branch(*cmd0); return true; // shortcut cmd increment } else { @@ -2945,7 +2945,7 @@ bool gfx_dl_handler_common(Gfx** cmd0) { } } else { (*cmd0) = subGFX; - g_exec_stack.branch(cmd); + g_exec_stack.branch(*cmd0); return true; // shortcut cmd increment } return false; @@ -2987,8 +2987,8 @@ bool gfx_dl_index_handler(Gfx** cmd0) { g_exec_stack.call((*cmd0), subGFX); } } else { - cmd = subGFX; - g_exec_stack.branch((*cmd0)); + (*cmd0) = subGFX; + g_exec_stack.branch(*cmd0); return true; // shortcut cmd increment } return false; From e6626f520caca5957c22e2d0807ce07322e70f78 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Mon, 22 Apr 2024 20:48:07 -0400 Subject: [PATCH 07/41] replace hardcoded `uint16_t` with `CONTROLLERBUTTONS_T` (#504) * replace hardcoded `uint16_t` with `CONTROLLERBUTTONS_T` * clang format * update `OSContPad` --- include/libultraship/libultra/controller.h | 6 +++++- src/Context.cpp | 2 +- src/Context.h | 2 +- src/controller/controldeck/ControlDeck.cpp | 5 +++-- src/controller/controldeck/ControlDeck.h | 2 +- .../controldevice/controller/Controller.cpp | 9 +++++---- .../controldevice/controller/Controller.h | 10 +++++----- .../controller/ControllerButton.cpp | 10 +++++----- .../controldevice/controller/ControllerButton.h | 10 +++++----- .../mapping/ControllerButtonMapping.cpp | 5 +++-- .../mapping/ControllerButtonMapping.h | 12 ++++++++---- .../mapping/factories/ButtonMappingFactory.cpp | 17 +++++++++-------- .../mapping/factories/ButtonMappingFactory.h | 12 ++++++------ .../keyboard/KeyboardKeyToButtonMapping.cpp | 5 +++-- .../keyboard/KeyboardKeyToButtonMapping.h | 4 ++-- .../sdl/SDLAxisDirectionToButtonMapping.cpp | 4 ++-- .../sdl/SDLAxisDirectionToButtonMapping.h | 4 ++-- .../mapping/sdl/SDLButtonToButtonMapping.cpp | 6 +++--- .../mapping/sdl/SDLButtonToButtonMapping.h | 4 ++-- .../mapping/wiiu/WiiUButtonToButtonMapping.cpp | 7 ++++--- .../mapping/wiiu/WiiUButtonToButtonMapping.h | 6 +++--- src/window/gui/InputEditorWindow.cpp | 8 ++++---- src/window/gui/InputEditorWindow.h | 14 +++++++------- 23 files changed, 89 insertions(+), 75 deletions(-) diff --git a/include/libultraship/libultra/controller.h b/include/libultraship/libultra/controller.h index ca954b0ea..3a985f331 100644 --- a/include/libultraship/libultra/controller.h +++ b/include/libultraship/libultra/controller.h @@ -81,6 +81,10 @@ #define CONT_ADDR_CRC_ER 0x04 #define CONT_EEPROM_BUSY 0x80 +#ifndef CONTROLLERBUTTONS_T +#define CONTROLLERBUTTONS_T uint16_t +#endif + /* Buttons */ #define BTN_CRIGHT 0x00001 #define BTN_CLEFT 0x00002 @@ -117,7 +121,7 @@ typedef struct { } OSContStatus; // size = 0x04 typedef struct { - /* 0x00 */ uint16_t button; + /* 0x00 */ CONTROLLERBUTTONS_T button; /* 0x02 */ int8_t stick_x; /* 0x03 */ int8_t stick_y; /* 0x04 */ uint8_t err_no; diff --git a/src/Context.cpp b/src/Context.cpp index 8ba78df0b..610e7b1f9 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -224,7 +224,7 @@ void Context::InitResourceManager(const std::vector& otrFiles, #endif } -void Context::InitControlDeck(std::vector additionalBitmasks) { +void Context::InitControlDeck(std::vector additionalBitmasks) { if (GetControlDeck() != nullptr) { return; } diff --git a/src/Context.h b/src/Context.h index 6164d1904..0a03ea70d 100644 --- a/src/Context.h +++ b/src/Context.h @@ -59,7 +59,7 @@ class Context { void InitConsoleVariables(); void InitResourceManager(const std::vector& otrFiles = {}, const std::unordered_set& validHashes = {}, uint32_t reservedThreadCount = 1); - void InitControlDeck(std::vector additionalBitmasks = {}); + void InitControlDeck(std::vector additionalBitmasks = {}); void InitCrashHandler(); void InitAudio(); void InitGfxDebugger(); diff --git a/src/controller/controldeck/ControlDeck.cpp b/src/controller/controldeck/ControlDeck.cpp index 6b1e3c5a4..00c2c91cc 100644 --- a/src/controller/controldeck/ControlDeck.cpp +++ b/src/controller/controldeck/ControlDeck.cpp @@ -12,7 +12,8 @@ namespace LUS { -ControlDeck::ControlDeck(std::vector additionalBitmasks) : mPads(nullptr), mSinglePlayerMappingMode(false) { +ControlDeck::ControlDeck(std::vector additionalBitmasks) + : mPads(nullptr), mSinglePlayerMappingMode(false) { for (int32_t i = 0; i < MAXCONTROLLERS; i++) { mPorts.push_back(std::make_shared(i, std::make_shared(i, additionalBitmasks))); } @@ -20,7 +21,7 @@ ControlDeck::ControlDeck(std::vector additionalBitmasks) : mPads(nullp mDeviceIndexMappingManager = std::make_shared(); } -ControlDeck::ControlDeck() : ControlDeck(std::vector()) { +ControlDeck::ControlDeck() : ControlDeck(std::vector()) { } ControlDeck::~ControlDeck() { diff --git a/src/controller/controldeck/ControlDeck.h b/src/controller/controldeck/ControlDeck.h index cb6d0fbfa..f480a6667 100644 --- a/src/controller/controldeck/ControlDeck.h +++ b/src/controller/controldeck/ControlDeck.h @@ -11,7 +11,7 @@ namespace LUS { class ControlDeck { public: ControlDeck(); - ControlDeck(std::vector additionalBitmasks); + ControlDeck(std::vector additionalBitmasks); ~ControlDeck(); void Init(uint8_t* controllerBits); diff --git a/src/controller/controldevice/controller/Controller.cpp b/src/controller/controldevice/controller/Controller.cpp index 4f25cf120..6cecf64a2 100644 --- a/src/controller/controldevice/controller/Controller.cpp +++ b/src/controller/controldevice/controller/Controller.cpp @@ -15,7 +15,8 @@ namespace LUS { -Controller::Controller(uint8_t portIndex, std::vector additionalBitmasks) : ControlDevice(portIndex) { +Controller::Controller(uint8_t portIndex, std::vector additionalBitmasks) + : ControlDevice(portIndex) { for (auto bitmask : { BUTTON_BITMASKS }) { mButtons[bitmask] = std::make_shared(portIndex, bitmask); } @@ -36,11 +37,11 @@ Controller::~Controller() { SPDLOG_TRACE("destruct controller"); } -std::unordered_map> Controller::GetAllButtons() { +std::unordered_map> Controller::GetAllButtons() { return mButtons; } -std::shared_ptr Controller::GetButton(uint16_t bitmask) { +std::shared_ptr Controller::GetButton(CONTROLLERBUTTONS_T bitmask) { return mButtons[bitmask]; } @@ -209,7 +210,7 @@ bool Controller::HasMappingsForLUSDeviceIndex(LUSDeviceIndex lusIndex) { return false; } -std::shared_ptr Controller::GetButtonByBitmask(uint16_t bitmask) { +std::shared_ptr Controller::GetButtonByBitmask(CONTROLLERBUTTONS_T bitmask) { return mButtons[bitmask]; } diff --git a/src/controller/controldevice/controller/Controller.h b/src/controller/controldevice/controller/Controller.h index 7a683563a..ca4c1a513 100644 --- a/src/controller/controldevice/controller/Controller.h +++ b/src/controller/controldevice/controller/Controller.h @@ -23,7 +23,7 @@ namespace LUS { class Controller : public ControlDevice { public: Controller(uint8_t portIndex); - Controller(uint8_t portIndex, std::vector additionalBitmasks); + Controller(uint8_t portIndex, std::vector additionalBitmasks); ~Controller(); void ReloadAllMappingsFromConfig(); @@ -35,9 +35,9 @@ class Controller : public ControlDevice { void ClearAllMappings(); void ClearAllMappingsForDevice(LUSDeviceIndex lusDeviceIndex); void AddDefaultMappings(LUSDeviceIndex lusDeviceIndex); - std::unordered_map> GetAllButtons(); - std::shared_ptr GetButtonByBitmask(uint16_t bitmask); - std::shared_ptr GetButton(uint16_t bitmask); + std::unordered_map> GetAllButtons(); + std::shared_ptr GetButtonByBitmask(CONTROLLERBUTTONS_T bitmask); + std::shared_ptr GetButton(CONTROLLERBUTTONS_T bitmask); std::shared_ptr GetLeftStick(); std::shared_ptr GetRightStick(); std::shared_ptr GetGyro(); @@ -59,7 +59,7 @@ class Controller : public ControlDevice { void LoadButtonMappingFromConfig(std::string id); void SaveButtonMappingIdsToConfig(); - std::unordered_map> mButtons; + std::unordered_map> mButtons; std::shared_ptr mLeftStick, mRightStick; std::shared_ptr mGyro; std::shared_ptr mRumble; diff --git a/src/controller/controldevice/controller/ControllerButton.cpp b/src/controller/controldevice/controller/ControllerButton.cpp index aa3ba833e..99f378961 100644 --- a/src/controller/controldevice/controller/ControllerButton.cpp +++ b/src/controller/controldevice/controller/ControllerButton.cpp @@ -10,7 +10,7 @@ #include namespace LUS { -ControllerButton::ControllerButton(uint8_t portIndex, uint16_t bitmask) +ControllerButton::ControllerButton(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask) : mPortIndex(portIndex), mBitmask(bitmask), mUseKeydownEventToCreateNewMapping(false), mKeyboardScancodeForNewMapping(LUS_KB_UNKNOWN) { } @@ -18,7 +18,7 @@ ControllerButton::ControllerButton(uint8_t portIndex, uint16_t bitmask) ControllerButton::~ControllerButton() { } -std::string ControllerButton::GetConfigNameFromBitmask(uint16_t bitmask) { +std::string ControllerButton::GetConfigNameFromBitmask(CONTROLLERBUTTONS_T bitmask) { switch (bitmask) { case BTN_A: return "A"; @@ -159,7 +159,7 @@ void ControllerButton::ClearAllButtonMappingsForDevice(LUSDeviceIndex lusDeviceI SaveButtonMappingIdsToConfig(); } -void ControllerButton::UpdatePad(uint16_t& padButtons) { +void ControllerButton::UpdatePad(CONTROLLERBUTTONS_T& padButtons) { for (const auto& [id, mapping] : mButtonMappings) { mapping->UpdatePad(padButtons); } @@ -171,7 +171,7 @@ bool ControllerButton::HasMappingsForLUSDeviceIndex(LUSDeviceIndex lusIndex) { } #ifdef __WIIU__ -bool ControllerButton::AddOrEditButtonMappingFromRawPress(uint16_t bitmask, std::string id) { +bool ControllerButton::AddOrEditButtonMappingFromRawPress(CONTROLLERBUTTONS_T bitmask, std::string id) { std::shared_ptr mapping = ButtonMappingFactory::CreateButtonMappingFromWiiUInput(mPortIndex, bitmask); @@ -203,7 +203,7 @@ void ControllerButton::AddDefaultMappings(LUSDeviceIndex lusDeviceIndex) { SaveButtonMappingIdsToConfig(); } #else -bool ControllerButton::AddOrEditButtonMappingFromRawPress(uint16_t bitmask, std::string id) { +bool ControllerButton::AddOrEditButtonMappingFromRawPress(CONTROLLERBUTTONS_T bitmask, std::string id) { std::shared_ptr mapping = nullptr; mUseKeydownEventToCreateNewMapping = true; diff --git a/src/controller/controldevice/controller/ControllerButton.h b/src/controller/controldevice/controller/ControllerButton.h index 294a902d2..5241aa7fb 100644 --- a/src/controller/controldevice/controller/ControllerButton.h +++ b/src/controller/controldevice/controller/ControllerButton.h @@ -15,7 +15,7 @@ namespace LUS { class ControllerButton { public: - ControllerButton(uint8_t portIndex, uint16_t bitmask); + ControllerButton(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask); ~ControllerButton(); std::shared_ptr GetButtonMappingById(std::string id); @@ -32,9 +32,9 @@ class ControllerButton { void ClearAllButtonMappings(); void ClearAllButtonMappingsForDevice(LUSDeviceIndex lusDeviceIndex); - bool AddOrEditButtonMappingFromRawPress(uint16_t bitmask, std::string id); + bool AddOrEditButtonMappingFromRawPress(CONTROLLERBUTTONS_T bitmask, std::string id); - void UpdatePad(uint16_t& padButtons); + void UpdatePad(CONTROLLERBUTTONS_T& padButtons); #ifndef __WIIU__ bool ProcessKeyboardEvent(LUS::KbEventType eventType, LUS::KbScancode scancode); @@ -44,9 +44,9 @@ class ControllerButton { private: uint8_t mPortIndex; - uint16_t mBitmask; + CONTROLLERBUTTONS_T mBitmask; std::unordered_map> mButtonMappings; - std::string GetConfigNameFromBitmask(uint16_t bitmask); + std::string GetConfigNameFromBitmask(CONTROLLERBUTTONS_T bitmask); bool mUseKeydownEventToCreateNewMapping; KbScancode mKeyboardScancodeForNewMapping; diff --git a/src/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp b/src/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp index ce4799ff5..dd9e8b17b 100644 --- a/src/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp +++ b/src/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp @@ -6,14 +6,15 @@ #include "public/bridge/consolevariablebridge.h" namespace LUS { -ControllerButtonMapping::ControllerButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask) +ControllerButtonMapping::ControllerButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, + CONTROLLERBUTTONS_T bitmask) : ControllerInputMapping(lusDeviceIndex), mPortIndex(portIndex), mBitmask(bitmask) { } ControllerButtonMapping::~ControllerButtonMapping() { } -uint16_t ControllerButtonMapping::GetBitmask() { +CONTROLLERBUTTONS_T ControllerButtonMapping::GetBitmask() { return mBitmask; } diff --git a/src/controller/controldevice/controller/mapping/ControllerButtonMapping.h b/src/controller/controldevice/controller/mapping/ControllerButtonMapping.h index 06f1e843d..532b00bee 100644 --- a/src/controller/controldevice/controller/mapping/ControllerButtonMapping.h +++ b/src/controller/controldevice/controller/mapping/ControllerButtonMapping.h @@ -7,15 +7,19 @@ namespace LUS { +#ifndef CONTROLLERBUTTONS_T +#define CONTROLLERBUTTONS_T uint16_t +#endif + class ControllerButtonMapping : virtual public ControllerInputMapping { public: - ControllerButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask); + ControllerButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask); ~ControllerButtonMapping(); virtual std::string GetButtonMappingId() = 0; - uint16_t GetBitmask(); - virtual void UpdatePad(uint16_t& padButtons) = 0; + CONTROLLERBUTTONS_T GetBitmask(); + virtual void UpdatePad(CONTROLLERBUTTONS_T& padButtons) = 0; virtual uint8_t GetMappingType(); void SetPortIndex(uint8_t portIndex); @@ -24,6 +28,6 @@ class ControllerButtonMapping : virtual public ControllerInputMapping { protected: uint8_t mPortIndex; - uint16_t mBitmask; + CONTROLLERBUTTONS_T mBitmask; }; } // namespace LUS diff --git a/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp b/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp index ab3b1847b..c2f7069c6 100644 --- a/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp +++ b/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp @@ -19,7 +19,8 @@ std::shared_ptr ButtonMappingFactory::CreateButtonMappi const std::string mappingCvarKey = "gControllers.ButtonMappings." + id; const std::string mappingClass = CVarGetString(StringHelper::Sprintf("%s.ButtonMappingClass", mappingCvarKey.c_str()).c_str(), ""); - uint16_t bitmask = CVarGetInteger(StringHelper::Sprintf("%s.Bitmask", mappingCvarKey.c_str()).c_str(), 0); + CONTROLLERBUTTONS_T bitmask = + CVarGetInteger(StringHelper::Sprintf("%s.Bitmask", mappingCvarKey.c_str()).c_str(), 0); if (!bitmask) { // all button mappings need bitmasks CVarClear(mappingCvarKey.c_str()); @@ -99,7 +100,7 @@ std::shared_ptr ButtonMappingFactory::CreateButtonMappi #ifdef __WIIU__ std::vector> ButtonMappingFactory::CreateDefaultWiiUButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, - uint16_t bitmask) { + CONTROLLERBUTTONS_T bitmask) { std::vector> mappings; auto wiiuIndexMapping = std::dynamic_pointer_cast( @@ -383,8 +384,8 @@ ButtonMappingFactory::CreateDefaultWiiUButtonMappings(LUSDeviceIndex lusDeviceIn } } -std::shared_ptr ButtonMappingFactory::CreateButtonMappingFromWiiUInput(uint8_t portIndex, - uint16_t bitmask) { +std::shared_ptr +ButtonMappingFactory::CreateButtonMappingFromWiiUInput(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask) { for (auto [lusDeviceIndex, indexMapping] : Context::GetInstance()->GetControlDeck()->GetDeviceIndexMappingManager()->GetAllDeviceIndexMappings()) { auto wiiuIndexMapping = std::dynamic_pointer_cast(indexMapping); @@ -474,7 +475,7 @@ std::shared_ptr ButtonMappingFactory::CreateButtonMappi } #else std::vector> -ButtonMappingFactory::CreateDefaultKeyboardButtonMappings(uint8_t portIndex, uint16_t bitmask) { +ButtonMappingFactory::CreateDefaultKeyboardButtonMappings(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask) { std::vector> mappings; switch (bitmask) { @@ -535,7 +536,7 @@ ButtonMappingFactory::CreateDefaultKeyboardButtonMappings(uint8_t portIndex, uin std::vector> ButtonMappingFactory::CreateDefaultSDLButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, - uint16_t bitmask) { + CONTROLLERBUTTONS_T bitmask) { std::vector> mappings; auto sdlIndexMapping = std::dynamic_pointer_cast( @@ -625,8 +626,8 @@ ButtonMappingFactory::CreateDefaultSDLButtonMappings(LUSDeviceIndex lusDeviceInd return mappings; } -std::shared_ptr ButtonMappingFactory::CreateButtonMappingFromSDLInput(uint8_t portIndex, - uint16_t bitmask) { +std::shared_ptr +ButtonMappingFactory::CreateButtonMappingFromSDLInput(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask) { std::unordered_map sdlControllers; std::shared_ptr mapping = nullptr; for (auto [lusIndex, indexMapping] : diff --git a/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h b/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h index 7f65e5b4d..c198e7d19 100644 --- a/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h +++ b/src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h @@ -11,19 +11,19 @@ class ButtonMappingFactory { static std::shared_ptr CreateButtonMappingFromConfig(uint8_t portIndex, std::string id); #ifdef __WIIU__ static std::vector> - CreateDefaultWiiUButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask); + CreateDefaultWiiUButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask); static std::shared_ptr CreateButtonMappingFromWiiUInput(uint8_t portIndex, - uint16_t bitmask); + CONTROLLERBUTTONS_T bitmask); #else - static std::vector> CreateDefaultKeyboardButtonMappings(uint8_t portIndex, - uint16_t bitmask); + static std::vector> + CreateDefaultKeyboardButtonMappings(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask); static std::vector> - CreateDefaultSDLButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask); + CreateDefaultSDLButtonMappings(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask); static std::shared_ptr CreateButtonMappingFromSDLInput(uint8_t portIndex, - uint16_t bitmask); + CONTROLLERBUTTONS_T bitmask); #endif }; } // namespace LUS diff --git a/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp b/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp index 54fbe26fd..85abfdc92 100644 --- a/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp +++ b/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp @@ -5,12 +5,13 @@ #include "Context.h" namespace LUS { -KeyboardKeyToButtonMapping::KeyboardKeyToButtonMapping(uint8_t portIndex, uint16_t bitmask, KbScancode scancode) +KeyboardKeyToButtonMapping::KeyboardKeyToButtonMapping(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask, + KbScancode scancode) : ControllerInputMapping(LUSDeviceIndex::Keyboard), ControllerButtonMapping(LUSDeviceIndex::Keyboard, portIndex, bitmask), KeyboardKeyToAnyMapping(scancode) { } -void KeyboardKeyToButtonMapping::UpdatePad(uint16_t& padButtons) { +void KeyboardKeyToButtonMapping::UpdatePad(CONTROLLERBUTTONS_T& padButtons) { if (Context::GetInstance()->GetControlDeck()->KeyboardGameInputBlocked()) { return; } diff --git a/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h b/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h index 61e557d6d..875de5cb8 100644 --- a/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h +++ b/src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h @@ -4,8 +4,8 @@ namespace LUS { class KeyboardKeyToButtonMapping final : public KeyboardKeyToAnyMapping, public ControllerButtonMapping { public: - KeyboardKeyToButtonMapping(uint8_t portIndex, uint16_t bitmask, KbScancode scancode); - void UpdatePad(uint16_t& padButtons) override; + KeyboardKeyToButtonMapping(uint8_t portIndex, CONTROLLERBUTTONS_T bitmask, KbScancode scancode); + void UpdatePad(CONTROLLERBUTTONS_T& padButtons) override; uint8_t GetMappingType() override; std::string GetButtonMappingId() override; void SaveToConfig() override; diff --git a/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp b/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp index fb7751c0a..77bd5c2f0 100644 --- a/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp +++ b/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp @@ -7,13 +7,13 @@ namespace LUS { SDLAxisDirectionToButtonMapping::SDLAxisDirectionToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, - uint16_t bitmask, int32_t sdlControllerAxis, + CONTROLLERBUTTONS_T bitmask, int32_t sdlControllerAxis, int32_t axisDirection) : ControllerInputMapping(lusDeviceIndex), ControllerButtonMapping(lusDeviceIndex, portIndex, bitmask), SDLAxisDirectionToAnyMapping(lusDeviceIndex, sdlControllerAxis, axisDirection) { } -void SDLAxisDirectionToButtonMapping::UpdatePad(uint16_t& padButtons) { +void SDLAxisDirectionToButtonMapping::UpdatePad(CONTROLLERBUTTONS_T& padButtons) { if (!ControllerLoaded()) { return; } diff --git a/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h b/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h index 96efff1b4..43b939908 100644 --- a/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h +++ b/src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h @@ -4,9 +4,9 @@ namespace LUS { class SDLAxisDirectionToButtonMapping final : public ControllerButtonMapping, public SDLAxisDirectionToAnyMapping { public: - SDLAxisDirectionToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask, + SDLAxisDirectionToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask, int32_t sdlControllerAxis, int32_t axisDirection); - void UpdatePad(uint16_t& padButtons) override; + void UpdatePad(CONTROLLERBUTTONS_T& padButtons) override; uint8_t GetMappingType() override; std::string GetButtonMappingId() override; void SaveToConfig() override; diff --git a/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp b/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp index db0f8a364..38e75c9d0 100644 --- a/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp +++ b/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp @@ -6,13 +6,13 @@ #include "Context.h" namespace LUS { -SDLButtonToButtonMapping::SDLButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask, - int32_t sdlControllerButton) +SDLButtonToButtonMapping::SDLButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, + CONTROLLERBUTTONS_T bitmask, int32_t sdlControllerButton) : ControllerInputMapping(lusDeviceIndex), ControllerButtonMapping(lusDeviceIndex, portIndex, bitmask), SDLButtonToAnyMapping(lusDeviceIndex, sdlControllerButton) { } -void SDLButtonToButtonMapping::UpdatePad(uint16_t& padButtons) { +void SDLButtonToButtonMapping::UpdatePad(CONTROLLERBUTTONS_T& padButtons) { if (!ControllerLoaded()) { return; } diff --git a/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h b/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h index 9d6e01888..83b2f41ef 100644 --- a/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h +++ b/src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h @@ -4,9 +4,9 @@ namespace LUS { class SDLButtonToButtonMapping final : public SDLButtonToAnyMapping, public ControllerButtonMapping { public: - SDLButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask, + SDLButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask, int32_t sdlControllerButton); - void UpdatePad(uint16_t& padButtons) override; + void UpdatePad(CONTROLLERBUTTONS_T& padButtons) override; uint8_t GetMappingType() override; std::string GetButtonMappingId() override; void SaveToConfig() override; diff --git a/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.cpp b/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.cpp index 3f0672250..5765e601b 100644 --- a/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.cpp +++ b/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.cpp @@ -7,13 +7,14 @@ #include "Context.h" namespace LUS { -WiiUButtonToButtonMapping::WiiUButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask, - bool isNunchuk, bool isClassic, uint32_t wiiuControllerButton) +WiiUButtonToButtonMapping::WiiUButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, + CONTROLLERBUTTONS_T bitmask, bool isNunchuk, bool isClassic, + uint32_t wiiuControllerButton) : ControllerInputMapping(lusDeviceIndex), ControllerButtonMapping(lusDeviceIndex, portIndex, bitmask), WiiUButtonToAnyMapping(lusDeviceIndex, isNunchuk, isClassic, wiiuControllerButton) { } -void WiiUButtonToButtonMapping::UpdatePad(uint16_t& padButtons) { +void WiiUButtonToButtonMapping::UpdatePad(CONTROLLERBUTTONS_T& padButtons) { if (Context::GetInstance()->GetControlDeck()->GamepadGameInputBlocked()) { return; } diff --git a/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.h b/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.h index 6b928f4e7..9778fd212 100644 --- a/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.h +++ b/src/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.h @@ -5,9 +5,9 @@ namespace LUS { class WiiUButtonToButtonMapping final : public WiiUButtonToAnyMapping, public ControllerButtonMapping { public: - WiiUButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, uint16_t bitmask, bool isNunchuk, - bool isClassic, uint32_t wiiuControllerButton); - void UpdatePad(uint16_t& padButtons) override; + WiiUButtonToButtonMapping(LUSDeviceIndex lusDeviceIndex, uint8_t portIndex, CONTROLLERBUTTONS_T bitmask, + bool isNunchuk, bool isClassic, uint32_t wiiuControllerButton); + void UpdatePad(CONTROLLERBUTTONS_T& padButtons) override; uint8_t GetMappingType() override; std::string GetButtonMappingId() override; void SaveToConfig() override; diff --git a/src/window/gui/InputEditorWindow.cpp b/src/window/gui/InputEditorWindow.cpp index 474e860f3..6c0e66f3c 100644 --- a/src/window/gui/InputEditorWindow.cpp +++ b/src/window/gui/InputEditorWindow.cpp @@ -180,7 +180,7 @@ void InputEditorWindow::DrawInputChip(const char* buttonName, ImVec4 color = CHI ImGui::EndDisabled(); } -void InputEditorWindow::DrawButtonLineAddMappingButton(uint8_t port, uint16_t bitmask) { +void InputEditorWindow::DrawButtonLineAddMappingButton(uint8_t port, CONTROLLERBUTTONS_T bitmask) { ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(1.0f, 0.5f)); auto popupId = StringHelper::Sprintf("addButtonMappingPopup##%d-%d", port, bitmask); if (ImGui::Button(StringHelper::Sprintf("%s###addButtonMappingButton%d-%d", ICON_FA_PLUS, port, bitmask).c_str(), @@ -209,7 +209,7 @@ void InputEditorWindow::DrawButtonLineAddMappingButton(uint8_t port, uint16_t bi } } -void InputEditorWindow::DrawButtonLineEditMappingButton(uint8_t port, uint16_t bitmask, std::string id) { +void InputEditorWindow::DrawButtonLineEditMappingButton(uint8_t port, CONTROLLERBUTTONS_T bitmask, std::string id) { auto mapping = LUS::Context::GetInstance() ->GetControlDeck() ->GetControllerByPort(port) @@ -352,7 +352,7 @@ void InputEditorWindow::DrawButtonLineEditMappingButton(uint8_t port, uint16_t b ImGui::SameLine(0, 4.0f); } -void InputEditorWindow::DrawButtonLine(const char* buttonName, uint8_t port, uint16_t bitmask, +void InputEditorWindow::DrawButtonLine(const char* buttonName, uint8_t port, CONTROLLERBUTTONS_T bitmask, ImVec4 color = CHIP_COLOR_N64_GREY) { ImGui::NewLine(); ImGui::SameLine(32.0f); @@ -922,7 +922,7 @@ void InputEditorWindow::DrawGyroSection(uint8_t port) { } } -void InputEditorWindow::DrawButtonDeviceIcons(uint8_t portIndex, std::set bitmasks) { +void InputEditorWindow::DrawButtonDeviceIcons(uint8_t portIndex, std::set bitmasks) { std::set allLusDeviceIndices; allLusDeviceIndices.insert(LUSDeviceIndex::Keyboard); for (auto [lusIndex, mapping] : Context::GetInstance() diff --git a/src/window/gui/InputEditorWindow.h b/src/window/gui/InputEditorWindow.h index 338b8d187..72a4e3ace 100644 --- a/src/window/gui/InputEditorWindow.h +++ b/src/window/gui/InputEditorWindow.h @@ -33,9 +33,9 @@ class InputEditorWindow : public GuiWindow { private: void DrawStickDirectionLine(const char* axisDirectionName, uint8_t port, uint8_t stick, Direction direction, ImVec4 color); - void DrawButtonLine(const char* buttonName, uint8_t port, uint16_t bitmask, ImVec4 color); - void DrawButtonLineEditMappingButton(uint8_t port, uint16_t bitmask, std::string id); - void DrawButtonLineAddMappingButton(uint8_t port, uint16_t bitmask); + void DrawButtonLine(const char* buttonName, uint8_t port, CONTROLLERBUTTONS_T bitmask, ImVec4 color); + void DrawButtonLineEditMappingButton(uint8_t port, CONTROLLERBUTTONS_T bitmask, std::string id); + void DrawButtonLineAddMappingButton(uint8_t port, CONTROLLERBUTTONS_T bitmask); void DrawStickDirectionLineEditMappingButton(uint8_t port, uint8_t stick, Direction direction, std::string id); void DrawStickDirectionLineAddMappingButton(uint8_t port, uint8_t stick, Direction direction); @@ -57,7 +57,7 @@ class InputEditorWindow : public GuiWindow { int32_t mMappingInputBlockTimer; // mBitmaskToMappingIds[port][bitmask] = { id0, id1, ... } - std::unordered_map>> mBitmaskToMappingIds; + std::unordered_map>> mBitmaskToMappingIds; // mStickDirectionToMappingIds[port][stick][direction] = { id0, id1, ... } std::unordered_map>>> @@ -69,9 +69,9 @@ class InputEditorWindow : public GuiWindow { void GetButtonColorsForLUSDeviceIndex(LUSDeviceIndex lusIndex, ImVec4& buttonColor, ImVec4& buttonHoveredColor); void DrawPortTab(uint8_t portIndex); void DrawDevicesTab(); - std::set mButtonsBitmasks; - std::set mDpadBitmasks; - void DrawButtonDeviceIcons(uint8_t portIndex, std::set bitmasks); + std::set mButtonsBitmasks; + std::set mDpadBitmasks; + void DrawButtonDeviceIcons(uint8_t portIndex, std::set bitmasks); void DrawAnalogStickDeviceIcons(uint8_t portIndex, LUS::Stick stick); void DrawRumbleDeviceIcons(uint8_t portIndex); void DrawGyroDeviceIcons(uint8_t portIndex); From 81f04fdcedeb5186b56b105fb0cc5cb0a478ae90 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Mon, 22 Apr 2024 22:26:39 -0400 Subject: [PATCH 08/41] update `GameOverlay` to work when no external fonts have been loaded (#505) * update `GameOverlay` to work when no external fonts have been loaded * clang format --- src/window/gui/GameOverlay.cpp | 34 +++++++++++++++++----------------- src/window/gui/GameOverlay.h | 7 ++++++- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/window/gui/GameOverlay.cpp b/src/window/gui/GameOverlay.cpp index 56f6cee98..b86f849d0 100644 --- a/src/window/gui/GameOverlay.cpp +++ b/src/window/gui/GameOverlay.cpp @@ -25,9 +25,13 @@ void GameOverlay::LoadFont(const std::string& name, const std::string& path, flo initData->ResourceVersion = 0; std::shared_ptr font = std::static_pointer_cast( Context::GetInstance()->GetResourceManager()->LoadResource(path, false, initData)); - if (font != nullptr) { - mFonts[name] = io.Fonts->AddFontFromMemoryTTF(font->Data, font->DataSize, fontSize); + + if (font == nullptr) { + SPDLOG_ERROR("Failed to load font: {}", name); + return; } + + mFonts[name] = io.Fonts->AddFontFromMemoryTTF(font->Data, font->DataSize, fontSize); } void GameOverlay::TextDraw(float x, float y, bool shadow, ImVec4 color, const char* fmt, ...) { @@ -134,19 +138,17 @@ void GameOverlay::Init() { Context::GetInstance()->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory( std::make_shared(), RESOURCE_FORMAT_BINARY, "Font", static_cast(RESOURCE_TYPE_FONT), 0); - LoadFont("Press Start 2P", "fonts/PressStart2P-Regular.ttf", 12.0f); - LoadFont("Fipps", "fonts/Fipps-Regular.otf", 32.0f); - const std::string defaultFont = mFonts.begin()->first; - if (!mFonts.empty()) { - const std::string font = CVarGetString("gOverlayFont", defaultFont.c_str()); - for (auto& [name, _] : mFonts) { - if (font.starts_with(name)) { - mCurrentFont = name; - break; - } - mCurrentFont = defaultFont; - } +} + +void GameOverlay::SetCurrentFont(const std::string& name) { + if (mFonts[name] == nullptr) { + SPDLOG_ERROR("Failed to set current font: {}", name); + return; } + + mCurrentFont = name; + CVarSetString(CVAR_GAME_OVERLAY_FONT, name.c_str()); + Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesOnNextTick(); } void GameOverlay::DrawSettings() { @@ -154,9 +156,7 @@ void GameOverlay::DrawSettings() { if (ImGui::BeginCombo("##TextFont", mCurrentFont.c_str())) { for (auto& [name, font] : mFonts) { if (ImGui::Selectable(name.c_str(), name == mCurrentFont)) { - mCurrentFont = name; - CVarSetString("gOverlayFont", name.c_str()); - LUS::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesOnNextTick(); + SetCurrentFont(name); } } ImGui::EndCombo(); diff --git a/src/window/gui/GameOverlay.h b/src/window/gui/GameOverlay.h index 20704e7e8..581af8f4a 100644 --- a/src/window/gui/GameOverlay.h +++ b/src/window/gui/GameOverlay.h @@ -12,6 +12,10 @@ namespace LUS { +#ifndef CVAR_GAME_OVERLAY_FONT +#define CVAR_GAME_OVERLAY_FONT "gOverlayFont" +#endif + enum class OverlayType { TEXT, IMAGE, NOTIFICATION }; struct Overlay { @@ -27,6 +31,8 @@ class GameOverlay { ~GameOverlay(); void Init(); + void LoadFont(const std::string& name, const std::string& path, float fontSize); + void SetCurrentFont(const std::string& name); void Draw(); void DrawSettings(); float GetStringWidth(const char* text); @@ -47,6 +53,5 @@ class GameOverlay { bool mNeedsCleanup = false; void CleanupNotifications(); - void LoadFont(const std::string& name, const std::string& path, float fontSize); }; } // namespace LUS From 7fab78ce51228d4bc112d99e58515c26ee4b4101 Mon Sep 17 00:00:00 2001 From: Kenix3 Date: Tue, 23 Apr 2024 22:03:25 -0400 Subject: [PATCH 09/41] Adds libzip to credits --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 77c75c6ed..d3eb8e8d4 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,4 @@ LUS makes use of the following third party libraries and resources: - [bzip2](https://github.com/libarchive/bzip2) (bzip2) compression used in StormLib - [sdl2](https://github.com/libsdl-org/SDL) (zlib) window manager, controllers, and audio player - [glew](https://github.com/nigels-com/glew) (modified BSD-3-Clause and MIT) OpenGL extension loading library. +- [libzip](https://github.com/nih-at/) (BSD-3-Clause) From 1cef81cf82899288419b2d4b9a9690faa2a21746 Mon Sep 17 00:00:00 2001 From: Kenix3 Date: Tue, 23 Apr 2024 22:04:05 -0400 Subject: [PATCH 10/41] Adds description to libzip credits --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3eb8e8d4..2e7071390 100644 --- a/README.md +++ b/README.md @@ -52,4 +52,4 @@ LUS makes use of the following third party libraries and resources: - [bzip2](https://github.com/libarchive/bzip2) (bzip2) compression used in StormLib - [sdl2](https://github.com/libsdl-org/SDL) (zlib) window manager, controllers, and audio player - [glew](https://github.com/nigels-com/glew) (modified BSD-3-Clause and MIT) OpenGL extension loading library. -- [libzip](https://github.com/nih-at/) (BSD-3-Clause) +- [libzip](https://github.com/nih-at/) (BSD-3-Clause) read `.zip` compatible archives From 493639d5daf75c8fa5d374f96fc95b652714299f Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Wed, 24 Apr 2024 18:59:48 -0400 Subject: [PATCH 11/41] cmake cleanup (#510) * cmake cleanup * fix exclude use * gx2 fix * more wii u fixes --- extern/CMakeLists.txt | 43 + extern/libgfxd/LICENSE | 21 + extern/libgfxd/Makefile | 26 + extern/libgfxd/README.md | 478 +++++ extern/libgfxd/gbi.h | 3838 ++++++++++++++++++++++++++++++++++ extern/libgfxd/gfxd.c | 863 ++++++++ extern/libgfxd/gfxd.h | 387 ++++ extern/libgfxd/priv.h | 125 ++ extern/libgfxd/uc.c | 54 + extern/libgfxd/uc_argfn.c | 1814 ++++++++++++++++ extern/libgfxd/uc_argtbl.c | 485 +++++ extern/libgfxd/uc_f3d.c | 4 + extern/libgfxd/uc_f3db.c | 5 + extern/libgfxd/uc_f3dex.c | 4 + extern/libgfxd/uc_f3dex2.c | 4 + extern/libgfxd/uc_f3dexb.c | 5 + extern/libgfxd/uc_macrofn.c | 2507 ++++++++++++++++++++++ extern/libgfxd/uc_macrotbl.c | 1397 +++++++++++++ src/CMakeLists.txt | 410 +--- 19 files changed, 12125 insertions(+), 345 deletions(-) create mode 100644 extern/libgfxd/LICENSE create mode 100644 extern/libgfxd/Makefile create mode 100644 extern/libgfxd/README.md create mode 100644 extern/libgfxd/gbi.h create mode 100644 extern/libgfxd/gfxd.c create mode 100644 extern/libgfxd/gfxd.h create mode 100644 extern/libgfxd/priv.h create mode 100644 extern/libgfxd/uc.c create mode 100644 extern/libgfxd/uc_argfn.c create mode 100644 extern/libgfxd/uc_argtbl.c create mode 100644 extern/libgfxd/uc_f3d.c create mode 100644 extern/libgfxd/uc_f3db.c create mode 100644 extern/libgfxd/uc_f3dex.c create mode 100644 extern/libgfxd/uc_f3dex2.c create mode 100644 extern/libgfxd/uc_f3dexb.c create mode 100644 extern/libgfxd/uc_macrofn.c create mode 100644 extern/libgfxd/uc_macrotbl.c diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 37ce9abba..5d709a54a 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -139,6 +139,36 @@ target_include_directories(tinyxml2 PUBLIC ${TINYXML2_DIR}) set(ZAPDUTILS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/ZAPDUtils) add_subdirectory(${ZAPDUTILS_DIR}) +#=================== libgfxd =================== +# This used to be included from ZAPDTR, meaning setting GFX_DEBUG_DISASSEMBLER +# required the port include ZAPDTR. The version in extern is the version that was +# in ZAPDTR, which is +# https://github.com/glankk/libgfxd/tree/008f73dca8ebc9151b205959b17773a19c5bd0da +# with a couple small changes: +# * priv.h now has `#define CONFIG_MT` added right above the #ifdef CONFIG_MT +# * the Makefile now has `CC ?= gcc` as the first line + +if (GFX_DEBUG_DISASSEMBLER) + set(LIBGFXD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libgfxd) + add_library(libgfxd STATIC) + set_property(TARGET libgfxd PROPERTY C_STANDARD 11) + + target_sources(libgfxd PRIVATE + ${LIBGFXD_DIR}/gbi.h + ${LIBGFXD_DIR}/gfxd.h + ${LIBGFXD_DIR}/priv.h + ${LIBGFXD_DIR}/gfxd.c + ${LIBGFXD_DIR}/uc.c + ${LIBGFXD_DIR}/uc_f3d.c + ${LIBGFXD_DIR}/uc_f3db.c + ${LIBGFXD_DIR}/uc_f3dex.c + ${LIBGFXD_DIR}/uc_f3dex2.c + ${LIBGFXD_DIR}/uc_f3dexb.c + ) + + target_include_directories(libgfxd PUBLIC ${LIBGFXD_DIR}) +endif() + #=================== nlohmann-json =================== set(JSON_BuildTests OFF CACHE INTERNAL "") @@ -161,3 +191,16 @@ set(THREADPOOL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thread-pool) add_library(ThreadPool INTERFACE) target_include_directories(ThreadPool INTERFACE ${THREADPOOL_DIR}) + +#=================== STB =================== + +set(STB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/stb) +add_library(stb STATIC) + +target_sources(stb PRIVATE + ${STB_DIR}/stb_image.h + ${STB_DIR}/stb_image_write.h + ${STB_DIR}/stb_impl.c +) + +target_include_directories(stb PUBLIC ${STB_DIR}) diff --git a/extern/libgfxd/LICENSE b/extern/libgfxd/LICENSE new file mode 100644 index 000000000..a7655f829 --- /dev/null +++ b/extern/libgfxd/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2021 glank (glankk@github.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extern/libgfxd/Makefile b/extern/libgfxd/Makefile new file mode 100644 index 000000000..5c3edbef4 --- /dev/null +++ b/extern/libgfxd/Makefile @@ -0,0 +1,26 @@ +CC ?= gcc +CFLAGS = -Wall -O2 -g +UC_OBJ = uc_f3d.o uc_f3db.o uc_f3dex.o uc_f3dexb.o uc_f3dex2.o +OBJ = gfxd.o $(UC_OBJ) +LIB = libgfxd.a + +CPPFLAGS-$(MT) += -DCONFIG_MT +CPPFLAGS += $(CPPFLAGS-y) + +.PHONY: all +all: $(LIB) + +.PHONY: clean +clean: + rm -f $(OBJ) $(LIB) + +.INTERMEDIATE: $(OBJ) + +$(OBJ): gbi.h gfxd.h priv.h +$(UC_OBJ): uc.c uc_argfn.c uc_argtbl.c uc_macrofn.c uc_macrotbl.c + +$(LIB): $(OBJ) + $(AR) rcs $@ $^ + +%.o: %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< diff --git a/extern/libgfxd/README.md b/extern/libgfxd/README.md new file mode 100644 index 000000000..2e8258943 --- /dev/null +++ b/extern/libgfxd/README.md @@ -0,0 +1,478 @@ +## Installing +Run `make` for a single-threaded build, or `make MT=y` for a multi-threaded +build. Copy `libgfxd.a` to your lib directory, and `gfxd.h` to your include +directory. + +## Example usage +Example source code: +``` +#include +#include + +static int macro_fn(void) +{ + /* Print a tab before each macro, and a comma and newline after each + macro */ + gfxd_puts("\t"); + gfxd_macro_dflt(); /* Execute the default macro handler */ + gfxd_puts(",\n"); + + return 0; +} + +int main() +{ + /* Read from stdin and write to stdout */ + gfxd_input_fd(fileno(stdin)); + gfxd_output_fd(fileno(stdout)); + + /* Override the default macro handler to make the output prettier */ + gfxd_macro_fn(macro_fn); + + /* Select F3DEX as the target microcode */ + gfxd_target(gfxd_f3dex); + + /* Set the input endianness to big endian, and the word size to 4 */ + gfxd_endian(gfxd_endian_big, 4); + + /* Print an opening brace */ + gfxd_puts("{\n"); + + /* Execute until the end of input, or until encountering an invalid + command */ + gfxd_execute(); + + /* Print a closing brace */ + gfxd_puts("}\n"); +} +``` + +Example input (binary): +``` +0xe7000000, 0x00000000, +0xfc127e03, 0xfffffdf8, +0xb900031d, 0xc8112078, +0xb6000000, 0x000e0000, +0xb7000000, 0x00012000, +0xfa000000, 0xffffffff, +0x040030bf, 0x000002e0, +0xb1000204, 0x00020604, +0xb1080a0c, 0x000a0e0c, +0xb10a1012, 0x000a120e, +0xb1140200, 0x00140016, +0xb8000000, 0x00000000, +``` + +Example output: +``` +{ + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPClearGeometryMode(G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_CULL_BACK | G_FOG), + gsDPSetPrimColor(0, 0, 0xFF, 0xFF, 0xFF, 0xFF), + gsSPVertex(0x000002E0, 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP1Quadrangle(5, 8, 9, 7, 0), + gsSP1Quadrangle(10, 1, 0, 11, 0), + gsSPEndDisplayList(), +} +``` + +## Input/output methods +The input consists of any number of `Gfx` packets, and the output is the +decompiled macros in plain-text. The endianness and microcode type of the input +can be set using `gfxd_endian` and `gfxd_target`. + +Several methods of doing I/O are available. No method is selected by default, +meaning there will be no input, and any output will be discarded. + +--- + +##### `void gfxd_input_buffer(const void *buf, int size)` +##### `void gfxd_output_buffer(char *buf, int size)` +Use the buffer pointed to by `buf`, of `size` bytes. + +--- + +##### `void gfxd_input_fd(int fd)` +##### `void gfxd_output_fd(int fd)` +Use `read()` / `write()` with the provided file descriptor, `fd`. + +--- + +##### `typedef int gfxd_input_fn_t(void *buf, int count)` +##### `typedef int gfxd_output_fn_t(const char *buf, int count)` +##### `void gfxd_input_callback(gfxd_input_fn_t *fn)` +##### `void gfxd_output_callback(gfxd_output_fn_t *fn)` +Use the provided callback function, `fn`. `fn` should copy at most `count` +bytes to/from `buf`, and return the number of bytes actually copied. The input +callback should return 0 to signal end of input. + +## Handlers +The macro handler function is responsible for writing the output of each +decompiled macro. The default macro handler is `gfxd_macro_dflt`, but this can +be changed with `gfxd_macro_fn`. The new handler can extend the default +function by calling `gfxd_macro_dflt` within it, or it can override it +completely. + +--- + +##### `int gfxd_macro_dflt()` +The default macro handler. Outputs the macro name, dynamic display list pointer +if one has been specified, and then each argument in order using the function +registered using `gfxd_arg_fn` (`gfxd_arg_dflt` by default), and returns zero. +Because it is designed to be extended, it only outputs the macro text, without +any whitespace or punctuation before or after. When this function is used as +the sole macro handler, it will output the entire display list on one line +without any separation between macros, which is probably not what you want. + +--- + +##### `void gfxd_macro_fn(gfxd_macro_fn_t *fn)` +Set `fn` to be the macro handler function. `fn` can be null, in which case the +handler is reset to the default. + +--- + +##### `void gfxd_arg_dflt(int arg_num)` +The default argument handler for `gfxd_macro_dflt`. For the argument with index +`arg_num`, calls `gfxd_arg_callbacks`, and prints the argument value if the +callback returns zero, or if there is no callback for the given argument. + +--- + +##### `void gfxd_arg_fn(gfxd_arg_fn_t *fn)` +Set `fn` to be the argument handler function, called by `gfxd_macro_dflt`, +for each argument in the current macro, not counting the dynamic display list +pointer if one has been specified. `fn` can be null, in which case the handler +is reset to the default. This only affects the output of `gfxd_macro_dflt`, and +has no observable effect if `gfxd_macro_dflt` is overridden (not extended). + +## Argument callbacks +Callbacks can be registered that will be executed when an argument of a certain +type is encountered. The default argument handler `gfxd_arg_dflt` will execute +callbacks as needed using `gfxd_arg_callbacks`. If a callback returns non-zero, +`gfxd_arg_dflt` will not output anything. This is to allow callbacks to +override the default argument output. Otherwise, `gfxd_arg_dflt` will output +the argument value after the callback function's output. + +--- + +##### `int gfxd_arg_callbacks(int arg_num)` +Examines the argument with index `arg_num` and executes the callback function +for that argument type, if such a callback is supported and has been +registered. This function returns the value that was returned by the callback +function. If no callback function has been registered for the argument type, +zero is returned. + +Most argument callbacks have some extra parameters containing information that +might be relevant to the argument that triggered the callback. The extra +information is extracted only from the current macro, as gfxd does not retain +any context information from previous or subsequent macros. If any of the extra +parameter values is not available in the current macro, the value for that +parameter is substituted with `-1` for signed parameters, and zero for unsigned +parameters. + +--- + +##### `typedef int gfxd_tlut_fn_t(uint32_t tlut, int32_t idx, int32_t count)` +##### `void gfxd_tlut_callback(gfxd_tlut_fn_t *fn)` +Set the callback function for palette arguments. The argument type is +`gfxd_Tlut`. The palette index is in `idx` and the number of colors in `count`. + +--- + +##### `typedef int gfxd_timg_fn_t(uint32_t timg, int32_t fmt, int32_t siz, int32_t width, int32_t height, int32_t pal)` +##### `void gfxd_timg_callback(gfxd_timg_fn_t *fn)` +Set the callback function for texture arguments. The argument type is +`gfxd_Timg`. The image format is in `fmt` and `siz`, the dimensions in `width` +and `height`, and the palette index in `pal`. + +--- + +##### `typedef int gfxd_cimg_fn_t(uint32_t cimg, int32_t fmt, int32_t siz, int32_t width)` +##### `void gfxd_cimg_callback(gfxd_cimg_fn_t *fn)` +Set the callback function for frame buffer arguments. The argument type is +`gfxd_Cimg`. The image format is in `fmt` and `siz`, and the horizontal +resolution in `width`. + +--- + +##### `typedef int gfxd_zimg_fn_t(uint32_t zimg)` +##### `void gfxd_zimg_callback(gfxd_zimg_fn_t *fn)` +Set the callback function for depth buffer arguments. The argument type is +`gfxd_Zimg`. + +--- + +##### `typedef int gfxd_dl_fn_t(uint32_t dl)` +##### `void gfxd_dl_callback(gfxd_dl_fn_t *fn)` +Set the callback function for display list arguments. The argument type is +`gfxd_Dl`. + +--- + +##### `typedef int gfxd_mtx_fn_t(uint32_t mtx)` +##### `void gfxd_mtx_callback(gfxd_mtx_fn_t *fn)` +Set the callback function for matrix arguments. The argument type is +`gfxd_Mtxptr`. + +--- + +##### `typedef int gfxd_lookat_fn_t(uint32_t lookat, int32_t count)` +##### `void gfxd_lookat_callback(gfxd_lookat_fn_t *fn)` +Set the callback function for lookat array arguments. The argument type is +`gfxd_Lookatptr`. The number of lookat structures (1 or 2) is in `count`. + +--- + +##### `typedef int gfxd_light_fn_t(uint32_t light, int32_t count)` +##### `void gfxd_light_callback(gfxd_light_fn_t *fn)` +Set the callback function for light array arguments. The argument type is +`gfxd_Lightptr`. The number of light structures is in `count`. + +--- + +##### `typedef int gfxd_seg_fn_t(uint32_t seg, int32_t num)` +##### `void gfxd_seg_callback(gfxd_seg_fn_t *fn)` +Set the callback function for segment base arguments. The argument type is +`gfxd_Segptr`. The segment number is in `num`. + +--- + +##### `typedef int gfxd_vtx_fn_t(uint32_t vtx, int32_t num)` +##### `void gfxd_vtx_callback(gfxd_vtx_fn_t *fn)` +Set the callback function for vertex array arguments. The argument type is +`gfxd_Vtxptr`. The number of vertex structures is in `num`. + +--- + +##### `typedef int gfxd_vp_fn_t(uint32_t vp)` +##### `void gfxd_vp_callback(gfxd_vp_fn_t *fn)` +Set the callback function for viewport arguments. The argument type is +`gfxd_Vp`. + +--- + +##### `typedef int gfxd_uctext_fn_t(uint32_t text, uint32_t size)` +##### `void gfxd_uctext_callback(gfxd_uctext_fn_t *fn)` +Set the callback function for microcode text arguments. The argument type is +`gfxd_Uctext`. The size of the text segment is in `size`. + +--- + +##### `typedef int gfxd_ucdata_fn_t(uint32_t data, uint32_t size)` +##### `void gfxd_ucdata_callback(gfxd_ucdata_fn_t *fn)` +Set the callback function for microcode data arguments. The argument type is +`gfxd_Ucdata`. The size of the data segment is in `size`. + +--- + +##### `typedef int gfxd_dram_fn_t(uint32_t dram, uint32_t size)` +##### `void gfxd_dram_callback(gfxd_dram_fn_t *fn)` +Set the callback function for generic pointer arguments. The argument type is +`gfxd_Dram`. The size of the data is in `size`. + +## General settings +These functions control general input and output settings. + +--- + +##### `void gfxd_target(gfxd_ucode_t ucode)` +Select `ucode` as the target microcode. `ucode` can be `gfxd_f3d`, `gfxd_f3db`, +`gfxd_f3dex`, `gfxd_f3dexb`, or `gfxd_f3dex2`. The microcode must be selected +before `gfxd_execute`, as no microcode is selected by default. + +--- + +##### `void gfxd_endian(int endian, int wordsize)` +Select `endian` as the endianness of the input, and `wordsize` as the size of +each word in number of bytes. `endian` can be `gfxd_endian_big`, +`gfxd_endian_little`, or `gfxd_endian_host` (the endianness of the host +machine). `wordsize` can be 1, 2, 4, or 8. Big endian is selected by default, +with a word size of 4. + +--- + +##### `void gfxd_dynamic(const char *arg)` +Enable or disable the use of dynamic `g` macros instead of static `gs` macros, +and select the dynamic display list pointer argument to be used. `arg` will be +used by `gfxd_macro_dflt` as the first argument to dynamic macros. If `arg` is +null, dynamic macros are disabled, and `gs` macros are used. Also affects the +result of `gfxd_macro_name`, as it will return either the dynamic or static +version of the macro name as selected by this setting. + +--- + +##### `void gfxd_enable(int cap)` +##### `void gfxd_disable(int cap)` +Enable or disable the feature specified by `cap`. Can be one of the following; +- `gfxd_stop_on_invalid`: Stop execution when encountering an invalid macro. +Enabled by default. +- `gfxd_stop_on_end`: Stop execution when encountering a `SPBranchList` or +`SPEndDisplayList`. Enabled by default. +- `gfxd_emit_dec_color`: Print color components as decimal instead of +hexadecimal. Disabled by default. +- `gfxd_emit_q_macro`: Print fixed-point conversion `q` macros for fixed-point +values. Disabled by default. +- `gfxd_emit_ext_macro`: Emit non-standard macros. Some commands are valid +(though possibly meaningless), but have no macros associated with them, such as +a standalone `G_RDPHALF_1`. When this feature is enabled, such a command will +produce a non-standard `gsDPHalf1` macro instead of a raw hexadecimal command. +Also enables some non-standard multi-packet texture loading macros. Disabled by +default. + +--- + +##### `void gfxd_udata_set(void *ptr)` +##### `void *gfxd_udata_get(void)` +Set or get a generic pointer that can be used to pass user-defined data in and +out of callback functions. + +## Execution +Decompilation is started using the `gfxd_execute` function. When gfxd is +executing (i.e. after `gfxd_execute` has been entered, and before it returns), +the general settings and the I/O settings should not be changed. + +--- + +##### `int gfxd_execute()` +Start executing gfxd with the current settings. For each macro, the macro +handler registered with `gfxd_macro_fn` is called. Execution ends when the +input ends, the macro handler returns non-zero, when an invalid macro is +encountered and `gfxd_stop_on_invalid` is enabled, or when `SPBranchList` or +`SPEndDisplayList` is encountered and `gfxd_stop_on_end` is enabled. If +execution ends due to an invalid macro, `-1` is returned. If execution ends +because the macro handler returns non-zero, the return value from the macro +handler is returned. Otherwise zero is returned. + +## Macro information +The following functions can be used to obtain information about the current +macro and its arguments. They should only be used in custom handlers and +callbacks from within `gfxd_execute`. If used elsewhere, their behavior is +undefined. + +--- + +##### `int gfxd_macro_offset()` +Returns the offset in the input data of the current macro. The offset starts +at zero when `gfxd_execute` is called. + +--- + +##### `int gfxd_macro_packets()` +Returns the number of `Gfx` packets within the current macro. + +--- + +##### `const void *gfxd_macro_data()` +Returns a pointer to the input data for the current macro. The data is not +byte-swapped. The data has a length of `sizeof(Gfx) * gfxd_macro_packets()`. + +--- + +##### `int gfxd_macro_id()` +Returns a number that uniquely identifies the current macro. The number will +be one of the constants in `gfxd.h`. + +--- + +##### `const char *gfxd_macro_name()` +Returns the name of the current macro. If the macro does not have a name (i.e. +it's invalid), null is returned. If a dynamic display list pointer has been +specified, the dynamic `g` version is returned. Otherwise the static `gs` +version is returned. The returned pointer is invalidated by a subsequent call +to `gfxd_macro_name`. + +--- + +##### `int gfxd_arg_count()` +Returns the number of arguments to the current macro, not including a dynamic +display list pointer if one has been specified. + +--- + +##### `int gfxd_arg_type(int arg_num)` +Returns a number that identifies the type of the argument with index `arg_num`. +The number will be one of the constants in `gfxd.h`. + +--- + +##### `const char *gfxd_arg_name(int arg_num)` +Returns the name of the argument with index `arg_num`. Argument names are not +canonical, nor are they needed for macro disassembly, but they can be useful +for informational and diagnostic purposes. + +--- + +##### `int gfxd_arg_fmt(int arg_num)` +Returns the data format of the argument with index `arg_num`. The return value +will be `gfxd_argfmt_i` for `int32_t`, `gfxd_argfmt_u` for `uint32_t`, or +`gfxd_argfmt_f` for `float`. When accessing the value of the argument with +`gfxd_arg_value`, the member with the corresponding type should be used. + +--- + +##### `const gfxd_value_t *gfxd_arg_value(int arg_num)` +Returns a pointer to the value of the argument with index `arg_num`. The value +is a union of type `gfxd_value_t` with the following layout; +``` +typedef union +{ + int32_t i; + uint32_t u; + float f; +} gfxd_value_t +``` + +--- + +##### `const gfxd_value_t *gfxd_value_by_type(int type, int idx)` +Returns a pointer to the value of the argument that is of `type`, and has order +`idx` in all arguments of that type. An `idx` of zero returns the first +argument that has the specified type. If there is no argument with the given +type and order, null is returned. + +--- + +##### `int gfxd_arg_valid(int arg_num)` +Returns non-zero if the argument with index `arg_num` is "valid", for some +definition of valid. An invalid argument generally means that the disassembler +found inconsistencies in the input data, or that the data can not be reproduced +by the current macro type. The argument still has a value that can be printed, +though the value is not guaranteed to make any sense. + +## Custom output +When the default handlers are overridden or extended, the custom handler +functions will want to do some output of their own. The following methods are +available for inserting custom text into the gfxd output. + +--- + +##### `int gfxd_write(const void *buf, int count)` +Insert `count` bytes from the buffer at `buf` into the output. The number of +characters written is returned. + +--- + +##### `int gfxd_puts(const char *str)` +Insert the null-terminated string at `str` into the output. The number of +characters written is returned. + +--- + +##### `int gfxd_printf(const char *fmt, ...)` +Insert the printf-formatted string described by `fmt` and additional arguments +into the output. Limited to 255 characters. The number of characters written is +returned. + +--- + +##### `int gfxd_print_value(int type, const gfxd_value_t *value)` +Insert the type-formatted value into the output. The type should be one of the +constants in `gfxd.h`. The number of characters written is returned. The +macro argument with index `n` can be printed with +`gfxd_print_value(gfxd_arg_type(n), gfxd_arg_value(n))`. diff --git a/extern/libgfxd/gbi.h b/extern/libgfxd/gbi.h new file mode 100644 index 000000000..69fa7f12e --- /dev/null +++ b/extern/libgfxd/gbi.h @@ -0,0 +1,3838 @@ +/** + * gbi.h version 0.3.6 + * n64 graphics microcode interface library + * compatible with fast3d, f3dex, f3dex2, s2dex, and s2dex2 + * + * select a microcode with one of these preprocessor definitions; + * #define F3D_GBI + * for fast3d (selected automatically by default), or + * #define F3DEX_GBI + * for f3dex/s2dex, or + * #define F3DEX_GBI_2 + * for f3dex2/s2dex2 + * + * for early versions of fast3d and f3dex, also define the following; + * #define F3D_BETA + * + * ido incompatibilities; + * - use of c99 variadic macros + * - use of c99 fixed-width integer types + * - use of c99 designated initializers + * - use of c99 compound literals + * - use of c11 _Alignas + * - use of gnu c compound expressions + * - use of gnu c __typeof__ + * + * libultra incompatibilities; + * - many private, undocumented, or obsolete macros not commonly used by + * programmers are missing + * - many different implementation details that will produce matching gbi, + * but not matching code +**/ + +#ifndef N64_GBI_H +#define N64_GBI_H + +#include + +/* use fast3d by default */ +#if !defined(F3D_GBI) && !defined(F3DEX_GBI) && !defined(F3DEX_GBI_2) +# define F3D_GBI +#endif + +/* commands for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_SPNOOP 0x00 +# define G_MTX 0x01 +# define G_MOVEMEM 0x03 +# define G_VTX 0x04 +# define G_DL 0x06 +# if defined(F3D_BETA) +# define G_RDPHALF_2 0xB2 +# define G_RDPHALF_1 0xB3 +# define G_PERSPNORM 0xB4 +# else +# define G_RDPHALF_2 0xB3 +# define G_RDPHALF_1 0xB4 +# endif +# define G_LINE3D 0xB5 +# define G_CLEARGEOMETRYMODE 0xB6 +# define G_SETGEOMETRYMODE 0xB7 +# define G_ENDDL 0xB8 +# define G_SETOTHERMODE_L 0xB9 +# define G_SETOTHERMODE_H 0xBA +# define G_TEXTURE 0xBB +# define G_MOVEWORD 0xBC +# define G_POPMTX 0xBD +# define G_CULLDL 0xBE +# define G_TRI1 0xBF +# define G_NOOP 0xC0 +#endif + +/* commands for f3dex */ +#if defined(F3DEX_GBI) +# define G_LOAD_UCODE 0xAF +# define G_BRANCH_Z 0xB0 +# define G_TRI2 0xB1 +# if !defined(F3D_BETA) +# define G_MODIFYVTX 0xB2 +# endif +#endif + +/* commands for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_NOOP 0x00 +# define G_VTX 0x01 +# define G_MODIFYVTX 0x02 +# define G_CULLDL 0x03 +# define G_BRANCH_Z 0x04 +# define G_TRI1 0x05 +# define G_TRI2 0x06 +# define G_QUAD 0x07 +# define G_LINE3D 0x08 +# define G_SPECIAL_3 0xD3 +# define G_SPECIAL_2 0xD4 +# define G_SPECIAL_1 0xD5 +# define G_DMA_IO 0xD6 +# define G_TEXTURE 0xD7 +# define G_POPMTX 0xD8 +# define G_GEOMETRYMODE 0xD9 +# define G_MTX 0xDA +# define G_MOVEWORD 0xDB +# define G_MOVEMEM 0xDC +# define G_LOAD_UCODE 0xDD +# define G_DL 0xDE +# define G_ENDDL 0xDF +# define G_SPNOOP 0xE0 +# define G_RDPHALF_1 0xE1 +# define G_SETOTHERMODE_L 0xE2 +# define G_SETOTHERMODE_H 0xE3 +# define G_RDPHALF_2 0xF1 +#endif + +/* rdp commands */ +#define G_TEXRECT 0xE4 +#define G_TEXRECTFLIP 0xE5 +#define G_RDPLOADSYNC 0xE6 +#define G_RDPPIPESYNC 0xE7 +#define G_RDPTILESYNC 0xE8 +#define G_RDPFULLSYNC 0xE9 +#define G_SETKEYGB 0xEA +#define G_SETKEYR 0xEB +#define G_SETCONVERT 0xEC +#define G_SETSCISSOR 0xED +#define G_SETPRIMDEPTH 0xEE +#define G_RDPSETOTHERMODE 0xEF +#define G_LOADTLUT 0xF0 +#define G_SETTILESIZE 0xF2 +#define G_LOADBLOCK 0xF3 +#define G_LOADTILE 0xF4 +#define G_SETTILE 0xF5 +#define G_FILLRECT 0xF6 +#define G_SETFILLCOLOR 0xF7 +#define G_SETFOGCOLOR 0xF8 +#define G_SETBLENDCOLOR 0xF9 +#define G_SETPRIMCOLOR 0xFA +#define G_SETENVCOLOR 0xFB +#define G_SETCOMBINE 0xFC +#define G_SETTIMG 0xFD +#define G_SETZIMG 0xFE +#define G_SETCIMG 0xFF + +/* commands for s2dex */ +#if defined(F3DEX_GBI) +# define G_BG_1CYC 0x01 +# define G_BG_COPY 0x02 +# define G_OBJ_RECTANGLE 0x03 +# define G_OBJ_SPRITE 0x04 +# define G_OBJ_MOVEMEM 0x05 +# define G_SELECT_DL 0xB0 +# define G_OBJ_RENDERMODE 0xB1 +# define G_OBJ_RECTANGLE_R 0xB2 +# define G_OBJ_LOADTXTR 0xC1 +# define G_OBJ_LDTX_SPRITE 0xC2 +# define G_OBJ_LDTX_RECT 0xC3 +# define G_OBJ_LDTX_RECT_R 0xC4 +#endif + +/* commands for s2dex2 */ +#if defined(F3DEX_GBI_2) +# define G_OBJ_RECTANGLE 0x01 +# define G_OBJ_SPRITE 0x02 +# define G_SELECT_DL 0x04 +# define G_OBJ_LOADTXTR 0x05 +# define G_OBJ_LDTX_SPRITE 0x06 +# define G_OBJ_LDTX_RECT 0x07 +# define G_OBJ_LDTX_RECT_R 0x08 +# define G_BG_1CYC 0x09 +# define G_BG_COPY 0x0A +# define G_OBJ_RENDERMODE 0x0B +# define G_OBJ_RECTANGLE_R 0xDA +# define G_OBJ_MOVEMEM 0xDC +#endif + +/* commands for s2dex and s2dex2 */ +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define G_RDPHALF_0 0xE4 +#endif + +/* image formats */ +#define G_IM_FMT_RGBA 0 +#define G_IM_FMT_YUV 1 +#define G_IM_FMT_CI 2 +#define G_IM_FMT_IA 3 +#define G_IM_FMT_I 4 +#define G_IM_SIZ_4b 0 +#define G_IM_SIZ_8b 1 +#define G_IM_SIZ_16b 2 +#define G_IM_SIZ_32b 3 + +/* texture settings */ +#define G_TX_NOMIRROR (gI_(0b0) << 0) +#define G_TX_MIRROR (gI_(0b1) << 0) +#define G_TX_WRAP (gI_(0b0) << 1) +#define G_TX_CLAMP (gI_(0b1) << 1) +#define G_TX_NOMASK gI_(0) +#define G_TX_NOLOD gI_(0) +#define G_OFF gI_(0) +#define G_ON gI_(1) + +/* tile indices */ +#define G_TX_LOADTILE 7 +#define G_TX_RENDERTILE 0 + +/* loadblock constants */ +#define G_TX_DXT_FRAC 11 +#define G_TX_LDBLK_MAX_TXL 2047 + +/* geometry mode */ +#define G_ZBUFFER (gI_(0b1) << 0) +#define G_SHADE (gI_(0b1) << 2) +#define G_CULL_BOTH (G_CULL_FRONT | G_CULL_BACK) +#define G_FOG (gI_(0b1) << 16) +#define G_LIGHTING (gI_(0b1) << 17) +#define G_TEXTURE_GEN (gI_(0b1) << 18) +#define G_TEXTURE_GEN_LINEAR (gI_(0b1) << 19) +#define G_LOD (gI_(0b1) << 20) + +/* geometry mode for fast3d */ +#if defined(F3D_GBI) +# define G_CLIPPING (gI_(0b0) << 0) +#endif + +/* geometry mode for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_TEXTURE_ENABLE (gI_(0b1) << 1) +# define G_SHADING_SMOOTH (gI_(0b1) << 9) +# define G_CULL_FRONT (gI_(0b1) << 12) +# define G_CULL_BACK (gI_(0b1) << 13) +#endif + +/* geometry mode for f3dex and f3dex2 */ +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define G_CLIPPING (gI_(0b1) << 23) +#endif + +/* geometry mode for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_TEXTURE_ENABLE (gI_(0b0) << 0) +# define G_CULL_FRONT (gI_(0b1) << 9) +# define G_CULL_BACK (gI_(0b1) << 10) +# define G_SHADING_SMOOTH (gI_(0b1) << 21) +#endif + +/* othermode lo */ +#define G_MDSFT_ALPHACOMPARE 0 +#define G_MDSFT_ZSRCSEL 2 +#define G_MDSFT_RENDERMODE 3 +#define G_MDSFT_BLENDER 16 +#define G_MDSIZ_ALPHACOMPARE 2 +#define G_MDSIZ_ZSRCSEL 1 +#define G_MDSIZ_RENDERMODE 29 +#define G_MDSIZ_BLENDER 13 + +#define G_AC_NONE (gI_(0b00) << G_MDSFT_ALPHACOMPARE) +#define G_AC_THRESHOLD (gI_(0b01) << G_MDSFT_ALPHACOMPARE) +#define G_AC_DITHER (gI_(0b11) << G_MDSFT_ALPHACOMPARE) +#define G_ZS_PIXEL (gI_(0b0) << G_MDSFT_ZSRCSEL) +#define G_ZS_PRIM (gI_(0b1) << G_MDSFT_ZSRCSEL) +#define AA_EN (gI_(0b1) << (G_MDSFT_RENDERMODE + 0)) +#define Z_CMP (gI_(0b1) << (G_MDSFT_RENDERMODE + 1)) +#define Z_UPD (gI_(0b1) << (G_MDSFT_RENDERMODE + 2)) +#define IM_RD (gI_(0b1) << (G_MDSFT_RENDERMODE + 3)) +#define CLR_ON_CVG (gI_(0b1) << (G_MDSFT_RENDERMODE + 4)) +#define CVG_DST_CLAMP (gI_(0b00) << (G_MDSFT_RENDERMODE + 5)) +#define CVG_DST_WRAP (gI_(0b01) << (G_MDSFT_RENDERMODE + 5)) +#define CVG_DST_FULL (gI_(0b10) << (G_MDSFT_RENDERMODE + 5)) +#define CVG_DST_SAVE (gI_(0b11) << (G_MDSFT_RENDERMODE + 5)) +#define ZMODE_OPA (gI_(0b00) << (G_MDSFT_RENDERMODE + 7)) +#define ZMODE_INTER (gI_(0b01) << (G_MDSFT_RENDERMODE + 7)) +#define ZMODE_XLU (gI_(0b10) << (G_MDSFT_RENDERMODE + 7)) +#define ZMODE_DEC (gI_(0b11) << (G_MDSFT_RENDERMODE + 7)) +#define CVG_X_ALPHA (gI_(0b1) << (G_MDSFT_RENDERMODE + 9)) +#define ALPHA_CVG_SEL (gI_(0b1) << (G_MDSFT_RENDERMODE + 10)) +#define FORCE_BL (gI_(0b1) << (G_MDSFT_RENDERMODE + 11)) + +#define G_BL_1MA gI_(0b00) +#define G_BL_1 gI_(0b10) +#define G_BL_0 gI_(0b11) +#define G_BL_CLR_IN gI_(0b00) +#define G_BL_CLR_MEM gI_(0b01) +#define G_BL_CLR_BL gI_(0b10) +#define G_BL_CLR_FOG gI_(0b11) +#define G_BL_A_IN gI_(0b00) +#define G_BL_A_FOG gI_(0b01) +#define G_BL_A_MEM gI_(0b01) +#define G_BL_A_SHADE gI_(0b10) + +#define GBL_c1(p, a, m, b) \ + ( \ + gF_(p, 2, 30) | \ + gF_(a, 2, 26) | \ + gF_(m, 2, 22) | \ + gF_(b, 2, 18) \ + ) +#define GBL_c2(p, a, m, b) \ + ( \ + gF_(p, 2, 28) | \ + gF_(a, 2, 24) | \ + gF_(m, 2, 20) | \ + gF_(b, 2, 16) \ + ) + +/* render modes */ +#define G_RM_OPA_SURF \ + ( \ + CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_OPA_SURF2 \ + ( \ + CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_AA_OPA_SURF \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_OPA_SURF2 \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_OPA_SURF \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_OPA_SURF2 \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_ZB_OPA_SURF \ + ( \ + Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_ZB_OPA_SURF2 \ + ( \ + Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_OPA_SURF \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_OPA_SURF2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_SURF \ + ( \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_SURF2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_XLU_SURF \ + ( \ + IM_RD | CVG_DST_FULL | ZMODE_OPA | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_XLU_SURF2 \ + ( \ + IM_RD | CVG_DST_FULL | ZMODE_OPA | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_XLU_SURF \ + ( \ + AA_EN | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_OPA | \ + FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_XLU_SURF2 \ + ( \ + AA_EN | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_OPA | \ + FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_XLU_SURF \ + ( \ + Z_CMP | IM_RD | CVG_DST_FULL | ZMODE_XLU | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_XLU_SURF2 \ + ( \ + Z_CMP | IM_RD | CVG_DST_FULL | ZMODE_XLU | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_SURF \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_XLU | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_SURF2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_XLU | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_ZB_OPA_DECAL \ + ( \ + Z_CMP | CVG_DST_FULL | ZMODE_DEC | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_ZB_OPA_DECAL2 \ + ( \ + Z_CMP | CVG_DST_FULL | ZMODE_DEC | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_OPA_DECAL \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ZMODE_DEC | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_OPA_DECAL2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ZMODE_DEC | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_DECAL \ + ( \ + AA_EN | Z_CMP | CVG_DST_WRAP | ZMODE_DEC | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_DECAL2 \ + ( \ + AA_EN | Z_CMP | CVG_DST_WRAP | ZMODE_DEC | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_ZB_XLU_DECAL \ + ( \ + Z_CMP | IM_RD | CVG_DST_FULL | ZMODE_DEC | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_XLU_DECAL2 \ + ( \ + Z_CMP | IM_RD | CVG_DST_FULL | ZMODE_DEC | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_DECAL \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_DEC | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_DECAL2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_DEC | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_ZB_OPA_INTER \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_INTER | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_OPA_INTER2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_INTER | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_INTER \ + ( \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_INTER | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_RA_ZB_OPA_INTER2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP | ZMODE_INTER | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_AA_ZB_XLU_INTER \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_INTER | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_INTER2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | \ + ZMODE_INTER | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_XLU_LINE \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_XLU_LINE2 \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_LINE \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | ZMODE_XLU | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_XLU_LINE2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | ZMODE_XLU | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_DEC_LINE \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_DEC_LINE2 \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_DEC_LINE \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_DEC | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_DEC_LINE2 \ + ( \ + AA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_DEC | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + + +#define G_RM_TEX_EDGE \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_TEX_EDGE2 \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_AA_TEX_EDGE \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_TEX_EDGE2 \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_TEX_EDGE \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_TEX_EDGE2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_AA_ZB_TEX_INTER \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_INTER | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_TEX_INTER2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_INTER | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_AA_SUB_SURF \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_SUB_SURF2 \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_SUB_SURF \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) +#define G_RM_AA_ZB_SUB_SURF2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM) \ + ) + +#define G_RM_PCL_SURF \ + ( \ + G_AC_DITHER | CVG_DST_FULL | ZMODE_OPA | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_PCL_SURF2 \ + ( \ + G_AC_DITHER | CVG_DST_FULL | ZMODE_OPA | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_AA_PCL_SURF \ + ( \ + G_AC_DITHER | AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_PCL_SURF2 \ + ( \ + G_AC_DITHER | AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_PCL_SURF \ + ( \ + G_AC_DITHER | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_ZB_PCL_SURF2 \ + ( \ + G_AC_DITHER | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_AA_ZB_PCL_SURF \ + ( \ + G_AC_DITHER | AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ + ZMODE_OPA | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_PCL_SURF2 \ + ( \ + G_AC_DITHER | AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | \ + ZMODE_OPA | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_OPA_TERR \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_OPA_TERR2 \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_OPA_TERR \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_OPA_TERR2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_TEX_TERR \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_TEX_TERR2 \ + ( \ + AA_EN | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_TEX_TERR \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_TEX_TERR2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | \ + CVG_X_ALPHA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_AA_SUB_TERR \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_SUB_TERR2 \ + ( \ + AA_EN | IM_RD | CVG_DST_FULL | ZMODE_OPA | ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_SUB_TERR \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_ZB_SUB_TERR2 \ + ( \ + AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL | ZMODE_OPA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_CLD_SURF \ + ( \ + IM_RD | CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_CLD_SURF2 \ + ( \ + IM_RD | CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_CLD_SURF \ + ( \ + Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_CLD_SURF2 \ + ( \ + Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_ZB_OVL_SURF \ + ( \ + Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_DEC | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_ZB_OVL_SURF2 \ + ( \ + Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_DEC | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) + +#define G_RM_ADD \ + ( \ + IM_RD | CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1) \ + ) +#define G_RM_ADD2 \ + ( \ + IM_RD | CVG_DST_SAVE | ZMODE_OPA | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1) \ + ) + +#define G_RM_FOG_SHADE_A \ + GBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA) + +#define G_RM_FOG_PRIM_A \ + GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA) + +#define G_RM_PASS \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) + +#define G_RM_VISCVG \ + ( \ + IM_RD | FORCE_BL | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) \ + ) +#define G_RM_VISCVG2 \ + ( \ + IM_RD | FORCE_BL | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM) \ + ) + +#define G_RM_OPA_CI \ + ( \ + CVG_DST_CLAMP | ZMODE_OPA | \ + GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) +#define G_RM_OPA_CI2 \ + ( \ + CVG_DST_CLAMP | ZMODE_OPA | \ + GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1) \ + ) + +#define G_RM_NOOP GBL_c1(0, 0, 0, 0) +#define G_RM_NOOP2 GBL_c2(0, 0, 0, 0) + +#define G_RM_SPRITE G_RM_OPA_SURF +#define G_RM_SPRITE2 G_RM_OPA_SURF2 +#define G_RM_RA_SPRITE \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_RA_SPRITE2 \ + ( \ + AA_EN | CVG_DST_CLAMP | ZMODE_OPA | CVG_X_ALPHA | \ + ALPHA_CVG_SEL | \ + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA) \ + ) +#define G_RM_AA_SPRITE G_RM_AA_TEX_TERR +#define G_RM_AA_SPRITE2 G_RM_AA_TEX_TERR2 +#define G_RM_XLU_SPRITE G_RM_XLU_SURF +#define G_RM_XLU_SPRITE2 G_RM_XLU_SURF2 +#define G_RM_AA_XLU_SPRITE G_RM_AA_XLU_SURF +#define G_RM_AA_XLU_SPRITE2 G_RM_AA_XLU_SURF2 + +#define G_OBJRM_NOTXCLAMP (gI_(0b1) << 0) +#define G_OBJRM_XLU (gI_(0b1) << 1) +#define G_OBJRM_ANTIALIAS (gI_(0b1) << 2) +#define G_OBJRM_BILERP (gI_(0b1) << 3) +#define G_OBJRM_SHRINKSIZE_1 (gI_(0b1) << 4) +#define G_OBJRM_SHRINKSIZE_2 (gI_(0b1) << 5) +#define G_OBJRM_WIDEN (gI_(0b1) << 6) + +/* othermode hi */ +#define G_MDSFT_ALPHADITHER 4 +#define G_MDSFT_RGBDITHER 6 +#define G_MDSFT_COMBKEY 8 +#define G_MDSFT_TEXTCONV 9 +#define G_MDSFT_TEXTFILT 12 +#define G_MDSFT_TEXTLUT 14 +#define G_MDSFT_TEXTLOD 16 +#define G_MDSFT_TEXTDETAIL 17 +#define G_MDSFT_TEXTPERSP 19 +#define G_MDSFT_CYCLETYPE 20 +#define G_MDSFT_PIPELINE 23 +#define G_MDSIZ_ALPHADITHER 2 +#define G_MDSIZ_RGBDITHER 2 +#define G_MDSIZ_COMBKEY 1 +#define G_MDSIZ_TEXTCONV 3 +#define G_MDSIZ_TEXTFILT 2 +#define G_MDSIZ_TEXTLUT 2 +#define G_MDSIZ_TEXTLOD 1 +#define G_MDSIZ_TEXTDETAIL 2 +#define G_MDSIZ_TEXTPERSP 1 +#define G_MDSIZ_CYCLETYPE 2 +#define G_MDSIZ_PIPELINE 1 + +#define G_AD_PATTERN (gI_(0b00) << G_MDSFT_ALPHADITHER) +#define G_AD_NOTPATTERN (gI_(0b01) << G_MDSFT_ALPHADITHER) +#define G_AD_NOISE (gI_(0b10) << G_MDSFT_ALPHADITHER) +#define G_AD_DISABLE (gI_(0b11) << G_MDSFT_ALPHADITHER) +#define G_CD_MAGICSQ (gI_(0b00) << G_MDSFT_RGBDITHER) +#define G_CD_BAYER (gI_(0b01) << G_MDSFT_RGBDITHER) +#define G_CD_NOISE (gI_(0b10) << G_MDSFT_RGBDITHER) +#define G_CD_DISABLE (gI_(0b11) << G_MDSFT_RGBDITHER) +#define G_CD_ENABLE (gI_(0b10) << G_MDSFT_RGBDITHER) +#define G_CK_NONE (gI_(0b0) << G_MDSFT_COMBKEY) +#define G_CK_KEY (gI_(0b1) << G_MDSFT_COMBKEY) +#define G_TC_CONV (gI_(0b000) << G_MDSFT_TEXTCONV) +#define G_TC_FILTCONV (gI_(0b101) << G_MDSFT_TEXTCONV) +#define G_TC_FILT (gI_(0b110) << G_MDSFT_TEXTCONV) +#define G_TF_POINT (gI_(0b00) << G_MDSFT_TEXTFILT) +#define G_TF_BILERP (gI_(0b10) << G_MDSFT_TEXTFILT) +#define G_TF_AVERAGE (gI_(0b11) << G_MDSFT_TEXTFILT) +#define G_TT_NONE (gI_(0b00) << G_MDSFT_TEXTLUT) +#define G_TT_RGBA16 (gI_(0b10) << G_MDSFT_TEXTLUT) +#define G_TT_IA16 (gI_(0b11) << G_MDSFT_TEXTLUT) +#define G_TL_TILE (gI_(0b0) << G_MDSFT_TEXTLOD) +#define G_TL_LOD (gI_(0b1) << G_MDSFT_TEXTLOD) +#define G_TD_CLAMP (gI_(0b00) << G_MDSFT_TEXTDETAIL) +#define G_TD_SHARPEN (gI_(0b01) << G_MDSFT_TEXTDETAIL) +#define G_TD_DETAIL (gI_(0b10) << G_MDSFT_TEXTDETAIL) +#define G_TP_NONE (gI_(0b0) << G_MDSFT_TEXTPERSP) +#define G_TP_PERSP (gI_(0b1) << G_MDSFT_TEXTPERSP) +#define G_CYC_1CYCLE (gI_(0b00) << G_MDSFT_CYCLETYPE) +#define G_CYC_2CYCLE (gI_(0b01) << G_MDSFT_CYCLETYPE) +#define G_CYC_COPY (gI_(0b10) << G_MDSFT_CYCLETYPE) +#define G_CYC_FILL (gI_(0b11) << G_MDSFT_CYCLETYPE) +#define G_PM_NPRIMITIVE (gI_(0b0) << G_MDSFT_PIPELINE) +#define G_PM_1PRIMITIVE (gI_(0b1) << G_MDSFT_PIPELINE) + +/* color conversion constants */ +#define G_CV_K0 (175) +#define G_CV_K1 (-43) +#define G_CV_K2 (-89) +#define G_CV_K3 (222) +#define G_CV_K4 (114) +#define G_CV_K5 (42) + +/* color combiner */ +#define G_CCMUX_COMBINED 0 +#define G_CCMUX_TEXEL0 1 +#define G_CCMUX_TEXEL1 2 +#define G_CCMUX_PRIMITIVE 3 +#define G_CCMUX_SHADE 4 +#define G_CCMUX_ENVIRONMENT 5 +#define G_CCMUX_1 6 +#define G_CCMUX_NOISE 7 +#define G_CCMUX_0 31 +#define G_CCMUX_CENTER 6 +#define G_CCMUX_K4 7 +#define G_CCMUX_SCALE 6 +#define G_CCMUX_COMBINED_ALPHA 7 +#define G_CCMUX_TEXEL0_ALPHA 8 +#define G_CCMUX_TEXEL1_ALPHA 9 +#define G_CCMUX_PRIMITIVE_ALPHA 10 +#define G_CCMUX_SHADE_ALPHA 11 +#define G_CCMUX_ENV_ALPHA 12 +#define G_CCMUX_LOD_FRACTION 13 +#define G_CCMUX_PRIM_LOD_FRAC 14 +#define G_CCMUX_K5 15 +#define G_ACMUX_COMBINED 0 +#define G_ACMUX_TEXEL0 1 +#define G_ACMUX_TEXEL1 2 +#define G_ACMUX_PRIMITIVE 3 +#define G_ACMUX_SHADE 4 +#define G_ACMUX_ENVIRONMENT 5 +#define G_ACMUX_1 6 +#define G_ACMUX_0 7 +#define G_ACMUX_LOD_FRACTION 0 +#define G_ACMUX_PRIM_LOD_FRAC 6 + +/* + * combine modes + * ( A - B ) * C + D +*/ +#define G_CC_MODULATEI \ + TEXEL0, 0, SHADE, 0, \ + 0, 0, 0, SHADE +#define G_CC_MODULATEIA \ + TEXEL0, 0, SHADE, 0, \ + TEXEL0, 0, SHADE, 0 +#define G_CC_MODULATEIDECALA \ + TEXEL0, 0, SHADE, 0, \ + 0, 0, 0, TEXEL0 +#define G_CC_MODULATERGB \ + G_CC_MODULATEI +#define G_CC_MODULATERGBA \ + G_CC_MODULATEIA +#define G_CC_MODULATERGBDECALA \ + G_CC_MODULATEIDECALA +#define G_CC_MODULATEI_PRIM \ + TEXEL0, 0, PRIMITIVE, 0, \ + 0, 0, 0, PRIMITIVE +#define G_CC_MODULATEIA_PRIM \ + TEXEL0, 0, PRIMITIVE, 0, \ + TEXEL0, 0, PRIMITIVE, 0 +#define G_CC_MODULATEIDECALA_PRIM \ + TEXEL0, 0, PRIMITIVE, 0, \ + 0, 0, 0, TEXEL0 +#define G_CC_MODULATERGB_PRIM \ + G_CC_MODULATEI_PRIM +#define G_CC_MODULATERGBA_PRIM \ + G_CC_MODULATEIA_PRIM +#define G_CC_MODULATERGBDECALA_PRIM \ + G_CC_MODULATEIDECALA_PRIM +#define G_CC_DECALRGB \ + 0, 0, 0, TEXEL0, \ + 0, 0, 0, SHADE +#define G_CC_DECALRGBA \ + 0, 0, 0, TEXEL0, \ + 0, 0, 0, TEXEL0 +#define G_CC_BLENDI \ + ENVIRONMENT, SHADE, TEXEL0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_BLENDIA \ + ENVIRONMENT, SHADE, TEXEL0, SHADE, \ + TEXEL0, 0, SHADE, 0 +#define G_CC_BLENDIDECALA \ + ENVIRONMENT, SHADE, TEXEL0, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_BLENDRGBA \ + TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_BLENDRGBDECALA \ + TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_REFLECTRGB \ + ENVIRONMENT, 0, TEXEL0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_REFLECTRGBDECALA \ + ENVIRONMENT, 0, TEXEL0, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_HILITERGB \ + PRIMITIVE, SHADE, TEXEL0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_HILITERGBA \ + PRIMITIVE, SHADE, TEXEL0, SHADE, \ + PRIMITIVE, SHADE, TEXEL0, SHADE +#define G_CC_HILITERGBDECALA \ + PRIMITIVE, SHADE, TEXEL0, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_1CYUV2RGB \ + TEXEL0, K4, K5, TEXEL0, \ + 0, 0, 0, SHADE +#define G_CC_PRIMITIVE \ + 0, 0, 0, PRIMITIVE, \ + 0, 0, 0, PRIMITIVE +#define G_CC_SHADE \ + 0, 0, 0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_ADDRGB \ + 1, 0, TEXEL0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_ADDRGBDECALA \ + 1, 0, TEXEL0, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_SHADEDECALA \ + 0, 0, 0, SHADE, \ + 0, 0, 0, TEXEL0 +#define G_CC_BLENDPE \ + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, \ + TEXEL0, 0, SHADE, 0 +#define G_CC_BLENDPEDECALA \ + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, \ + 0, 0, 0, TEXEL0 +#define G_CC_TRILERP \ + TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, \ + TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0 +#define G_CC_TEMPLERP \ + TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, \ + TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0 +#define G_CC_INTERFERENCE \ + TEXEL0, 0, TEXEL1, 0, \ + TEXEL0, 0, TEXEL1, 0 +#define _G_CC_BLENDPE \ + ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, \ + TEXEL0, 0, SHADE, 0 +#define _G_CC_BLENDPEDECALA \ + ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, \ + 0, 0, 0, TEXEL0 +#define _G_CC_SPARSEST \ + PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, \ + PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0 +#define _G_CC_TWOCOLORTEX \ + PRIMITIVE, SHADE, TEXEL0, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_MODULATEI2 \ + COMBINED, 0, SHADE, 0, \ + 0, 0, 0, SHADE +#define G_CC_MODULATEIA2 \ + COMBINED, 0, SHADE, 0, \ + COMBINED, 0, SHADE, 0 +#define G_CC_MODULATERGB2 \ + G_CC_MODULATEI2 +#define G_CC_MODULATERGBA2 \ + G_CC_MODULATEIA2 +#define G_CC_MODULATEI_PRIM2 \ + COMBINED, 0, PRIMITIVE, 0, \ + 0, 0, 0, PRIMITIVE +#define G_CC_MODULATEIA_PRIM2 \ + COMBINED, 0, PRIMITIVE, 0, \ + COMBINED, 0, PRIMITIVE, 0 +#define G_CC_MODULATERGB_PRIM2 \ + G_CC_MODULATEI_PRIM2 +#define G_CC_MODULATERGBA_PRIM2 \ + G_CC_MODULATEIA_PRIM2 +#define G_CC_DECALRGB2 \ + 0, 0, 0, COMBINED, \ + 0, 0, 0, SHADE +#define G_CC_BLENDI2 \ + ENVIRONMENT, SHADE, COMBINED, SHADE, \ + 0, 0, 0, SHADE +#define G_CC_BLENDIA2 \ + ENVIRONMENT, SHADE, COMBINED, SHADE, \ + COMBINED, 0, SHADE, 0 +#define G_CC_HILITERGB2 \ + ENVIRONMENT, COMBINED, TEXEL0, COMBINED, \ + 0, 0, 0, SHADE +#define G_CC_HILITERGBA2 \ + ENVIRONMENT, COMBINED, TEXEL0, COMBINED, \ + ENVIRONMENT, COMBINED, TEXEL0, COMBINED +#define G_CC_HILITERGBDECALA2 \ + ENVIRONMENT, COMBINED, TEXEL0, COMBINED, \ + 0, 0, 0, TEXEL0 +#define G_CC_HILITERGBPASSA2 \ + ENVIRONMENT, COMBINED, TEXEL0, COMBINED, \ + 0, 0, 0, COMBINED +#define G_CC_CHROMA_KEY2 \ + TEXEL0, CENTER, SCALE, 0, \ + 0, 0, 0, 0 +#define G_CC_YUV2RGB \ + TEXEL1, K4, K5, TEXEL1, \ + 0, 0, 0, 0 +#define G_CC_PASS2 \ + 0, 0, 0, COMBINED, \ + 0, 0, 0, COMBINED +#define G_CC_LERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ + a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ + ( \ + gFL_(G_CCMUX_##a0, 4, 52) | \ + gFL_(G_CCMUX_##c0, 5, 47) | \ + gFL_(G_ACMUX_##Aa0, 3, 44) | \ + gFL_(G_ACMUX_##Ac0, 3, 41) | \ + gFL_(G_CCMUX_##a1, 4, 37) | \ + gFL_(G_CCMUX_##c1, 5, 32) | \ + gFL_(G_CCMUX_##b0, 4, 28) | \ + gFL_(G_CCMUX_##b1, 4, 24) | \ + gFL_(G_ACMUX_##Aa1, 3, 21) | \ + gFL_(G_ACMUX_##Ac1, 3, 18) | \ + gFL_(G_CCMUX_##d0, 3, 15) | \ + gFL_(G_ACMUX_##Ab0, 3, 12) | \ + gFL_(G_ACMUX_##Ad0, 3, 9) | \ + gFL_(G_CCMUX_##d1, 3, 6) | \ + gFL_(G_ACMUX_##Ab1, 3, 3) | \ + gFL_(G_ACMUX_##Ad1, 3, 0) \ + ) +#define G_CC_MODE(mode1, mode2) G_CC_LERP(mode1, mode2) + +/* scissor modes */ +#define G_SC_NON_INTERLACE gI_(0b00) +#define G_SC_EVEN_INTERLACE gI_(0b10) +#define G_SC_ODD_INTERLACE gI_(0b11) + +/* display list branch flags */ +#define G_DL_PUSH gI_(0b0) +#define G_DL_NOPUSH gI_(0b1) + +/* conditional branching flags (f3dex and f3dex2) */ +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define G_BZ_PERSP 0 +# define G_BZ_ORTHO 1 +#endif + +/* matrix params */ +#define G_MTX_MUL (gI_(0b0) << 1) +#define G_MTX_LOAD (gI_(0b1) << 1) + +/* matrix params for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_MTX_MODELVIEW (gI_(0b0) << 0) +# define G_MTX_PROJECTION (gI_(0b1) << 0) +# define G_MTX_NOPUSH (gI_(0b0) << 2) +# define G_MTX_PUSH (gI_(0b1) << 2) +#endif + +/* matrix params for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_MTX_NOPUSH (gI_(0b0) << 0) +# define G_MTX_PUSH (gI_(0b1) << 0) +# define G_MTX_MODELVIEW (gI_(0b0) << 2) +# define G_MTX_PROJECTION (gI_(0b1) << 2) +#endif + +/* moveword indices */ +#define G_MW_MATRIX 0 +#define G_MW_NUMLIGHT 2 +#define G_MW_CLIP 4 +#define G_MW_SEGMENT 6 +#define G_MW_FOG 8 +#define G_MW_GENSTAT 8 +#define G_MW_LIGHTCOL 10 +#define G_MW_PERSPNORM 14 + +/* moveword indices for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_MW_POINTS 12 +#endif + +/* moveword indices for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_MW_FORCEMTX 12 +#endif + +/* moveword offsets */ +#define G_MWO_NUMLIGHT gI_(0x00) +#define G_MWO_CLIP_RNX gI_(0x04) +#define G_MWO_CLIP_RNY gI_(0x0C) +#define G_MWO_CLIP_RPX gI_(0x14) +#define G_MWO_CLIP_RPY gI_(0x1C) +#define G_MWO_SEGMENT_0 gI_(0x00) +#define G_MWO_SEGMENT_1 gI_(0x04) +#define G_MWO_SEGMENT_2 gI_(0x08) +#define G_MWO_SEGMENT_3 gI_(0x0C) +#define G_MWO_SEGMENT_4 gI_(0x10) +#define G_MWO_SEGMENT_5 gI_(0x14) +#define G_MWO_SEGMENT_6 gI_(0x18) +#define G_MWO_SEGMENT_7 gI_(0x1C) +#define G_MWO_SEGMENT_8 gI_(0x20) +#define G_MWO_SEGMENT_9 gI_(0x24) +#define G_MWO_SEGMENT_A gI_(0x28) +#define G_MWO_SEGMENT_B gI_(0x2C) +#define G_MWO_SEGMENT_C gI_(0x30) +#define G_MWO_SEGMENT_D gI_(0x34) +#define G_MWO_SEGMENT_E gI_(0x38) +#define G_MWO_SEGMENT_F gI_(0x3C) +#define G_MWO_FOG gI_(0x00) +#define G_MWO_aLIGHT_1 gI_(0x00) +#define G_MWO_bLIGHT_1 gI_(0x04) +#define G_MWO_MATRIX_XX_XY_I gI_(0x00) +#define G_MWO_MATRIX_XZ_XW_I gI_(0x04) +#define G_MWO_MATRIX_YX_YY_I gI_(0x08) +#define G_MWO_MATRIX_YZ_YW_I gI_(0x0C) +#define G_MWO_MATRIX_ZX_ZY_I gI_(0x10) +#define G_MWO_MATRIX_ZZ_ZW_I gI_(0x14) +#define G_MWO_MATRIX_WX_WY_I gI_(0x18) +#define G_MWO_MATRIX_WZ_WW_I gI_(0x1C) +#define G_MWO_MATRIX_XX_XY_F gI_(0x20) +#define G_MWO_MATRIX_XZ_XW_F gI_(0x24) +#define G_MWO_MATRIX_YX_YY_F gI_(0x28) +#define G_MWO_MATRIX_YZ_YW_F gI_(0x2C) +#define G_MWO_MATRIX_ZX_ZY_F gI_(0x30) +#define G_MWO_MATRIX_ZZ_ZW_F gI_(0x34) +#define G_MWO_MATRIX_WX_WY_F gI_(0x38) +#define G_MWO_MATRIX_WZ_WW_F gI_(0x3C) +#define G_MWO_POINT_RGBA gI_(0x10) +#define G_MWO_POINT_ST gI_(0x14) +#define G_MWO_POINT_XYSCREEN gI_(0x18) +#define G_MWO_POINT_ZSCREEN gI_(0x1C) + +/* moveword offsets for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_MWO_aLIGHT_2 gI_(0x20) +# define G_MWO_bLIGHT_2 gI_(0x24) +# define G_MWO_aLIGHT_3 gI_(0x40) +# define G_MWO_bLIGHT_3 gI_(0x44) +# define G_MWO_aLIGHT_4 gI_(0x60) +# define G_MWO_bLIGHT_4 gI_(0x64) +# define G_MWO_aLIGHT_5 gI_(0x80) +# define G_MWO_bLIGHT_5 gI_(0x84) +# define G_MWO_aLIGHT_6 gI_(0xA0) +# define G_MWO_bLIGHT_6 gI_(0xA4) +# define G_MWO_aLIGHT_7 gI_(0xC0) +# define G_MWO_bLIGHT_7 gI_(0xC4) +# define G_MWO_aLIGHT_8 gI_(0xE0) +# define G_MWO_bLIGHT_8 gI_(0xE4) +#endif + +/* moveword offsets for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_MWO_aLIGHT_2 gI_(0x18) +# define G_MWO_bLIGHT_2 gI_(0x1C) +# define G_MWO_aLIGHT_3 gI_(0x30) +# define G_MWO_bLIGHT_3 gI_(0x34) +# define G_MWO_aLIGHT_4 gI_(0x48) +# define G_MWO_bLIGHT_4 gI_(0x4C) +# define G_MWO_aLIGHT_5 gI_(0x60) +# define G_MWO_bLIGHT_5 gI_(0x64) +# define G_MWO_aLIGHT_6 gI_(0x78) +# define G_MWO_bLIGHT_6 gI_(0x7C) +# define G_MWO_aLIGHT_7 gI_(0x90) +# define G_MWO_bLIGHT_7 gI_(0x94) +# define G_MWO_aLIGHT_8 gI_(0xA8) +# define G_MWO_bLIGHT_8 gI_(0xAC) +#endif + +/* movemem params for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define G_MV_VIEWPORT 128 +# define G_MV_LOOKATY 130 +# define G_MV_LOOKATX 132 +# define G_MV_L0 134 +# define G_MV_L1 136 +# define G_MV_L2 138 +# define G_MV_L3 140 +# define G_MV_L4 142 +# define G_MV_L5 144 +# define G_MV_L6 146 +# define G_MV_L7 148 +# define G_MV_TXTATT 150 +# define G_MV_MATRIX_2 152 +# define G_MV_MATRIX_3 154 +# define G_MV_MATRIX_4 156 +# define G_MV_MATRIX_1 158 +#endif + +/* movemem params for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define G_MV_MMTX 2 +# define G_MV_PMTX 6 +# define G_MV_VIEWPORT 8 +# define G_MV_LIGHT 10 +# define G_MV_POINT 12 +# define G_MV_MATRIX 14 +# define G_MVO_LOOKATX gI_(0 * 0x18) +# define G_MVO_LOOKATY gI_(1 * 0x18) +# define G_MVO_L0 gI_(2 * 0x18) +# define G_MVO_L1 gI_(3 * 0x18) +# define G_MVO_L2 gI_(4 * 0x18) +# define G_MVO_L3 gI_(5 * 0x18) +# define G_MVO_L4 gI_(6 * 0x18) +# define G_MVO_L5 gI_(7 * 0x18) +# define G_MVO_L6 gI_(8 * 0x18) +# define G_MVO_L7 gI_(9 * 0x18) +#endif + +/* frustum ratios */ +#define FRUSTRATIO_1 gI_(1) +#define FRUSTRATIO_2 gI_(2) +#define FRUSTRATIO_3 gI_(3) +#define FRUSTRATIO_4 gI_(4) +#define FRUSTRATIO_5 gI_(5) +#define FRUSTRATIO_6 gI_(6) + +/* light params */ +#define NUMLIGHTS_0 1 +#define NUMLIGHTS_1 1 +#define NUMLIGHTS_2 2 +#define NUMLIGHTS_3 3 +#define NUMLIGHTS_4 4 +#define NUMLIGHTS_5 5 +#define NUMLIGHTS_6 6 +#define NUMLIGHTS_7 7 +#define LIGHT_1 1 +#define LIGHT_2 2 +#define LIGHT_3 3 +#define LIGHT_4 4 +#define LIGHT_5 5 +#define LIGHT_6 6 +#define LIGHT_7 7 +#define LIGHT_8 8 + +/* light params for fast3d and f3dex */ +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define NUML(n) (((n) + 1) * 32 + 0x80000000) +#endif + +/* light params for f3dex2 */ +#if defined(F3DEX_GBI_2) +# define NUML(n) ((n) * 0x18) +#endif + +/* background load types */ +#define G_BGLT_LOADBLOCK gI_(0x0033) +#define G_BGLT_LOADTILE gI_(0xFFF4) + +/* background flags */ +#define G_BG_FLAG_FLIPS (gI_(0b1) << 0) +#define G_BG_FLAG_FLIPT (gI_(0b1) << 1) + +/* object load types */ +#define G_OBJLT_TXTRBLOCK gI_(0x00001033) +#define G_OBJLT_TXTRTILE gI_(0x00FC1034) +#define G_OBJLT_TLUT gI_(0x00000030) + +/* object flags */ +#define G_OBJ_FLAG_FLIPS (gI_(0b1) << 0) +#define G_OBJ_FLAG_FLIPT (gI_(0b1) << 4) + +/* color macros */ +#define G_MAXZ 0x03FF +#define G_MAXFBZ 0x3FFF +#define GPACK_RGBA5551(r, g, b, a) \ + ( \ + gF_(r, 5, 11) | \ + gF_(g, 5, 6) | \ + gF_(b, 5, 1) | \ + gF_(a, 1, 0) \ + ) +#define GPACK_RGBA8888(r, g, b, a) \ + ( \ + gF_(r, 8, 24) | \ + gF_(g, 8, 16) | \ + gF_(b, 8, 8) | \ + gF_(a, 8, 0) \ + ) +#define GPACK_RGB24A8(rgb, a) (gF_(rgb, 24, 8) | gF_(a, 8, 0)) +#define GPACK_ZDZ(z, dz) (gF_(z, 14, 2) | gF_(dz, 2, 0)) + +/* structure definition macros */ +#define gdSPDefMtx(xx, xy, xz, xw, \ + yx, yy, yz, yw, \ + zx, zy, zz, zw, \ + wx, wy, wz, ww) \ + ( \ + (Mtx) \ + { \ + .i = \ + { \ + (qs1616(xx) >> 16) & 0xFFFF, \ + (qs1616(xy) >> 16) & 0xFFFF, \ + (qs1616(xz) >> 16) & 0xFFFF, \ + (qs1616(xw) >> 16) & 0xFFFF, \ + (qs1616(yx) >> 16) & 0xFFFF, \ + (qs1616(yy) >> 16) & 0xFFFF, \ + (qs1616(yz) >> 16) & 0xFFFF, \ + (qs1616(yw) >> 16) & 0xFFFF, \ + (qs1616(zx) >> 16) & 0xFFFF, \ + (qs1616(zy) >> 16) & 0xFFFF, \ + (qs1616(zz) >> 16) & 0xFFFF, \ + (qs1616(zw) >> 16) & 0xFFFF, \ + (qs1616(wx) >> 16) & 0xFFFF, \ + (qs1616(wy) >> 16) & 0xFFFF, \ + (qs1616(wz) >> 16) & 0xFFFF, \ + (qs1616(ww) >> 16) & 0xFFFF, \ + }, \ + .f = \ + { \ + qs1616(xx) & 0xFFFF, \ + qs1616(xy) & 0xFFFF, \ + qs1616(xz) & 0xFFFF, \ + qs1616(xw) & 0xFFFF, \ + qs1616(yx) & 0xFFFF, \ + qs1616(yy) & 0xFFFF, \ + qs1616(yz) & 0xFFFF, \ + qs1616(yw) & 0xFFFF, \ + qs1616(zx) & 0xFFFF, \ + qs1616(zy) & 0xFFFF, \ + qs1616(zz) & 0xFFFF, \ + qs1616(zw) & 0xFFFF, \ + qs1616(wx) & 0xFFFF, \ + qs1616(wy) & 0xFFFF, \ + qs1616(wz) & 0xFFFF, \ + qs1616(ww) & 0xFFFF, \ + } \ + } \ + ) +#define gdSPDefLookAt(rx, ry, rz, ux, uy, uz) \ + ( \ + (LookAt) \ + { \ + .l[0].l = \ + { \ + .col = {0, 0, 0}, \ + .colc = {0, 0, 0}, \ + .dir = {rx, ry, rz}, \ + }, \ + .l[1].l = \ + { \ + .col = {0, 0x80, 0}, \ + .colc = {0, 0x80, 0}, \ + .dir = {ux, uy, uz}, \ + }, \ + } \ + ) +#define gdSPDefLights0(ar, ag, ab) \ + ( \ + (Lights0) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + } \ + } \ + ) +#define gdSPDefLights1(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1) \ + ( \ + (Lights1) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + } \ + ) +#define gdSPDefLights2(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2) \ + ( \ + (Lights2) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + } \ + ) +#define gdSPDefLights3(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2, \ + r3, g3, b3, x3, y3, z3) \ + ( \ + (Lights3) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + .l[2].l = \ + { \ + .col = {r3, g3, b3}, \ + .colc = {r3, g3, b3}, \ + .dir = {x3, y3, z3}, \ + } \ + } \ + ) +#define gdSPDefLights4(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2, \ + r3, g3, b3, x3, y3, z3, \ + r4, g4, b4, x4, y4, z4) \ + ( \ + (Lights4) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + .l[2].l = \ + { \ + .col = {r3, g3, b3}, \ + .colc = {r3, g3, b3}, \ + .dir = {x3, y3, z3}, \ + } \ + .l[3].l = \ + { \ + .col = {r4, g4, b4}, \ + .colc = {r4, g4, b4}, \ + .dir = {x4, y4, z4}, \ + } \ + } \ + ) +#define gdSPDefLights5(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2, \ + r3, g3, b3, x3, y3, z3, \ + r4, g4, b4, x4, y4, z4, \ + r5, g5, b5, x5, y5, z5) \ + ( \ + (Lights5) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + .l[2].l = \ + { \ + .col = {r3, g3, b3}, \ + .colc = {r3, g3, b3}, \ + .dir = {x3, y3, z3}, \ + } \ + .l[3].l = \ + { \ + .col = {r4, g4, b4}, \ + .colc = {r4, g4, b4}, \ + .dir = {x4, y4, z4}, \ + } \ + .l[4].l = \ + { \ + .col = {r5, g5, b5}, \ + .colc = {r5, g5, b5}, \ + .dir = {x5, y5, z5}, \ + } \ + } \ + ) +#define gdSPDefLights6(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2, \ + r3, g3, b3, x3, y3, z3, \ + r4, g4, b4, x4, y4, z4, \ + r5, g5, b5, x5, y5, z5, \ + r6, g6, b6, x6, y6, z6)\ + ( \ + (Lights6) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + .l[2].l = \ + { \ + .col = {r3, g3, b3}, \ + .colc = {r3, g3, b3}, \ + .dir = {x3, y3, z3}, \ + } \ + .l[3].l = \ + { \ + .col = {r4, g4, b4}, \ + .colc = {r4, g4, b4}, \ + .dir = {x4, y4, z4}, \ + } \ + .l[4].l = \ + { \ + .col = {r5, g5, b5}, \ + .colc = {r5, g5, b5}, \ + .dir = {x5, y5, z5}, \ + } \ + .l[5].l = \ + { \ + .col = {r6, g6, b6}, \ + .colc = {r6, g6, b6}, \ + .dir = {x6, y6, z6}, \ + } \ + } \ + ) +#define gdSPDefLights7(ar, ag, ab, \ + r1, g1, b1, x1, y1, z1, \ + r2, g2, b2, x2, y2, z2, \ + r3, g3, b3, x3, y3, z3, \ + r4, g4, b4, x4, y4, z4, \ + r5, g5, b5, x5, y5, z5, \ + r6, g6, b6, x6, y6, z6, \ + r7, g7, b7, x7, y7, z7) \ + ( \ + (Lights7) \ + { \ + .a.l = \ + { \ + .col = {ar, ag, ab}, \ + .colc = {ar, ag, ab}, \ + }, \ + .l[0].l = \ + { \ + .col = {r1, g1, b1}, \ + .colc = {r1, g1, b1}, \ + .dir = {x1, y1, z1}, \ + } \ + .l[1].l = \ + { \ + .col = {r2, g2, b2}, \ + .colc = {r2, g2, b2}, \ + .dir = {x2, y2, z2}, \ + } \ + .l[2].l = \ + { \ + .col = {r3, g3, b3}, \ + .colc = {r3, g3, b3}, \ + .dir = {x3, y3, z3}, \ + } \ + .l[3].l = \ + { \ + .col = {r4, g4, b4}, \ + .colc = {r4, g4, b4}, \ + .dir = {x4, y4, z4}, \ + } \ + .l[4].l = \ + { \ + .col = {r5, g5, b5}, \ + .colc = {r5, g5, b5}, \ + .dir = {x5, y5, z5}, \ + } \ + .l[5].l = \ + { \ + .col = {r6, g6, b6}, \ + .colc = {r6, g6, b6}, \ + .dir = {x6, y6, z6}, \ + } \ + .l[6].l = \ + { \ + .col = {r7, g7, b7}, \ + .colc = {r7, g7, b7}, \ + .dir = {x7, y7, z7}, \ + } \ + } \ + ) +#define gdSPDefVtx(x, y, z, s, t) \ + ( \ + (Vtx) \ + { \ + .v = \ + { \ + .ob = {x, y, z}, \ + .tc = {qs105(s), qs105(t)}, \ + } \ + } \ + ) +#define gdSPDefVtxC(x, y, z, s, t, cr, cg, cb, ca) \ + ( \ + (Vtx) \ + { \ + .v = \ + { \ + .ob = {x, y, z}, \ + .tc = {qs105(s), qs105(t)}, \ + .cn = {cr, cg, cb, ca}, \ + } \ + } \ + ) +#define gdSPDefVtxN(x, y, z, s, t, nx, ny, nz, ca) \ + ( \ + (Vtx) \ + { \ + .n = \ + { \ + .ob = {x, y, z}, \ + .tc = {qs105(s), qs105(t)}, \ + .n = {nx, ny, nz}, \ + .a = ca \ + } \ + } \ + ) + +/* instruction macros */ + +#define gsDPFillRectangle(ulx, uly, lrx, lry) \ + gO_( \ + G_FILLRECT, \ + gF_(lrx, 10, 14) | \ + gF_(lry, 10, 2), \ + gF_(ulx, 10, 14) | \ + gF_(uly, 10, 2)) + +#define gsDPScisFillRectangle(ulx, uly, lrx, lry) \ + gsDPFillRectangle(gScC_(ulx), gScC_(uly), gScC_(lrx), gScC_(lry)) + +#define gsDPFullSync() \ + gO_(G_RDPFULLSYNC, 0, 0) + +#define gsDPLoadSync() \ + gO_(G_RDPLOADSYNC, 0, 0) + +#define gsDPTileSync() \ + gO_(G_RDPTILESYNC, 0, 0) + +#define gsDPPipeSync() \ + gO_(G_RDPPIPESYNC, 0, 0) + +#define gsDPLoadTLUT_pal16(pal, dram) \ + gsDPLoadTLUT(16, 256 + (gI_(pal) & 0xF) * 16, dram) + +#define gsDPLoadTLUT_pal256(dram) \ + gsDPLoadTLUT(256, 256, dram) + +#define gLTB_(timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + dxt, tmem, rt, line) \ + gsDPSetTextureImage(fmt, G_SIZ_LDSIZ(siz), 1, timg), \ + gsDPSetTile( \ + fmt, G_SIZ_LDSIZ(siz), 0, tmem, G_TX_LOADTILE, 0, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadBlock( \ + G_TX_LOADTILE, 0, 0, \ + G_LTB_LRS(width, height, siz), \ + dxt), \ + gsDPPipeSync(), \ + gsDPSetTile( \ + fmt, siz, line, tmem, rt, pal, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize(rt, 0, 0, qu102((width) - 1), qu102((height) - 1)) + +#define gsDPLoadTextureBlock(timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), 0x0, G_TX_RENDERTILE, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadTextureBlockS(timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, 0x0, G_TX_RENDERTILE, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadTextureBlock_4b(timg, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(G_IM_SIZ_4b, width), 0x0, G_TX_RENDERTILE, \ + ((width) * 4 + 63) / 64) + +#define gsDPLoadTextureBlock_4bS(timg, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, 0x0, G_TX_RENDERTILE, \ + ((width) * 4 + 63) / 64) + +#define gsDPLoadTextureBlockYuv(timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), 0x0, G_TX_RENDERTILE, \ + ((width) + 7) / 8) + +#define gsDPLoadTextureBlockYuvS(timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, 0x0, G_TX_RENDERTILE, \ + ((width) + 7) / 8) + +#define _gsDPLoadTextureBlock(timg, tmem, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), tmem, G_TX_RENDERTILE, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define _gsDPLoadTextureBlockS(timg, tmem, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, G_TX_RENDERTILE, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define _gsDPLoadTextureBlock_4b(timg, tmem, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(G_IM_SIZ_4b, width), tmem, G_TX_RENDERTILE, \ + ((width) * 4 + 63) / 64) + +#define _gsDPLoadTextureBlock_4bS(timg, tmem, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, G_TX_RENDERTILE, \ + ((width) * 4 + 63) / 64) + +#define _gsDPLoadTextureBlockYuv(timg, tmem, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), tmem, G_TX_RENDERTILE, \ + ((width) + 7) / 8) + +#define _gsDPLoadTextureBlockYuvS(timg, tmem, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, G_TX_RENDERTILE, \ + ((width) + 7) / 8) + +#define gsDPLoadMultiBlock(timg, tmem, rt, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), tmem, rt, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadMultiBlockS(timg, tmem, rt, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, rt, \ + ((width) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadMultiBlock_4b(timg, tmem, rt, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(G_IM_SIZ_4b, width), tmem, rt, \ + ((width) * 4 + 63) / 64) + +#define gsDPLoadMultiBlock_4bS(timg, tmem, rt, fmt, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, G_IM_SIZ_4b, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, rt, \ + ((width) * 4 + 63) / 64) + +#define gsDPLoadMultiBlockYuv(timg, tmem, rt, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + G_DXT(siz, width), tmem, rt, \ + ((width) + 7) / 8) + +#define gsDPLoadMultiBlockYuvS(timg, tmem, rt, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTB_( \ + timg, fmt, siz, width, height, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0, tmem, rt, \ + ((width) + 7) / 8) + +#define gLTT_(timg, fmt, siz, width, height, uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, rt, line) \ + gsDPSetTextureImage(fmt, siz, width, timg), \ + gsDPSetTile( \ + fmt, siz, line, tmem, \ + G_TX_LOADTILE, 0, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile( \ + G_TX_LOADTILE, \ + qu102(uls), qu102(ult), \ + qu102(lrs), qu102(lrt)), \ + gsDPPipeSync(), \ + gsDPSetTile( \ + fmt, siz, line, \ + tmem, rt, pal, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize( \ + rt, \ + qu102(uls), qu102(ult), \ + qu102(lrs), qu102(lrt)) + +#define gLTT4_(timg, fmt, width, height, uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, rt) \ + gsDPSetTextureImage(fmt, G_IM_SIZ_8b, (width) / 2, timg), \ + gsDPSetTile( \ + fmt, G_IM_SIZ_8b, \ + (((lrs) - (uls) + 1) / 2 + 7) / 8, \ + tmem, G_TX_LOADTILE, 0, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPLoadSync(), \ + gsDPLoadTile( \ + G_TX_LOADTILE, \ + qu102(uls) / 2, qu102(ult), \ + qu102(lrs) / 2, qu102(lrt)), \ + gsDPPipeSync(), \ + gsDPSetTile( \ + fmt, G_IM_SIZ_4b, \ + (((lrs) - (uls) + 1) / 2 + 7) / 8, \ + tmem, rt, pal, \ + cmt, maskt, shiftt, \ + cms, masks, shifts), \ + gsDPSetTileSize( \ + rt, \ + qu102(uls), qu102(ult), \ + qu102(lrs), qu102(lrt)) + +#define gsDPLoadTextureTile(timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0x0, G_TX_RENDERTILE, \ + (((lrs) - (uls) + 1) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadTextureTile_4b(timg, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT4_( \ + timg, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0x0, G_TX_RENDERTILE) + +#define gsDPLoadTextureTileYuv(timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + 0x0, G_TX_RENDERTILE, \ + (((lrs) - (uls) + 1) + 7) / 8) + +#define _gsDPLoadTextureTile(timg, tmem, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, G_TX_RENDERTILE, \ + (((lrs) - (uls) + 1) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define _gsDPLoadTextureTile_4b(timg, tmem, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT4_( \ + timg, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, G_TX_RENDERTILE) + +#define _gsDPLoadTextureTileYuv(timg, tmem, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, cms, cmt, \ + masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, G_TX_RENDERTILE, \ + (((lrs) - (uls) + 1) + 7) / 8) + +#define gsDPLoadMultiTile(timg, tmem, rt, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, rt, \ + (((lrs) - (uls) + 1) * G_SIZ_LDBITS(siz) + 63) / 64) + +#define gsDPLoadMultiTile_4b(timg, tmem, rt, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT4_( \ + timg, fmt, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, rt) + +#define gsDPLoadMultiTileYuv(timg, tmem, rt, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt) \ + gLTT_( \ + timg, fmt, siz, width, height, \ + uls, ult, lrs, lrt, pal, \ + cms, cmt, masks, maskt, shifts, shiftt, \ + tmem, rt, \ + (((lrs) - (uls) + 1) + 7) / 8) + +#define gsDPLoadBlock(tile, uls, ult, lrs, dxt) \ + gO_( \ + G_LOADBLOCK, \ + gF_(uls, 12, 12) | \ + gF_(ult, 12, 0), \ + gF_(tile, 3, 24) | \ + gF_(G_LDBLK_TXL(lrs), 12, 12) | \ + gF_(dxt, 12, 0)) + +#define gsDPNoOp() \ + gsDPNoOpTag(0) + +#define gsDPNoOpTag(tag) \ + gO_(G_NOOP, 0, tag) + +#define gsDPPipelineMode(mode) \ + gsSPSetOtherModeHi(G_MDSFT_PIPELINE, G_MDSIZ_PIPELINE, mode) + +#define gsDPSetBlendColor(r, g, b, a) \ + gO_( \ + G_SETBLENDCOLOR, \ + 0, \ + gF_(r, 8, 24) | \ + gF_(g, 8, 16) | \ + gF_(b, 8, 8) | \ + gF_(a, 8, 0)) + +#define gsDPSetEnvColor(r, g, b, a) \ + gO_( \ + G_SETENVCOLOR, \ + 0, \ + gF_(r, 8, 24) | \ + gF_(g, 8, 16) | \ + gF_(b, 8, 8) | \ + gF_(a, 8, 0)) + +#define gsDPSetFillColor(c) \ + gO_(G_SETFILLCOLOR, 0, c) + +#define gsDPSetFogColor(r, g, b, a) \ + gO_( \ + G_SETFOGCOLOR, 0, \ + gF_(r, 8, 24) | \ + gF_(g, 8, 16) | \ + gF_(b, 8, 8) | \ + gF_(a, 8, 0)) + +#define gsDPSetPrimColor(m, l, r, g, b, a) \ + gO_( \ + G_SETPRIMCOLOR, \ + gF_(m, 8, 8) | \ + gF_(l, 8, 0), \ + gF_(r, 8, 24) | \ + gF_(g, 8, 16) | \ + gF_(b, 8, 8) | \ + gF_(a, 8, 0)) + +#define gsDPSetColorImage(fmt, siz, width, img) \ + gO_( \ + G_SETCIMG, \ + gF_(fmt, 3, 21) | \ + gF_(siz, 2, 19) | \ + gF_((width) - 1, 12, 0), \ + img) + +#define gsDPSetDepthImage(img) \ + gO_(G_SETZIMG, 0, img) + +#define gsDPSetTextureImage(fmt, siz, width, img) \ + gO_( \ + G_SETTIMG, \ + gF_(fmt, 3, 21) | \ + gF_(siz, 2, 19) | \ + gF_((width) - 1, 12, 0), \ + img) + +#define gsDPSetHilite1Tile(tile, hilite, width, height) \ + gsDPSetTileSize( \ + tile, \ + ((Hilite *)(hilite))->h.x1 & 0xFFF, \ + ((Hilite *)(hilite))->h.y1 & 0xFFF, \ + (((width) - 1) * 4 + ((Hilite *)(hilite))->h.x1) & 0xFFF, \ + (((height) - 1) * 4 + ((Hilite *)(hilite))->h.y1) & 0xFFF) + +#define gsDPSetHilite2Tile(tile, hilite, width, height) \ + gsDPSetTileSize( \ + tile, \ + ((Hilite *)(hilite))->h.x2 & 0xFFF, \ + ((Hilite *)(hilite))->h.y2 & 0xFFF, \ + (((width) - 1) * 4 + ((Hilite *)(hilite))->h.x2) & 0xFFF, \ + (((height) - 1) * 4 + ((Hilite *)(hilite))->h.y2) & 0xFFF) + +#define gsDPSetAlphaCompare(mode) \ + gsSPSetOtherModeLo(G_MDSFT_ALPHACOMPARE, G_MDSIZ_ALPHACOMPARE, mode) + +#define gsDPSetAlphaDither(type) \ + gsSPSetOtherModeHi(G_MDSFT_ALPHADITHER, G_MDSIZ_ALPHADITHER, type) + +#define gsDPSetColorDither(type) \ + gsSPSetOtherModeHi(G_MDSFT_RGBDITHER, G_MDSIZ_RGBDITHER, type) + +#define gsDPSetCombineMode(mode1, mode2) \ + gsDPSetCombineLERP(mode1, mode2) + +#define gsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0, \ + a1, b1, c1, d1, Aa1, Ab1, Ac1, Ad1) \ + gO_( \ + G_SETCOMBINE, \ + gF_(G_CCMUX_##a0, 4, 20) | \ + gF_(G_CCMUX_##c0, 5, 15) | \ + gF_(G_ACMUX_##Aa0, 3, 12) | \ + gF_(G_ACMUX_##Ac0, 3, 9) | \ + gF_(G_CCMUX_##a1, 4, 5) | \ + gF_(G_CCMUX_##c1, 5, 0), \ + gF_(G_CCMUX_##b0, 4, 28) | \ + gF_(G_CCMUX_##b1, 4, 24) | \ + gF_(G_ACMUX_##Aa1, 3, 21) | \ + gF_(G_ACMUX_##Ac1, 3, 18) | \ + gF_(G_CCMUX_##d0, 3, 15) | \ + gF_(G_ACMUX_##Ab0, 3, 12) | \ + gF_(G_ACMUX_##Ad0, 3, 9) | \ + gF_(G_CCMUX_##d1, 3, 6) | \ + gF_(G_ACMUX_##Ab1, 3, 3) | \ + gF_(G_ACMUX_##Ad1, 3, 0)) + +#define gsDPSetConvert(k0, k1, k2, k3, k4, k5) \ + gO_( \ + G_SETCONVERT, \ + gF_(k0, 9, 13) | \ + gF_(k1, 9, 4) | \ + gF_(gI_(k2) >> 5, 4, 0), \ + gF_(k2, 5, 27) | \ + gF_(k3, 9, 18) | \ + gF_(k4, 9, 9) | \ + gF_(k5, 9, 0)) + +#define gsDPSetTextureConvert(type) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTCONV, G_MDSIZ_TEXTCONV, type) + +#define gsDPSetCycleType(type) \ + gsSPSetOtherModeHi(G_MDSFT_CYCLETYPE, G_MDSIZ_CYCLETYPE, type) + +#define gsDPSetDepthSource(source) \ + gsSPSetOtherModeLo(G_MDSFT_ZSRCSEL, G_MDSIZ_ZSRCSEL, source) + +#define gsDPSetCombineKey(type) \ + gsSPSetOtherModeHi(G_MDSFT_COMBKEY, G_MDSIZ_COMBKEY, type) + +#define gsDPSetKeyGB(cG, sG, wG, cB, sB, wB) \ + gO_( \ + G_SETKEYGB, \ + gF_(wG, 12, 12) | \ + gF_(wB, 12, 0), \ + gF_(cG, 8, 24) | \ + gF_(sG, 8, 16) | \ + gF_(cB, 8, 8) | \ + gF_(sB, 8, 0)) + +#define gsDPSetKeyR(cR, sR, wR) \ + gO_( \ + G_SETKEYR, 0, \ + gF_(wR, 12, 16) | \ + gF_(cR, 8, 8) | \ + gF_(sR, 8, 0)) + +#define gsDPSetPrimDepth(z, dz) \ + gO_( \ + G_SETPRIMDEPTH, \ + 0, \ + gF_(z, 16, 16) | \ + gF_(dz, 16, 0)) + +#define gsDPSetRenderMode(mode1, mode2) \ + gsSPSetOtherModeLo( \ + G_MDSFT_RENDERMODE, \ + G_MDSIZ_RENDERMODE, \ + gI_(mode1) | \ + gI_(mode2)) + +#define gsDPSetScissor(mode, ulx, uly, lrx, lry) \ + gsDPSetScissorFrac( \ + mode, \ + qu102(gI_(ulx)), \ + qu102(gI_(uly)), \ + qu102(gI_(lrx)), \ + qu102(gI_(lry))) + +#define gsDPSetScissorFrac(mode, ulx, uly, lrx, lry) \ + gO_( \ + G_SETSCISSOR, \ + gF_(ulx, 12, 12) | \ + gF_(uly, 12, 0), \ + gF_(mode, 2, 24) | \ + gF_(lrx, 12, 12) | \ + gF_(lry, 12, 0)) + +#define gsDPSetTextureDetail(type) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTDETAIL, G_MDSIZ_TEXTDETAIL, type) + +#define gsDPSetTextureFilter(mode) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTFILT, G_MDSIZ_TEXTFILT, mode) + +#define gsDPSetTextureLOD(mode) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTLOD, G_MDSIZ_TEXTLOD, mode) + +#define gsDPSetTextureLUT(mode) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTLUT, G_MDSIZ_TEXTLUT, mode) + +#define gsDPSetTexturePersp(enable) \ + gsSPSetOtherModeHi(G_MDSFT_TEXTPERSP, G_MDSIZ_TEXTPERSP, enable) + +#define gsDPSetTile(fmt, siz, line, tmem, tile, palette, \ + cmt, maskt, shiftt, cms, masks, shifts) \ + gO_( \ + G_SETTILE, \ + gF_(fmt, 3, 21) | \ + gF_(siz, 2, 19) | \ + gF_(line, 9, 9) | \ + gF_(tmem, 9, 0), \ + gF_(tile, 3, 24) | \ + gF_(palette, 4, 20) | \ + gF_(cmt, 2, 18) | \ + gF_(maskt, 4, 14) | \ + gF_(shiftt, 4, 10) | \ + gF_(cms, 2, 8) | \ + gF_(masks, 4, 4) | \ + gF_(shifts, 4, 0)) + +#define gsDPSetTileSize(tile, uls, ult, lrs, lrt) \ + gO_( \ + G_SETTILESIZE, \ + gF_(uls, 12, 12) | \ + gF_(ult, 12, 0), \ + gF_(tile, 3, 24) | \ + gF_(lrs, 12, 12) | \ + gF_(lrt, 12, 0)) + +#define gsSPBranchList(dl) \ + gsDisplayList(dl, 1) + +#define gsSPClipRatio(r) \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, (uint16_t)(r)), \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, (uint16_t)(r)), \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, (uint16_t)-(r)), \ + gsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, (uint16_t)-(r)) + +#define gsSPDisplayList(dl) \ + gsDisplayList(dl, 0) + +#define gsSPEndDisplayList() \ + gO_(G_ENDDL, 0, 0) + +#define gsSPFogFactor(fm, fo) \ + gsMoveWd( \ + G_MW_FOG, \ + G_MWO_FOG, \ + gF_(fm, 16, 16) | \ + gF_(fo, 16, 0)) + +#define gsSPFogPosition(min, max) \ + gsSPFogFactor( \ + (500 * 0x100) / ((max) - (min)), \ + (500 - (min)) * 0x100 / ((max) - (min))) + +#define gsSPLine3D(v0, v1, flag) \ + gsSPLineW3D(v0, v1, 0, flag) + +#define gsSPLookAt(l) \ + gsSPLookAtX(l), \ + gsSPLookAtY(gI_(l) + 0x10) + +#define gsSPSegment(seg, base) \ + gsMoveWd(G_MW_SEGMENT, (seg) * 4, base) + +#define gsSPSetLights0(lites) \ + gsSPNumLights(NUMLIGHTS_0), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).a, 2) + +#define gsSPSetLights1(lites) \ + gsSPNumLights(NUMLIGHTS_1), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).a, 2) + +#define gsSPSetLights2(lites) \ + gsSPNumLights(NUMLIGHTS_2), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).a, 3) + +#define gsSPSetLights3(lites) \ + gsSPNumLights(NUMLIGHTS_3), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).l[2], 3), \ + gsSPLight(&(lites).a, 4) + +#define gsSPSetLights4(lites) \ + gsSPNumLights(NUMLIGHTS_4), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).l[2], 3), \ + gsSPLight(&(lites).l[3], 4), \ + gsSPLight(&(lites).a, 5) + +#define gsSPSetLights5(lites) \ + gsSPNumLights(NUMLIGHTS_5), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).l[2], 3), \ + gsSPLight(&(lites).l[3], 4), \ + gsSPLight(&(lites).l[4], 5), \ + gsSPLight(&(lites).a, 6) + +#define gsSPSetLights6(lites) \ + gsSPNumLights(NUMLIGHTS_6), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).l[2], 3), \ + gsSPLight(&(lites).l[3], 4), \ + gsSPLight(&(lites).l[4], 5), \ + gsSPLight(&(lites).l[5], 6), \ + gsSPLight(&(lites).a, 7) + +#define gsSPSetLights7(lites) \ + gsSPNumLights(NUMLIGHTS_7), \ + gsSPLight(&(lites).l[0], 1), \ + gsSPLight(&(lites).l[1], 2), \ + gsSPLight(&(lites).l[2], 3), \ + gsSPLight(&(lites).l[3], 4), \ + gsSPLight(&(lites).l[4], 5), \ + gsSPLight(&(lites).l[5], 6), \ + gsSPLight(&(lites).l[6], 7), \ + gsSPLight(&(lites).a, 8) + +#define gsSPSetStatus(sid, val) \ + gsMoveWd(G_MW_GENSTAT, sid, val) + +#define gsSPNumLights(n) \ + gsMoveWd(G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n)) + +#define gsSPLightColor(Lightnum, packedcolor) \ + gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##Lightnum, packedcolor), \ + gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##Lightnum, packedcolor) + +#define gsSPTextureRectangle(ulx, uly, lrx, lry, tile, s, t, dsdx, dtdy) \ + gsTexRect(ulx, uly, lrx, lry, tile), \ + gsDPHalf1(gF_(s, 16, 16) | gF_(t, 16, 0)), \ + gsDPHalf2(gF_(dsdx, 16, 16) | gF_(dtdy, 16, 0)) + +#define gsSPScisTextureRectangle(ulx, uly, lrx, lry, tile, s, t, dsdx, dtdy) \ + gsTexRect(gScC_(ulx), gScC_(uly), gScC_(lrx), gScC_(lry), tile), \ + gsDPHalf1( \ + gF_(gScD_(s, ulx, dsdx), 16, 16) | \ + gF_(gScD_(t, uly, dtdy), 16, 0)), \ + gsDPHalf2(gF_(dsdx, 16, 16) | gF_(dtdy, 16, 0)) + +#define gsSPTextureRectangleFlip(ulx, uly, lrx, lry, tile, s, t, dsdx, dtdy) \ + gsTexRectFlip(ulx, uly, lrx, lry, tile), \ + gsDPHalf1(gF_(s, 16, 16) | gF_(t, 16, 0)), \ + gsDPHalf2(gF_(dsdx, 16, 16) | gF_(dtdy, 16, 0)) + +#define gsSPScisTextureRectangleFlip( \ + ulx, uly, lrx, lry, tile, s, t, dsdx, dtdy) \ + gsTexRectFlip(gScC_(ulx), gScC_(uly), gScC_(lrx), gScC_(lry), tile), \ + gsDPHalf1( \ + gF_(gScD_(s, ulx, dsdx), 16, 16) | \ + gF_(gScD_(t, uly, dtdy), 16, 0)), \ + gsDPHalf2(gF_(dsdx, 16, 16) | gF_(dtdy, 16, 0)) + +#define gsSPBgRectCopy(bg) \ + gO_(G_BG_COPY, 0, bg) + +#define gsSPBgRect1Cyc(bg) \ + gO_(G_BG_1CYC, 0, bg) + +#define gsSPObjRectangle(sp) \ + gO_(G_OBJ_RECTANGLE, 0, sp) + +#define gsSPObjRectangleR(sp) \ + gO_(G_OBJ_RECTANGLE_R, 0, sp) + +#define gsSPObjSprite(sp) \ + gO_(G_OBJ_SPRITE, 0, sp) + +#define gsSPObjMatrix(mtx) \ + gO_( \ + G_OBJ_MOVEMEM, \ + gF_(sizeof(uObjMtx) - 1, 8, 16), \ + mtx) + +#define gsSPObjSubMatrix(mtx) \ + gO_( \ + G_OBJ_MOVEMEM, \ + gF_(sizeof(uObjSubMtx) - 1, 8, 16) | \ + gF_(2, 16, 0), \ + mtx) + +#define gsSPObjRenderMode(mode) \ + gO_(G_OBJ_RENDERMODE, 0, mode) + +#define gsSPObjLoadTxtr(tx) \ + gO_(G_OBJ_LOADTXTR, 23, tx) + +#define gsSPObjLoadTxRect(txsp) \ + gO_(G_OBJ_LDTX_RECT, 47, txsp) + +#define gsSPObjLoadTxRectR(txsp) \ + gO_(G_OBJ_LDTX_RECT_R, 47, txsp) + +#define gsSPObjLoadTxSprite(txsp) \ + gO_(G_OBJ_LDTX_SPRITE, 47, txsp) + +#define gsSPSelectDL(ldl, sid, flag, mask) \ + gO_( \ + G_RDPHALF_0, \ + gF_(sid, 8, 16) | \ + gF_(ldl, 16, 0), \ + flag), \ + gO_( \ + G_SELECT_DL, \ + gF_(0x00, 8, 16) | \ + gF_(gI_(ldl) >> 16, 16, 0), \ + mask) + +#define gsSPSelectBranchDL(bdl, sid, flag, mask) \ + gO_( \ + G_RDPHALF_0, \ + gF_(sid, 8, 16) | \ + gF_(bdl, 16, 0), \ + flag), \ + gO_( \ + G_SELECT_DL, \ + gF_(0x01, 8, 16) | \ + gF_(gI_(bdl) >> 16, 16, 0), \ + mask) + +/* unlisted instructions */ + +#define gsDPLoadTLUTCmd(tile, count) \ + gO_( \ + G_LOADTLUT, \ + 0, \ + gF_(tile, 3, 24) | \ + gF_(count, 10, 14)) + +#define gsDPLoadTLUT(count, tmem, dram) \ + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram), \ + gsDPTileSync(), \ + gsDPSetTile(0, 0, 0, tmem, G_TX_LOADTILE, 0, 0, 0, 0, 0, 0, 0), \ + gsDPLoadSync(), \ + gsDPLoadTLUTCmd(G_TX_LOADTILE, (count) - 1), \ + gsDPPipeSync() + +#define gsDisplayList(dl, branch) \ + gO_(G_DL, gF_(branch, 8, 16), dl) + +#define gsDPLoadTile(tile, uls, ult, lrs, lrt) \ + gO_( \ + G_LOADTILE, \ + gF_(uls, 12, 12) | \ + gF_(ult, 12, 0), \ + gF_(tile, 3, 24) | \ + gF_(lrs, 12, 12) | \ + gF_(lrt, 12, 0)) + +#define gsDPSetCombine(c) \ + gO_( \ + G_SETCOMBINE, \ + (gL_(c) >> 32) & 0xFFFFFFFF, \ + (gL_(c) >> 0) & 0xFFFFFFFF) + +#define gsSPSetOtherModeLo(shift, length, data) \ + gsSPSetOtherMode(G_SETOTHERMODE_L, shift, length, data) + +#define gsSPSetOtherModeHi(shift, length, data) \ + gsSPSetOtherMode(G_SETOTHERMODE_H, shift, length, data) + +#define gsDPSetOtherMode(mode0, mode1) \ + gO_(G_RDPSETOTHERMODE, gF_(mode0, 24, 0), mode1) + +#define gsTexRect(ulx, uly, lrx, lry, tile) \ + gO_( \ + G_TEXRECT, \ + gF_(lrx, 12, 12) | \ + gF_(lry, 12, 0), \ + gF_(tile, 3, 24) | \ + gF_(ulx, 12, 12) | \ + gF_(uly, 12, 0)) + +#define gsTexRectFlip(ulx, uly, lrx, lry, tile) \ + gO_( \ + G_TEXRECTFLIP, \ + gF_(lrx, 12, 12) | \ + gF_(lry, 12, 0), \ + gF_(tile, 3, 24) | \ + gF_(ulx, 12, 12) | \ + gF_(uly, 12, 0)) + +#define gsSPNoOp() \ + gO_(G_SPNOOP, 0, 0) + +#define gsDPHalf1(wordhi) \ + gO_(G_RDPHALF_1, 0, wordhi) + +#define gsDPHalf2(wordlo) \ + gO_(G_RDPHALF_2, 0, wordlo) + +#define gsDPWord(wordhi, wordlo) \ + gsDPHalf1(wordhi), \ + gsDPHalf2(wordlo) + +/* instruction macros for fast3d */ + +#if defined(F3D_GBI) + +# define gsSP1Triangle(v0, v1, v2, flag) \ + gO_( \ + G_TRI1, \ + 0, \ + gF_(flag, 8, 24) | \ + gF_(gI_(v0) * 10, 8, 16) | \ + gF_(gI_(v1) * 10, 8, 8) | \ + gF_(gI_(v2) * 10, 8, 0)) + +# define gsSPCullDisplayList(v0, vn) \ + gO_( \ + G_CULLDL, \ + (gI_(v0) & 0xF) * 40, \ + gI_((vn) + 1) & 0xF) * 40) + +# define gsSPLineW3D(v0, v1, wd, flag) \ + gO_( \ + G_LINE3D, \ + 0, \ + gF_(flag, 8, 24) | \ + gF_(gI_(v0) * 10, 8, 16) | \ + gF_(gI_(v1) * 10, 8, 8) | \ + gF_(wd, 8, 0)) + +# define gsSPVertex(v, n, v0) \ + gO_( \ + G_VTX, \ + gF_((n) - 1, 4, 20) | \ + gF_(v0, 4, 16) | \ + gF_(sizeof(Vtx) * (n), 16, 0), \ + v) + +#endif + +/* instruction macros for fast3d and beta f3dex */ +#if defined(F3D_GBI) || (defined(F3D_BETA) && defined(F3DEX_GBI)) + +# define gsSPModifyVertex(vtx, where, val) \ + gsMoveWd(G_MW_POINTS, (vtx) * 40 + (where), val) + +#endif + +/* instruction macros for fast3d and f3dex */ + +#if defined(F3D_GBI) || defined(F3DEX_GBI) + +# define gsSPForceMatrix(mptr) \ + gsMoveMem(16, G_MV_MATRIX_1, (char *)(mptr)), \ + gsMoveMem(16, G_MV_MATRIX_2, (char *)(mptr) + 16), \ + gsMoveMem(16, G_MV_MATRIX_3, (char *)(mptr) + 32), \ + gsMoveMem(16, G_MV_MATRIX_4, (char *)(mptr) + 48) + +# define gsSPSetGeometryMode(mode) \ + gO_(G_SETGEOMETRYMODE, 0, gI_(mode)) + +# define gsSPClearGeometryMode(mode) \ + gO_(G_CLEARGEOMETRYMODE, 0, gI_(mode)) + +# define gsSPLoadGeometryMode(mode) \ + gsSPClearGeometryMode(~gI_(0)), \ + gsSPSetGeometryMode(mode) + +# define gsSPInsertMatrix(where, num) \ + gsMoveWd(G_MW_MATRIX, where, num) + +# define gsSPLookAtX(l) \ + gsMoveMem(sizeof(Light), G_MV_LOOKATX, l) + +# define gsSPLookAtY(l) \ + gsMoveMem(sizeof(Light), G_MV_LOOKATY, l) + +# define gsSPMatrix(matrix, param) \ + gO_( \ + G_MTX, \ + gF_(param, 8, 16) | \ + gF_(sizeof(Mtx), 16, 0), \ + matrix) + +# define gsSPPopMatrix(param) \ + gO_(G_POPMTX, 0, param) + +# define gsSPLight(l, n) \ + gsMoveMem(sizeof(Light), G_MV_L0 + ((n) - 1) * 2, l) + +# define gsSPTexture(sc, tc, level, tile, on) \ + gO_( \ + G_TEXTURE, \ + gF_(level, 3, 11) | \ + gF_(tile, 3, 8) | \ + gF_(on, 8, 0), \ + gF_(sc, 16, 16) | \ + gF_(tc, 16, 0)) + +# define gsSPViewport(v) \ + gsMoveMem(sizeof(Vp), G_MV_VIEWPORT, v) + +# define gsSPSetOtherMode(opc, shift, length, data) \ + gO_( \ + opc, \ + gF_(shift, 8, 8) | \ + gF_(length, 8, 0), \ + data) + +# define gsMoveWd(index, offset, data) \ + gO_( \ + G_MOVEWORD, \ + gF_(offset, 16, 8) | \ + gF_(index, 8, 0), \ + data) + +# define gsMoveMem(size, index, address) \ + gO_( \ + G_MOVEMEM, \ + gF_(index, 8, 16) | \ + gF_(size, 16, 0), \ + address) + +#endif + +/* instruction macros for f3dex */ + +#if defined(F3DEX_GBI) + +# define gsSP1Triangle(v0, v1, v2, flag) \ + gO_( \ + G_TRI1, \ + 0, \ + gF_(gV3_(v0, v1, v2, flag) * 2, 8, 16) | \ + gF_(gV3_(v1, v2, v0, flag) * 2, 8, 8) | \ + gF_(gV3_(v2, v0, v1, flag) * 2, 8, 0)) + +# define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ + gO_( \ + G_TRI2, \ + gF_(gV4_(v0, v1, v2, v3, flag) * 2, 8, 16) | \ + gF_(gV4_(v1, v2, v3, v0, flag) * 2, 8, 8) | \ + gF_(gV4_(v2, v3, v0, v1, flag) * 2, 8, 0), \ + gF_(gV4_(v0, v1, v2, v3, flag) * 2, 8, 16) | \ + gF_(gV4_(v2, v3, v0, v1, flag) * 2, 8, 8) | \ + gF_(gV4_(v3, v0, v1, v2, flag) * 2, 8, 0)) + +# define gsSPLineW3D(v0, v1, wd, flag) \ + gO_( \ + G_LINE3D, \ + 0, \ + gF_(gV2_(v0, v1, flag) * 2, 8, 16) | \ + gF_(gV2_(v1, v0, flag) * 2, 8, 8) | \ + gF_(wd, 8, 0)) + +# define gsSPVertex(v, n, v0) \ + gO_( \ + G_VTX, \ + gF_((v0) * 2, 8, 16) | \ + gF_(n, 6, 10) | \ + gF_(sizeof(Vtx) * (n) - 1, 10, 0), \ + v) + +#endif + +/* instruction macros for f3dex and f3dex2 */ + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + +# define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \ + gO_( \ + G_TRI2, \ + gF_(gV3_(v00, v01, v02, flag0) * 2, 8, 16) | \ + gF_(gV3_(v01, v02, v00, flag0) * 2, 8, 8) | \ + gF_(gV3_(v02, v00, v01, flag0) * 2, 8, 0), \ + gF_(gV3_(v10, v11, v12, flag1) * 2, 8, 16) | \ + gF_(gV3_(v11, v12, v10, flag1) * 2, 8, 8) | \ + gF_(gV3_(v12, v10, v11, flag1) * 2, 8, 0)) + +# define gsSPBranchLessZ(branchdl, vtx, zval, near, far, flag) \ + gsSPBranchLessZrg(branchdl, vtx, zval, near, far, flag, 0, G_MAXZ) + +# define gsSPBranchLessZrg(branchdl, vtx, zval, near, far, flag, zmin, zmax) \ + gsSPBranchLessZraw(branchdl, vtx, \ + G_DEPTOZSrg(zval, near, far, flag, zmin, zmax)) + +# define gsSPBranchLessZraw(branchdl, vtx, zval) \ + gsDPHalf1(branchdl), \ + gsBranchZ(vtx, zval) + +# define gsSPCullDisplayList(v0, vn) \ + gO_( \ + G_CULLDL, \ + gF_((v0) * 2, 16, 0), \ + gF_((vn) * 2, 16, 0)) + +# define gsSPLoadUcode(uc_start, uc_dstart) \ + gsSPLoadUcodeEx(uc_start, uc_dstart, 0x800) + +# define gsSPLoadUcodeL(ucode) \ + gsSPLoadUcode( \ + gI_(&ucode##TextStart) & 0x1FFFFFFF, \ + gI_(&ucode##DataStart) & 0x1FFFFFFF) + +# if !(defined(F3D_BETA) && defined(F3DEX_GBI)) +# define gsSPModifyVertex(vtx, where, val) \ + gO_( \ + G_MODIFYVTX, \ + gF_(where, 8, 16) | \ + gF_((vtx) * 2, 16, 0), \ + val) +# endif + +# define gsBranchZ(vtx, zval) \ + gO_( \ + G_BRANCH_Z, \ + gF_((vtx) * 5, 12, 12) | \ + gF_((vtx) * 2, 12, 0), \ + zval) + +# define gsLoadUcode(uc_start, uc_dsize) \ + gO_( \ + G_LOAD_UCODE, \ + gF_((uc_dsize) - 1, 16, 0), \ + uc_start) + +# define gsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize) \ + gsDPHalf1(uc_dstart), \ + gsLoadUcode(uc_start, uc_dsize) + +#endif + +/* instruction macros for f3dex2 */ + +#if defined(F3DEX_GBI_2) + +# define gsSP1Triangle(v0, v1, v2, flag) \ + gO_( \ + G_TRI1, \ + gF_(gV3_(v0, v1, v2, flag) * 2, 8, 16) | \ + gF_(gV3_(v1, v2, v0, flag) * 2, 8, 8) | \ + gF_(gV3_(v2, v0, v1, flag) * 2, 8, 0), \ + 0) + +# define gsSP1Quadrangle(v0, v1, v2, v3, flag) \ + gO_( \ + G_QUAD, \ + gF_(gV4_(v0, v1, v2, v3, flag) * 2, 8, 16) | \ + gF_(gV4_(v1, v2, v3, v0, flag) * 2, 8, 8) | \ + gF_(gV4_(v2, v3, v0, v1, flag) * 2, 8, 0), \ + gF_(gV4_(v0, v1, v2, v3, flag) * 2, 8, 16) | \ + gF_(gV4_(v2, v3, v0, v1, flag) * 2, 8, 8) | \ + gF_(gV4_(v3, v0, v1, v2, flag) * 2, 8, 0)) + +# define gsSPForceMatrix(mptr) \ + gsMoveMem(sizeof(Mtx), G_MV_MATRIX, 0, mptr), \ + gsMoveWd(G_MW_FORCEMTX, 0, 0x10000) + +# define gsSPSetGeometryMode(mode) \ + gsSPGeometryMode(0, mode) + +# define gsSPClearGeometryMode(mode) \ + gsSPGeometryMode(mode, 0) + +# define gsSPLoadGeometryMode(mode) \ + gsSPGeometryMode(~gI_(0), mode) + +# define gsSPLineW3D(v0, v1, wd, flag) \ + gO_( \ + G_LINE3D, \ + gF_(gV2_(v0, v1, flag) * 2, 8, 16) | \ + gF_(gV2_(v1, v0, flag) * 2, 8, 8) | \ + gF_(wd, 8, 0), \ + 0) + +# define gsSPLookAtX(l) \ + gsMoveMem(sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATX, l) + +# define gsSPLookAtY(l) \ + gsMoveMem(sizeof(Light), G_MV_LIGHT, G_MVO_LOOKATY, l) + +# define gsSPMatrix(matrix, param) \ + gO_( \ + G_MTX, \ + gF_((sizeof(Mtx) - 1) / 8, 5, 19) | \ + gF_(gI_(param) ^ G_MTX_PUSH, 8, 0), \ + matrix) + +# define gsSPPopMatrix(param) \ + gsSPPopMatrixN(param, 1) + +# define gsSPPopMatrixN(param, n) \ + gO_( \ + G_POPMTX, \ + gF_((sizeof(Mtx) - 1) / 8, 5, 19) | \ + gF_(2, 8, 0), \ + sizeof(Mtx) * (n)) + +# define gsSPLight(l, n) \ + gsMoveMem(sizeof(Light), G_MV_LIGHT, ((n) + 1) * 0x18, l) + +# define gsSPTexture(sc, tc, level, tile, on) \ + gO_( \ + G_TEXTURE, \ + gF_(level, 3, 11) | \ + gF_(tile, 3, 8) | \ + gF_(on, 7, 1), \ + gF_(sc, 16, 16) | \ + gF_(tc, 16, 0)) + +# define gsSPVertex(v, n, v0) \ + gO_( \ + G_VTX, \ + gF_(n, 8, 12) | \ + gF_((v0) + (n), 7, 1), \ + v) + +# define gsSPViewport(v) \ + gsMoveMem(sizeof(Vp), G_MV_VIEWPORT, 0, v) + +# define gsSPGeometryMode(clearbits, setbits) \ + gO_( \ + G_GEOMETRYMODE, \ + gF_(~gI_(clearbits), 24, 0), \ + setbits) + +# define gsSPSetOtherMode(opc, shift, length, data) \ + gO_( \ + opc, \ + gF_(32 - (shift) - (length), 8, 8) | \ + gF_((length) - 1, 8, 0), \ + data) + +# define gsMoveWd(index, offset, data) \ + gO_( \ + G_MOVEWORD, \ + gF_(index, 8, 16) | \ + gF_(offset, 16, 0), \ + data) + +# define gsMoveMem(size, index, offset, address) \ + gO_( \ + G_MOVEMEM, \ + gF_((size - 1) / 8, 5, 19) | \ + gF_((offset) / 8, 8, 8) | \ + gF_(index, 8, 0), \ + address) + +# define gsSPDma_io(flag, dmem, dram, size) \ + gO_( \ + G_DMA_IO, \ + gF_(flag, 1, 23) | \ + gF_((dmem) / 8, 10, 13) | \ + gF_((size) - 1, 12, 0), \ + dram) + +# define gsSPDmaRead(dmem, dram, size) \ + gsSPDma_io(0, dmem, dram, size) + +# define gsSPDmaWrite(dmem, dram, size) \ + gsSPDma_io(1, dmem, dram, size) + +# define gsSpecial3(hi, lo) \ + gO_(G_SPECIAL_3, hi, lo) + +# define gsSpecial2(hi, lo) \ + gO_(G_SPECIAL_2, hi, lo) + +# define gsSpecial1(hi, lo) \ + gO_(G_SPECIAL_1, hi, lo) + +#endif + +/* instruction macros for beta fast3d and f3dex */ + +#if defined(F3D_BETA) && (defined(F3D_GBI) || defined(F3DEX_GBI)) + +# define gsSPPerspNormalize(scale) \ + gO_(G_PERSPNORM, 0, scale) + +#else + +# define gsSPPerspNormalize(scale) \ + gsMoveWd(G_MW_PERSPNORM, 0, scale) + +#endif + +/* dynamic instruction macros */ + +#define gDisplayListPut(gdl, ...) \ + ({ \ + Gfx Gd_[] = {__VA_ARGS__}; \ + for(size_t Gi_ = 0; Gi_ < sizeof(Gd_) / sizeof(Gfx); Gi_++) \ + { \ + *(Gfx *)(gdl) = Gd_[Gi_]; \ + } \ + (void)0; \ + }) +#define gDisplayListAppend(pgdl, ...) \ + ({ \ + Gfx Gd_[] = {__VA_ARGS__}; \ + for(size_t Gi_ = 0; Gi_ < sizeof(Gd_) / sizeof(Gfx); Gi_++) \ + { \ + *(*(Gfx **)(pgdl))++ = Gd_[Gi_]; \ + } \ + (void)0; \ + }) +#define gDisplayListData(pgdl, d) \ + ({ \ + Gfx **Gp_ = (void *)(pgdl); \ + struct \ + { \ + __typeof__(d) v; \ + } *Gd_, *Gs_; \ + *Gp_ -= (sizeof(*Gd_) + sizeof(Gfx) - 1) / sizeof(Gfx); \ + Gd_ = (void *)*Gp_; \ + Gs_ = (void *)&(d); \ + *Gd_ = *Gs_; \ + &Gd_->v; \ + }) +#define gDisplayListAlloc(pgdl, s) \ + ({ \ + Gfx **Gp_ = (void *)(pgdl); \ + *Gp_ -= ((s) + sizeof(Gfx) - 1) / sizeof(Gfx); \ + (void *)*Gp_; \ + }) + +#define gDPFillRectangle(gdl, ...) \ + gD_(gdl, gsDPFillRectangle, __VA_ARGS__) +#define gDPScisFillRectangle(gdl, ...) \ + gD_(gdl, gsDPScisFillRectangle, __VA_ARGS__) +#define gDPFullSync(gdl) \ + gDisplayListPut(gdl, gsDPFullSync()) +#define gDPLoadSync(gdl) \ + gDisplayListPut(gdl, gsDPLoadSync()) +#define gDPTileSync(gdl) \ + gDisplayListPut(gdl, gsDPTileSync()) +#define gDPPipeSync(gdl) \ + gDisplayListPut(gdl, gsDPPipeSync()) +#define gDPLoadTLUT_pal16(gdl, ...) \ + gD_(gdl, gsDPLoadTLUT_pal16, __VA_ARGS__) +#define gDPLoadTLUT_pal256(gdl, ...) \ + gD_(gdl, gsDPLoadTLUT_pal256, __VA_ARGS__) +#define gDPLoadTextureBlock(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlock, __VA_ARGS__) +#define gDPLoadTextureBlockS(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlockS, __VA_ARGS__) +#define gDPLoadTextureBlock_4b(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlock_4b, __VA_ARGS__) +#define gDPLoadTextureBlock_4bS(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlock_4bS, __VA_ARGS__) +#define gDPLoadTextureBlockYuv(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlockYuv, __VA_ARGS__) +#define gDPLoadTextureBlockYuvS(gdl, ...) \ + gD_(gdl, gsDPLoadTextureBlockYuvS, __VA_ARGS__) +#define _gDPLoadTextureBlock(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlock, __VA_ARGS__) +#define _gDPLoadTextureBlockS(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlockS, __VA_ARGS__) +#define _gDPLoadTextureBlock_4b(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlock_4b, __VA_ARGS__) +#define _gDPLoadTextureBlock_4bS(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlock_4bS, __VA_ARGS__) +#define _gDPLoadTextureBlockYuv(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlockYuv, __VA_ARGS__) +#define _gDPLoadTextureBlockYuvS(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureBlockYuvS, __VA_ARGS__) +#define gDPLoadMultiBlock(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlock, __VA_ARGS__) +#define gDPLoadMultiBlockS(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlockS, __VA_ARGS__) +#define gDPLoadMultiBlock_4b(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlock_4b, __VA_ARGS__) +#define gDPLoadMultiBlock_4bS(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlock_4bS, __VA_ARGS__) +#define gDPLoadMultiBlockYuv(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlockYuv, __VA_ARGS__) +#define gDPLoadMultiBlockYuvS(gdl, ...) \ + gD_(gdl, gsDPLoadMultiBlockYuvS, __VA_ARGS__) +#define gDPLoadTextureTile(gdl, ...) \ + gD_(gdl, gsDPLoadTextureTile, __VA_ARGS__) +#define gDPLoadTextureTile_4b(gdl, ...) \ + gD_(gdl, gsDPLoadTextureTile_4b, __VA_ARGS__) +#define gDPLoadTextureTileYuv(gdl, ...) \ + gD_(gdl, gsDPLoadTextureTileYuv, __VA_ARGS__) +#define _gDPLoadTextureTile(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureTile, __VA_ARGS__) +#define _gDPLoadTextureTile_4b(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureTile_4b, __VA_ARGS__) +#define _gDPLoadTextureTileYuv(gdl, ...) \ + gD_(gdl, _gsDPLoadTextureTileYuv, __VA_ARGS__) +#define gDPLoadMultiTile(gdl, ...) \ + gD_(gdl, gsDPLoadMultiTile, __VA_ARGS__) +#define gDPLoadMultiTile_4b(gdl, ...) \ + gD_(gdl, gsDPLoadMultiTile_4b, __VA_ARGS__) +#define gDPLoadMultiTileYuv(gdl, ...) \ + gD_(gdl, gsDPLoadMultiTileYuv, __VA_ARGS__) +#define gDPLoadBlock(gdl, ...) \ + gD_(gdl, gsDPLoadBlock, __VA_ARGS__) +#define gDPNoOp(gdl) \ + gDisplayListPut(gdl, gsDPNoOp()) +#define gDPNoOpTag(gdl, ...) \ + gD_(gdl, gsDPNoOpTag, __VA_ARGS__) +#define gDPPipelineMode(gdl, ...) \ + gD_(gdl, gsDPPipelineMode, __VA_ARGS__) +#define gDPSetBlendColor(gdl, ...) \ + gD_(gdl, gsDPSetBlendColor, __VA_ARGS__) +#define gDPSetEnvColor(gdl, ...) \ + gD_(gdl, gsDPSetEnvColor, __VA_ARGS__) +#define gDPSetFillColor(gdl, ...) \ + gD_(gdl, gsDPSetFillColor, __VA_ARGS__) +#define gDPSetFogColor(gdl, ...) \ + gD_(gdl, gsDPSetFogColor, __VA_ARGS__) +#define gDPSetPrimColor(gdl, ...) \ + gD_(gdl, gsDPSetPrimColor, __VA_ARGS__) +#define gDPSetColorImage(gdl, ...) \ + gD_(gdl, gsDPSetColorImage, __VA_ARGS__) +#define gDPSetDepthImage(gdl, ...) \ + gD_(gdl, gsDPSetDepthImage, __VA_ARGS__) +#define gDPSetTextureImage(gdl, ...) \ + gD_(gdl, gsDPSetTextureImage, __VA_ARGS__) +#define gDPSetHilite1Tile(gdl, ...) \ + gD_(gdl, gsDPSetHilite1Tile, __VA_ARGS__) +#define gDPSetHilite2Tile(gdl, ...) \ + gD_(gdl, gsDPSetHilite2Tile, __VA_ARGS__) +#define gDPSetAlphaCompare(gdl, ...) \ + gD_(gdl, gsDPSetAlphaCompare, __VA_ARGS__) +#define gDPSetAlphaDither(gdl, ...) \ + gD_(gdl, gsDPSetAlphaDither, __VA_ARGS__) +#define gDPSetColorDither(gdl, ...) \ + gD_(gdl, gsDPSetColorDither, __VA_ARGS__) +#define gDPSetCombineMode(gdl, ...) \ + gD_(gdl, gsDPSetCombineLERP, __VA_ARGS__) +#define gDPSetCombineLERP(gdl, ...) \ + gD_(gdl, gsDPSetCombineLERP, __VA_ARGS__) +#define gDPSetConvert(gdl, ...) \ + gD_(gdl, gsDPSetConvert, __VA_ARGS__) +#define gDPSetTextureConvert(gdl, ...) \ + gD_(gdl, gsDPSetTextureConvert, __VA_ARGS__) +#define gDPSetCycleType(gdl, ...) \ + gD_(gdl, gsDPSetCycleType, __VA_ARGS__) +#define gDPSetDepthSource(gdl, ...) \ + gD_(gdl, gsDPSetDepthSource, __VA_ARGS__) +#define gDPSetCombineKey(gdl, ...) \ + gD_(gdl, gsDPSetCombineKey, __VA_ARGS__) +#define gDPSetKeyGB(gdl, ...) \ + gD_(gdl, gsDPSetKeyGB, __VA_ARGS__) +#define gDPSetKeyR(gdl, ...) \ + gD_(gdl, gsDPSetKeyR, __VA_ARGS__) +#define gDPSetPrimDepth(gdl, ...) \ + gD_(gdl, gsDPSetPrimDepth, __VA_ARGS__) +#define gDPSetRenderMode(gdl, ...) \ + gD_(gdl, gsDPSetRenderMode, __VA_ARGS__) +#define gDPSetScissor(gdl, ...) \ + gD_(gdl, gsDPSetScissor, __VA_ARGS__) +#define gDPSetScissorFrac(gdl, ...) \ + gD_(gdl, gsDPSetScissorFrac, __VA_ARGS__) +#define gDPSetTextureDetail(gdl, ...) \ + gD_(gdl, gsDPSetTextureDetail, __VA_ARGS__) +#define gDPSetTextureFilter(gdl, ...) \ + gD_(gdl, gsDPSetTextureFilter, __VA_ARGS__) +#define gDPSetTextureLOD(gdl, ...) \ + gD_(gdl, gsDPSetTextureLOD, __VA_ARGS__) +#define gDPSetTextureLUT(gdl, ...) \ + gD_(gdl, gsDPSetTextureLUT, __VA_ARGS__) +#define gDPSetTexturePersp(gdl, ...) \ + gD_(gdl, gsDPSetTexturePersp, __VA_ARGS__) +#define gDPSetTile(gdl, ...) \ + gD_(gdl, gsDPSetTile, __VA_ARGS__) +#define gDPSetTileSize(gdl, ...) \ + gD_(gdl, gsDPSetTileSize, __VA_ARGS__) +#define gSP1Triangle(gdl, ...) \ + gD_(gdl, gsSP1Triangle, __VA_ARGS__) +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define gSP2Triangles(gdl, ...) \ + gD_(gdl, gsSP2Triangles, __VA_ARGS__) +# define gSP1Quadrangle(gdl, ...) \ + gD_(gdl, gsSP1Quadrangle, __VA_ARGS__) +# define gSPBranchLessZ(gdl, ...) \ + gD_(gdl, gsSPBranchLessZ, __VA_ARGS__) +# define gSPBranchLessZrg(gdl, ...) \ + gD_(gdl, gsSPBranchLessZrg, __VA_ARGS__) +# define gSPBranchLessZraw(gdl, ...) \ + gD_(gdl, gsSPBranchLessZraw, __VA_ARGS__) +#endif +#define gSPBranchList(gdl, ...) \ + gD_(gdl, gsSPBranchList, __VA_ARGS__) +#define gSPClipRatio(gdl, ...) \ + gD_(gdl, gsSPClipRatio, __VA_ARGS__) +#define gSPCullDisplayList(gdl, ...) \ + gD_(gdl, gsSPCullDisplayList, __VA_ARGS__) +#define gSPDisplayList(gdl, ...) \ + gD_(gdl, gsSPDisplayList, __VA_ARGS__) +#define gSPEndDisplayList(gdl) \ + gDisplayListPut(gdl, gsSPEndDisplayList()) +#define gSPFogFactor(gdl, ...) \ + gD_(gdl, gsSPFogFactor, __VA_ARGS__) +#define gSPFogPosition(gdl, ...) \ + gD_(gdl, gsSPFogPosition, __VA_ARGS__) +#define gSPForceMatrix(gdl, ...) \ + gD_(gdl, gsSPForceMatrix, __VA_ARGS__) +#define gSPSetGeometryMode(gdl, ...) \ + gD_(gdl, gsSPSetGeometryMode, __VA_ARGS__) +#define gSPClearGeometryMode(gdl, ...) \ + gD_(gdl, gsSPClearGeometryMode, __VA_ARGS__) +#define gSPLoadGeometryMode(gdl, ...) \ + gD_(gdl, gsSPLoadGeometryMode, __VA_ARGS__) +#if defined(F3D_GBI) || defined(F3DEX_GBI) +# define gSPInsertMatrix(gdl, ...) \ + gD_(gdl, gsSPInsertMatrix, __VA_ARGS__) +#endif +#define gSPLine3D(gdl, ...) \ + gD_(gdl, gsSPLine3D, __VA_ARGS__) +#define gSPLineW3D(gdl, ...) \ + gD_(gdl, gsSPLineW3D, __VA_ARGS__) +#define gSPLoadUcode(gdl, ...) \ + gD_(gdl, gsSPLoadUcode, __VA_ARGS__) +#define gSPLoadUcodeL(gdl, ...) \ + gD_(gdl, gsSPLoadUcodeL, __VA_ARGS__) +#define gSPLookAtX(gdl, ...) \ + gD_(gdl, gsSPLookAtX, __VA_ARGS__) +#define gSPLookAtY(gdl, ...) \ + gD_(gdl, gsSPLookAtY, __VA_ARGS__) +#define gSPLookAt(gdl, ...) \ + gD_(gdl, gsSPLookAt, __VA_ARGS__) +#define gSPMatrix(gdl, ...) \ + gD_(gdl, gsSPMatrix, __VA_ARGS__) +#define gSPModifyVertex(gdl, ...) \ + gD_(gdl, gsSPModifyVertex, __VA_ARGS__) +#define gSPPerspNormalize(gdl, ...) \ + gD_(gdl, gsSPPerspNormalize, __VA_ARGS__) +#define gSPPopMatrix(gdl, ...) \ + gD_(gdl, gsSPPopMatrix, __VA_ARGS__) +#if defined(F3DEX_GBI_2) +# define gSPPopMatrixN(gdl, ...) \ + gD_(gdl, gsSPPopMatrixN, __VA_ARGS__) +#endif +#define gSPSegment(gdl, ...) \ + gD_(gdl, gsSPSegment, __VA_ARGS__) +#define gSPSetLights0(gdl, ...) \ + gD_(gdl, gsSPSetLights0, __VA_ARGS__) +#define gSPSetLights1(gdl, ...) \ + gD_(gdl, gsSPSetLights1, __VA_ARGS__) +#define gSPSetLights2(gdl, ...) \ + gD_(gdl, gsSPSetLights2, __VA_ARGS__) +#define gSPSetLights3(gdl, ...) \ + gD_(gdl, gsSPSetLights3, __VA_ARGS__) +#define gSPSetLights4(gdl, ...) \ + gD_(gdl, gsSPSetLights4, __VA_ARGS__) +#define gSPSetLights5(gdl, ...) \ + gD_(gdl, gsSPSetLights5, __VA_ARGS__) +#define gSPSetLights6(gdl, ...) \ + gD_(gdl, gsSPSetLights6, __VA_ARGS__) +#define gSPSetLights7(gdl, ...) \ + gD_(gdl, gsSPSetLights7, __VA_ARGS__) +#define gSPSetStatus(gdl, ...) \ + gD_(gdl, gsSPSetStatus, __VA_ARGS__) +#define gSPNumLights(gdl, ...) \ + gD_(gdl, gsSPNumLights, __VA_ARGS__) +#define gSPLight(gdl, ...) \ + gD_(gdl, gsSPLight, __VA_ARGS__) +#define gSPLightColor(gdl, ...) \ + gD_(gdl, gsSPLightColor, __VA_ARGS__) +#define gSPTexture(gdl, ...) \ + gD_(gdl, gsSPTexture, __VA_ARGS__) +#define gSPTextureRectangle(gdl, ...) \ + gD_(gdl, gsSPTextureRectangle, __VA_ARGS__) +#define gSPScisTextureRectangle(gdl, ...) \ + gD_(gdl, gsSPScisTextureRectangle, __VA_ARGS__) +#define gSPTextureRectangleFlip(gdl, ...) \ + gD_(gdl, gsSPTextureRectangleFlip, __VA_ARGS__) +#define gSPScisTextureRectangleFlip(gdl, ...) \ + gD_(gdl, gsSPScisTextureRectangleFlip, __VA_ARGS__) +#define gSPVertex(gdl, ...) \ + gD_(gdl, gsSPVertex, __VA_ARGS__) +#define gSPViewport(gdl, ...) \ + gD_(gdl, gsSPViewport, __VA_ARGS__) +#define gSPBgRectCopy(gdl, ...) \ + gD_(gdl, gsSPBgRectCopy, __VA_ARGS__) +#define gSPBgRect1Cyc(gdl, ...) \ + gD_(gdl, gsSPBgRect1Cyc, __VA_ARGS__) +#define gSPObjRectangle(gdl, ...) \ + gD_(gdl, gsSPObjRectangle, __VA_ARGS__) +#define gSPObjRectangleR(gdl, ...) \ + gD_(gdl, gsSPObjRectangleR, __VA_ARGS__) +#define gSPObjSprite(gdl, ...) \ + gD_(gdl, gsSPObjSprite, __VA_ARGS__) +#define gSPObjMatrix(gdl, ...) \ + gD_(gdl, gsSPObjMatrix, __VA_ARGS__) +#define gSPObjSubMatrix(gdl, ...) \ + gD_(gdl, gsSPObjSubMatrix, __VA_ARGS__) +#define gSPObjRenderMode(gdl, ...) \ + gD_(gdl, gsSPObjRenderMode, __VA_ARGS__) +#define gSPObjLoadTxtr(gdl, ...) \ + gD_(gdl, gsSPObjLoadTxtr, __VA_ARGS__) +#define gSPObjLoadTxRect(gdl, ...) \ + gD_(gdl, gsSPObjLoadTxRect, __VA_ARGS__) +#define gSPObjLoadTxRectR(gdl, ...) \ + gD_(gdl, gsSPObjLoadTxRectR, __VA_ARGS__) +#define gSPObjLoadTxSprite(gdl, ...) \ + gD_(gdl, gsSPObjLoadTxSprite, __VA_ARGS__) +#define gSPSelectDL(gdl, ...) \ + gD_(gdl, gsSPSelectDL, __VA_ARGS__) +#define gSPSelectBranchDL(gdl, ...) \ + gD_(gdl, gsSPSelectBranchDL, __VA_ARGS__) +#define gDPLoadTLUTCmd(gdl, ...) \ + gD_(gdl, gsDPLoadTLUTCmd, __VA_ARGS__) +#define gDPLoadTLUT(gdl, ...) \ + gD_(gdl, gsDPLoadTLUT, __VA_ARGS__) +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define gBranchZ(gdl, ...) \ + gD_(gdl, gsBranchZ, __VA_ARGS__) +#endif +#define gDisplayList(gdl, ...) \ + gD_(gdl, gsDisplayList, __VA_ARGS__) +#define gDPHalf1(gdl, ...) \ + gD_(gdl, gsDPHalf1, __VA_ARGS__) +#define gDPHalf2(gdl, ...) \ + gD_(gdl, gsDPHalf2, __VA_ARGS__) +#define gDPLoadTile(gdl, ...) \ + gD_(gdl, gsDPLoadTile, __VA_ARGS__) +#define gDPSetCombine(gdl, ...) \ + gD_(gdl, gsDPSetCombine, __VA_ARGS__) +#if defined(F3DEX_GBI_2) +# define gSPGeometryMode(gdl, ...) \ + gD_(gdl, gsSPGeometryMode, __VA_ARGS__) +#endif +#define gSPSetOtherMode(gdl, ...) \ + gD_(gdl, gsSPSetOtherMode, __VA_ARGS__) +#define gSPSetOtherModeLo(gdl, ...) \ + gD_(gdl, gsSPSetOtherModeLo, __VA_ARGS__) +#define gSPSetOtherModeHi(gdl, ...) \ + gD_(gdl, gsSPSetOtherModeHi, __VA_ARGS__) +#define gDPSetOtherMode(gdl, ...) \ + gD_(gdl, gsDPSetOtherMode, __VA_ARGS__) +#define gMoveWd(gdl, ...) \ + gD_(gdl, gsMoveWd, __VA_ARGS__) +#define gMoveMem(gdl, ...) \ + gD_(gdl, gsMoveMem, __VA_ARGS__) +#if defined(F3DEX_GBI_2) +# define gSPDma_io(gdl, ...) \ + gD_(gdl, gsSPDma_io, __VA_ARGS__) +# define gSPDmaRead(gdl, ...) \ + gD_(gdl, gsSPDmaRead, __VA_ARGS__) +# define gSPDmaWrite(gdl, ...) \ + gD_(gdl, gsSPDmaWrite, __VA_ARGS__) +#endif +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +# define gLoadUcode(gdl, ...) \ + gD_(gdl, gsLoadUcode, __VA_ARGS__) +# define gSPLoadUcodeEx(gdl, ...) \ + gD_(gdl, gsSPLoadUcodeEx, __VA_ARGS__) +#endif +#define gTexRect(gdl, ...) \ + gD_(gdl, gsTexRect, __VA_ARGS__) +#define gTexRectFlip(gdl, ...) \ + gD_(gdl, gsTexRectFlip, __VA_ARGS__) +#define gSPNoOp(gdl) \ + gDisplayListPut(gdl, gsSPNoOp()) +#define gDPWord(gdl, ...) \ + gD_(gdl, gsDPWord, __VA_ARGS__) +#if defined(F3DEX_GBI_2) +# define gSpecial3(gdl, ...) \ + gD_(gdl, gsSpecial3, __VA_ARGS__) +# define gSpecial2(gdl, ...) \ + gD_(gdl, gsSpecial2, __VA_ARGS__) +# define gSpecial1(gdl, ...) \ + gD_(gdl, gsSpecial1, __VA_ARGS__) +#endif + +/* data types and structures */ +typedef uint8_t qu08_t; +typedef uint16_t qu016_t; +typedef int16_t qs48_t; +typedef int16_t qs510_t; +typedef uint16_t qu510_t; +typedef int16_t qs102_t; +typedef uint16_t qu102_t; +typedef int16_t qs105_t; +typedef uint16_t qu105_t; +typedef int16_t qs132_t; +typedef int16_t qs142_t; +typedef int32_t qs1516_t; +typedef int32_t qs1616_t; +typedef int32_t qs205_t; + +typedef uint16_t g_bglt_t; +typedef uint8_t g_ifmt_t; +typedef uint8_t g_isiz_t; +typedef uint16_t g_bgf_t; +typedef uint8_t g_objf_t; +typedef uint32_t g_objlt_t; + +typedef struct +{ + _Alignas(8) + uint32_t hi; + uint32_t lo; +} Gfx; + +typedef struct +{ + int32_t x1; + int32_t y1; + int32_t x2; + int32_t y2; +} Hilite_t; + +typedef union +{ + _Alignas(8) + Hilite_t h; +} Hilite; + +typedef int32_t Mtx_t[4][4]; + +typedef union +{ + _Alignas(8) + Mtx_t m; + int32_t l[16]; + struct + { + int16_t i[16]; + uint16_t f[16]; + }; +} Mtx; + +typedef struct +{ + uint8_t col[3]; + char pad1; + uint8_t colc[3]; + char pad2; + int8_t dir[3]; + char pad3; +} Light_t; + +typedef union +{ + _Alignas(8) + Light_t l; +} Light; + +typedef struct +{ + Light l[2]; +} LookAt; + +typedef struct +{ + uint8_t col[3]; + char pad1; + uint8_t colc[3]; + char pad2; +} Ambient_t; + +typedef union +{ + _Alignas(8) + Ambient_t l; +} Ambient; + +typedef struct +{ + Ambient a; + Light l[1]; +} Lights0, Lights1; + +typedef struct +{ + Ambient a; + Light l[2]; +} Lights2; + +typedef struct +{ + Ambient a; + Light l[3]; +} Lights3; + +typedef struct +{ + Ambient a; + Light l[4]; +} Lights4; + +typedef struct +{ + Ambient a; + Light l[5]; +} Lights5; + +typedef struct +{ + Ambient a; + Light l[6]; +} Lights6; + +typedef struct +{ + Ambient a; + Light l[7]; +} Lightsn, Lights7; + +typedef struct +{ + int16_t ob[3]; + uint16_t flag; + qs105_t tc[2]; + uint8_t cn[4]; +} Vtx_t; + +typedef struct +{ + int16_t ob[3]; + uint16_t flag; + qs105_t tc[2]; + int8_t n[3]; + uint8_t a; +} Vtx_tn; + +typedef union +{ + _Alignas(8) + Vtx_t v; + Vtx_tn n; +} Vtx; + +typedef struct +{ + qs142_t vscale[4]; + qs142_t vtrans[4]; +} Vp_t; + +typedef union +{ + _Alignas(8) + Vp_t vp; +} Vp; + +typedef struct +{ + qs1516_t A; + qs1516_t B; + qs1516_t C; + qs1516_t D; + qs102_t X; + qs102_t Y; + qu510_t BaseScaleX; + qu510_t BaseScaleY; +} uObjMtx_t; + +typedef union +{ + _Alignas(8) + uObjMtx_t m; +} uObjMtx; + +typedef struct +{ + qs102_t X; + qs102_t Y; + qu510_t BaseScaleX; + qu510_t BaseScaleY; +} uObjSubMtx_t; + +typedef union +{ + _Alignas(8) + uObjSubMtx_t m; +} uObjSubMtx; + +typedef struct +{ + qu105_t imageX; + qu102_t imageW; + qs102_t frameX; + qu102_t frameW; + qu105_t imageY; + qu102_t imageH; + qs102_t frameY; + qu102_t frameH; + uint64_t * imagePtr; + g_bglt_t imageLoad; + g_ifmt_t imageFmt; + g_isiz_t imageSiz; + uint16_t imagePal; + g_bgf_t imageFlip; + uint16_t tmemW; + qs132_t tmemH; + uint16_t tmemLoadSH; + uint16_t tmemLoadTH; + uint16_t tmemSizeW; + uint16_t tmemSize; +} uObjBg_t; + +typedef struct +{ + qu105_t imageX; + qu102_t imageW; + qs102_t frameX; + qu102_t frameW; + qu105_t imageY; + qu102_t imageH; + qs102_t frameY; + qu102_t frameH; + uint64_t * imagePtr; + g_bglt_t imageLoad; + g_ifmt_t imageFmt; + g_isiz_t imageSiz; + uint16_t imagePal; + g_bgf_t imageFlip; + qu510_t scaleW; + qu510_t scaleH; + qs205_t imageYorig; + char padding[4]; +} uObjScaleBg_t; + +typedef union +{ + _Alignas(8) + uObjBg_t b; + uObjScaleBg_t s; +} uObjBg; + +typedef struct +{ + qs102_t objX; + qu510_t scaleW; + qu105_t imageW; + uint16_t paddingX; + qs102_t objY; + qu510_t scaleH; + qu105_t imageH; + uint16_t paddingY; + uint16_t imageStride; + uint16_t imageAdrs; + g_ifmt_t imageFmt; + g_isiz_t imageSiz; + uint16_t imagePal; + g_objf_t imageFlags; +} uObjSprite_t; + +typedef union +{ + _Alignas(8) + uObjSprite_t s; +} uObjSprite; + +typedef struct +{ + g_objlt_t type; + uint64_t * image; + uint16_t tmem; + uint16_t tsize; + uint16_t tline; + uint16_t sid; + uint32_t flag; + uint32_t mask; +} uObjTxtrBlock_t; + +typedef struct +{ + g_objlt_t type; + uint64_t * image; + uint16_t tmem; + uint16_t twidth; + uint16_t theight; + uint16_t sid; + uint32_t flag; + uint32_t mask; +} uObjTxtrTile_t; + +typedef struct +{ + g_objlt_t type; + uint64_t * image; + uint16_t phead; + uint16_t pnum; + uint16_t zero; + uint16_t sid; + uint32_t flag; + uint32_t mask; +} uObjTxtrTLUT_t; + +typedef union +{ + _Alignas(8) + uObjTxtrBlock_t block; + uObjTxtrTile_t tile; + uObjTxtrTLUT_t tlut; +} uObjTxtr; + +typedef struct +{ + uObjTxtr txtr; + uObjSprite sprite; +} uObjTxSprite; + +/* rectangle scissoring macros */ +#define gScC_(c) ((c) < 0 ? 0 : (c)) +#define gScD_(t, c, d) \ + ( \ + (c) < 0 ? \ + ( \ + (d) < 0 ? \ + (t) + (c) * (d) / 0x80 : \ + (t) - (c) * (d) / 0x80 \ + ) : \ + (t) \ + ) + +/* texture loading helper macros */ +#define G_SIZ_LDSIZ(siz) ((siz) < G_IM_SIZ_16b ? G_IM_SIZ_16b : (siz)) +#define G_SIZ_BITS(siz) (4 << gI_(siz)) +#define G_SIZ_LDBITS(siz) ((siz) < G_IM_SIZ_16b ? G_SIZ_BITS(siz) : 16) +#define G_DXT(siz, width) \ + ( \ + (width) * G_SIZ_BITS(siz) > 64 ? \ + ((1 << 11) + (width) * G_SIZ_BITS(siz) / 64 - 1) / \ + ((width) * G_SIZ_BITS(siz) / 64) : \ + (1 << 11) \ + ) +#define G_LTB_LRS(width, height, siz) \ + ( \ + (((width) * (height) + 1) * G_SIZ_BITS(siz) - 1) / \ + G_SIZ_BITS(G_SIZ_LDSIZ(siz)) - 1 \ + ) +#define G_LDBLK_TXL(txl) \ + ( \ + (txl) > G_TX_LDBLK_MAX_TXL ? \ + G_TX_LDBLK_MAX_TXL : \ + (txl) \ + ) + +/* depth value macros */ +#define gZp_(zval, near, far) \ + ( \ + (1.f - (float)(near) / (float)(zval)) / \ + (1.f - (float)(near) / (float)(far)) \ + ) +#define gZo_(zval, near, far) \ + ( \ + ((float)(zval) - (float)(near)) / \ + ((float)(far) - (float)(near)) \ + ) +#define gZf_(zval, near, far, flag) \ + qs1616 \ + ( \ + (flag) == G_BZ_PERSP ? \ + gZp_(zval, near, far) : \ + gZo_(zval, near, far) \ + ) +#define G_DEPTOZSrg(zval, near, far, flag, zmin, zmax) \ + ( \ + gZf_(zval, near, far, flag) * \ + ((int32_t)((zmax) - (zmin)) & ~(int32_t)1) + \ + qs1616(zmin) \ + ) +#define G_DEPTOZS(zval, near, far, flag) \ + G_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ) + +/* vertex ordering macros */ +#define gV2_(v0, v1, flag) \ + ( \ + (flag) == 0 ? gI_(v0) : \ + gI_(v1) \ + ) +#define gV3_(v0, v1, v2, flag) \ + ( \ + (flag) == 0 ? gI_(v0) : \ + (flag) == 1 ? gI_(v1) : \ + gI_(v2) \ + ) +#define gV4_(v0, v1, v2, v3, flag) \ + ( \ + (flag) == 0 ? gI_(v0) : \ + (flag) == 1 ? gI_(v1) : \ + (flag) == 2 ? gI_(v2) : \ + gI_(v3) \ + ) + +/* sprite texture parameter macros */ +#define GS_PIX2TMEM(pix, siz) ((pix) * G_SIZ_BITS(siz) / 64) +#define GS_TB_TSIZE(pix, siz) (GS_PIX2TMEM(pix, siz) - 1) +#define GS_TB_TLINE(pix, siz) (((1 << 11) - 1) / GS_PIX2TMEM(pix, siz) + 1) +#define GS_TT_TWIDTH(pix, siz) (GS_PIX2TMEM(pix, siz) * 4 - 1) +#define GS_TT_THEIGHT(pix, siz) ((pix) * 4 - 1) +#define GS_PAL_HEAD(head) ((head) + 256) +#define GS_PAL_NUM(num) ((num) - 1) + +/* fixed-point conversion macros */ +#define qu08(n) ((qu08_t)((n) * 0x100)) +#define qu016(n) ((qu016_t)((n) * 0x10000)) +#define qs48(n) ((qs48_t)((n) * 0x0100)) +#define qs510(n) ((qs510_t)((n) * 0x0400)) +#define qu510(n) ((qu510_t)((n) * 0x0400)) +#define qs102(n) ((qs102_t)((n) * 0x0004)) +#define qu102(n) ((qu102_t)((n) * 0x0004)) +#define qs105(n) ((qs105_t)((n) * 0x0020)) +#define qu105(n) ((qu105_t)((n) * 0x0020)) +#define qs132(n) ((qs132_t)((n) * 0x0004)) +#define qs142(n) ((qs142_t)((n) * 0x0004)) +#define qs1516(n) ((qs1516_t)((n) * 0x00010000)) +#define qs1616(n) ((qs1616_t)((n) * 0x00010000)) +#define qs205(n) ((qs205_t)((n) * 0x00000020)) + +/* private helper macros */ +#define gI_(i) ((uint32_t)(i)) +#define gL_(l) ((uint64_t)(l)) +#define gF_(i, n, s) ((gI_(i) & ((gI_(1) << (n)) - 1)) << (s)) +#define gFL_(l, n, s) ((gL_(l) & ((gL_(1) << (n)) - 1)) << (s)) +#define gO_(opc, hi, lo) ((Gfx){gF_(opc, 8, 24) | gI_(hi), gI_(lo)}) +#define gD_(gdl, m, ...) gDisplayListPut(gdl, m(__VA_ARGS__)) + +#endif diff --git a/extern/libgfxd/gfxd.c b/extern/libgfxd/gfxd.c new file mode 100644 index 000000000..76d7ded8a --- /dev/null +++ b/extern/libgfxd/gfxd.c @@ -0,0 +1,863 @@ +#include +#include +#include +#include +#include +#ifdef _WIN32 +# include +# define read _read +# define write _write +#else +# include +#endif +#include "gbi.h" +#include "gfxd.h" +#include "priv.h" + +static TLOCAL struct gfxd_state state; + +static int buffer_input_fn(void *buf, int count) +{ + if (count > config.input_buf_size) + count = config.input_buf_size; + memcpy(buf, config.input_buf, count); + config.input_buf += count; + config.input_buf_size -= count; + return count; +} + +static int buffer_output_fn(const char *buf, int count) +{ + if (count > config.output_buf_size) + count = config.output_buf_size; + memcpy(config.output_buf, buf, count); + config.output_buf += count; + config.output_buf_size -= count; + return count; +} + +static int fd_input_fn(void *buf, int count) +{ + return read(config.input_fd, buf, count); +} + +static int fd_output_fn(const char *buf, int count) +{ + return write(config.output_fd, buf, count); +} + +static void swap_words(Gfx *gfx) +{ + uint8_t b[8]; + uint8_t *pw = (void *) gfx; + uint8_t *pb = b; + + int endian = config.endian; + int wordsize = config.wordsize; + + for (int i = 0; i < 8 / wordsize; i++) + { + if (endian == gfxd_endian_host) + { + switch (wordsize) + { + case 1: + { + uint8_t w = *(uint8_t *) pw; + *pb++ = w >> 0; + break; + } + case 2: + { + uint16_t w = *(uint16_t *) pw; + *pb++ = w >> 8; + *pb++ = w >> 0; + break; + } + case 4: + { + uint32_t w = *(uint32_t *) pw; + *pb++ = w >> 24; + *pb++ = w >> 16; + *pb++ = w >> 8; + *pb++ = w >> 0; + break; + } + case 8: + { + uint64_t w = *(uint64_t *) pw; + *pb++ = w >> 56; + *pb++ = w >> 48; + *pb++ = w >> 40; + *pb++ = w >> 32; + *pb++ = w >> 24; + *pb++ = w >> 16; + *pb++ = w >> 8; + *pb++ = w >> 0; + break; + } + } + } + else + { + for (int j = 0; j < wordsize; j++) + { + if (endian == gfxd_endian_little) + *pb++ = pw[wordsize - 1 - j]; + else + *pb++ = pw[j]; + } + } + pw += wordsize; + } + + gfx->hi = ((uint32_t) b[0] << 24) + | ((uint32_t) b[1] << 16) + | ((uint32_t) b[2] << 8) + | ((uint32_t) b[3] << 0); + gfx->lo = ((uint32_t) b[4] << 24) + | ((uint32_t) b[5] << 16) + | ((uint32_t) b[6] << 8) + | ((uint32_t) b[7] << 0); +} + +static void get_more_input(void) +{ + if (state.end_input != 0) + return; + + char *recv_buf = (void *) &state.gfx[0]; + + while (state.n_gfx < sizeof(state.gfx) / sizeof(state.gfx[0])) + { + int n_read = sizeof(state.gfx) - state.n_byte; + n_read = config.input_fn(&recv_buf[state.n_byte], n_read); + if (n_read == 0) + return; + state.n_byte += n_read; + + while (state.n_gfx < state.n_byte / sizeof(Gfx)) + { + Gfx gfx = state.gfx[state.n_gfx]; + gfxd_macro_t *m = &state.macro[state.n_gfx]; + + swap_words(&gfx); + + int ret = config.ucode->disas_fn(m, gfx.hi, gfx.lo); + if (ret != 0 && config.stop_on_invalid != 0) + { + state.end_input = 1; + state.ret = ret; + return; + } + + state.n_gfx++; + } + } +} + +static int32_t typed_arg_i(int type, int idx) +{ + const gfxd_value_t *v = gfxd_value_by_type(type, idx); + if (v != NULL) + return v->i; + else + return -1; +} + +static uint32_t typed_arg_u(int type, int idx) +{ + const gfxd_value_t *v = gfxd_value_by_type(type, idx); + if (v != NULL) + return v->u; + else + return 0; +} + + +TLOCAL struct gfxd_config config = +{ + .ucode = NULL, + .endian = gfxd_endian_big, + .wordsize = 4, + .arg = NULL, + + .stop_on_invalid = 1, + .stop_on_end = 1, + .emit_dec_color = 0, + .emit_q_macro = 0, + .emit_ext_macro = 0, + + .input_buf = NULL, + .input_buf_size = 0, + .input_fn = &buffer_input_fn, + + .output_buf = NULL, + .output_buf_size = 0, + .output_fn = &buffer_output_fn, + + .macro_fn = &gfxd_macro_dflt, + .arg_fn = &gfxd_arg_dflt, + + .tlut_fn = NULL, + .timg_fn = NULL, + .cimg_fn = NULL, + .zimg_fn = NULL, + .dl_fn = NULL, + .mtx_fn = NULL, + .lookat_fn = NULL, + .light_fn = NULL, + .seg_fn = NULL, + .vtx_fn = NULL, + .vp_fn = NULL, + .uctext_fn = NULL, + .ucdata_fn = NULL, + .dram_fn = NULL, +}; + +void gfxd_input_buffer(const void *buf, int size) +{ + config.input_buf = buf; + config.input_buf_size = size; + config.input_fn = &buffer_input_fn; +} + +void gfxd_output_buffer(char *buf, int size) +{ + config.output_buf = buf; + config.output_buf_size = size; + config.output_fn = &buffer_output_fn; +} + +void gfxd_input_fd(int fd) +{ + config.input_fd = fd; + config.input_fn = &fd_input_fn; +} + +void gfxd_output_fd(int fd) +{ + config.output_fd = fd; + config.output_fn = &fd_output_fn; +} + +void gfxd_input_callback(gfxd_input_fn_t *fn) +{ + if (fn != NULL) + config.input_fn = fn; + else + gfxd_input_buffer(NULL, 0); +} + +void gfxd_output_callback(gfxd_output_fn_t *fn) +{ + if (fn != NULL) + config.output_fn = fn; + else + gfxd_output_buffer(NULL, 0); +} + +void gfxd_macro_fn(gfxd_macro_fn_t *fn) +{ + if (fn != NULL) + config.macro_fn = fn; + else + config.macro_fn = gfxd_macro_dflt; +} + +void gfxd_arg_fn(gfxd_arg_fn_t *fn) +{ + if (fn != NULL) + config.arg_fn = fn; + else + config.arg_fn = gfxd_arg_dflt; +} + +int gfxd_write(const void *buf, int count) +{ + return config.output_fn(buf, count); +} + +int gfxd_puts(const char *str) +{ + return gfxd_write(str, strlen(str)); +} + +int gfxd_printf(const char *fmt, ...) +{ + char s[256]; + + va_list arg; + va_start(arg, fmt); + int n = vsnprintf(s, sizeof(s), fmt, arg); + va_end(arg); + + if (n > sizeof(s) - 1) + n = sizeof(s) - 1; + + return gfxd_write(s, n); +} + +int gfxd_print_value(int type, const gfxd_value_t *value) +{ + return config.ucode->arg_tbl[type].fn(value); +} + +int gfxd_macro_dflt(void) +{ + gfxd_macro_t *m = &state.macro[0]; + const gfxd_macro_type_t *t = &config.ucode->macro_tbl[m->id]; + + const char *name = gfxd_macro_name(); + if (name == NULL) + { + if (config.arg != NULL) + { + gfxd_puts(config.arg); + gfxd_puts(" = "); + } + + gfxd_puts("(Gfx){"); + } + else + { + gfxd_puts(name); + gfxd_puts("("); + + if (config.arg != NULL) + { + gfxd_puts(config.arg); + if (t->n_arg != 0) + gfxd_puts(", "); + } + } + + for (int i = 0; i < t->n_arg; i++) + { + if (i != 0) + gfxd_puts(", "); + + config.arg_fn(i); + } + + if (name == NULL) + gfxd_puts("}"); + else + gfxd_puts(")"); + + return 0; +} + +int gfxd_arg_callbacks(int arg_num) +{ + int id = gfxd_macro_id(); + + switch (gfxd_arg_type(arg_num)) + { + case gfxd_Tlut: + { + if (config.tlut_fn != NULL) + { + int32_t num; + if (id == gfxd_DPLoadTLUT_pal16) + num = 16; + else if (id == gfxd_DPLoadTLUT_pal256) + num = 256; + else + num = typed_arg_i(gfxd_Num, 0); + return config.tlut_fn( + typed_arg_u(gfxd_Tlut, 0), + typed_arg_i(gfxd_Pal, 0), + num); + } + break; + } + case gfxd_Timg: + { + if (config.timg_fn != NULL) + { + int32_t siz = typed_arg_i(gfxd_Siz, 0); + if (siz == -1) + siz = G_IM_SIZ_4b; + return config.timg_fn( + typed_arg_u(gfxd_Timg, 0), + typed_arg_i(gfxd_Fmt, 0), + siz, + typed_arg_i(gfxd_Dim, 0), + typed_arg_i(gfxd_Dim, 1), + typed_arg_i(gfxd_Pal, 0)); + } + break; + } + case gfxd_Cimg: + { + if (config.cimg_fn != NULL) + { + return config.cimg_fn( + typed_arg_u(gfxd_Cimg, 0), + typed_arg_i(gfxd_Fmt, 0), + typed_arg_i(gfxd_Siz, 0), + typed_arg_i(gfxd_Dim, 0)); + } + break; + } + case gfxd_Zimg: + { + if (config.zimg_fn != NULL) + { + return config.zimg_fn( + typed_arg_u(gfxd_Zimg, 0)); + } + break; + } + case gfxd_Dl: + { + if (config.dl_fn != NULL) + { + return config.dl_fn( + typed_arg_u(gfxd_Dl, 0)); + } + break; + } + case gfxd_Mtxptr: + { + if (config.mtx_fn != NULL) + { + return config.mtx_fn( + typed_arg_u(gfxd_Mtxptr, 0)); + } + break; + } + case gfxd_Lookatptr: + { + if (config.lookat_fn != NULL) + { + int32_t num; + if (id == gfxd_SPLookAt) + num = 2; + else + num = 1; + return config.lookat_fn( + typed_arg_u(gfxd_Lookatptr, 0), + num); + } + break; + } + case gfxd_Lightptr: + { + if (config.light_fn != NULL) + { + int32_t num; + if (id == gfxd_SPSetLights1) + num = 1; + else if (id == gfxd_SPSetLights2) + num = 2; + else if (id == gfxd_SPSetLights3) + num = 3; + else if (id == gfxd_SPSetLights4) + num = 4; + else if (id == gfxd_SPSetLights5) + num = 5; + else if (id == gfxd_SPSetLights6) + num = 6; + else if (id == gfxd_SPSetLights7) + num = 7; + else + num = 1; + return config.light_fn( + typed_arg_u(gfxd_Lightptr, 0), + num); + } + break; + + } + case gfxd_Segptr: + { + if (config.seg_fn != NULL) + { + return config.seg_fn( + typed_arg_u(gfxd_Segptr, 0), + typed_arg_i(gfxd_Seg, 0)); + } + break; + } + case gfxd_Vtxptr: + { + if (config.vtx_fn != NULL) + { + return config.vtx_fn( + typed_arg_u(gfxd_Vtxptr, 0), + typed_arg_i(gfxd_Num, 0)); + } + break; + } + case gfxd_Vpptr: + { + if (config.vp_fn != NULL) + { + return config.vp_fn( + typed_arg_u(gfxd_Vpptr, 0)); + } + break; + } + case gfxd_Uctext: + { + if (config.uctext_fn != NULL) + { + return config.uctext_fn( + typed_arg_u(gfxd_Uctext, 0), + 0x1000); + } + break; + } + case gfxd_Ucdata: + { + if (config.ucdata_fn != NULL) + { + uint32_t size; + if (id == gfxd_SPLoadUcodeEx) + size = typed_arg_u(gfxd_Size, 0); + else + size = 0x800; + return config.ucdata_fn( + typed_arg_u(gfxd_Ucdata, 0), + size); + } + break; + } + case gfxd_Dram: + { + if (config.dram_fn != NULL) + { + return config.dram_fn( + typed_arg_u(gfxd_Dram, 0), + typed_arg_u(gfxd_Size, 0)); + } + break; + } + } + + return 0; +} + +void gfxd_arg_dflt(int arg_num) +{ + if (gfxd_arg_callbacks(arg_num) == 0) + { + gfxd_arg_t *a = &state.macro[0].arg[arg_num]; + + gfxd_print_value(a->type, &a->value); + } +} + +void gfxd_tlut_callback(gfxd_tlut_fn_t *fn) +{ + config.tlut_fn = fn; +} + +void gfxd_timg_callback(gfxd_timg_fn_t *fn) +{ + config.timg_fn = fn; +} + +void gfxd_cimg_callback(gfxd_cimg_fn_t *fn) +{ + config.cimg_fn = fn; +} + +void gfxd_zimg_callback(gfxd_zimg_fn_t *fn) +{ + config.zimg_fn = fn; +} + +void gfxd_dl_callback(gfxd_dl_fn_t *fn) +{ + config.dl_fn = fn; +} + +void gfxd_mtx_callback(gfxd_mtx_fn_t *fn) +{ + config.mtx_fn = fn; +} + +void gfxd_lookat_callback(gfxd_lookat_fn_t *fn) +{ + config.lookat_fn = fn; +} + +void gfxd_light_callback(gfxd_light_fn_t *fn) +{ + config.light_fn = fn; +} + +void gfxd_seg_callback(gfxd_seg_fn_t *fn) +{ + config.seg_fn = fn; +} + +void gfxd_vtx_callback(gfxd_vtx_fn_t *fn) +{ + config.vtx_fn = fn; +} + +void gfxd_vp_callback(gfxd_vp_fn_t *fn) +{ + config.vp_fn = fn; +} + +void gfxd_uctext_callback(gfxd_uctext_fn_t *fn) +{ + config.uctext_fn = fn; +} + +void gfxd_ucdata_callback(gfxd_ucdata_fn_t *fn) +{ + config.ucdata_fn = fn; +} + +void gfxd_dram_callback(gfxd_dram_fn_t *fn) +{ + config.dram_fn = fn; +} + +void gfxd_target(gfxd_ucode_t ucode) +{ + config.ucode = ucode; +} + +void gfxd_endian(int endian, int wordsize) +{ + config.endian = endian; + config.wordsize = wordsize; +} + +void gfxd_dynamic(const char *arg) +{ + config.arg = arg; +} + +void gfxd_enable(int cap) +{ + switch (cap) + { + case gfxd_stop_on_invalid: + config.stop_on_invalid = 1; + break; + + case gfxd_stop_on_end: + config.stop_on_end = 1; + break; + + case gfxd_emit_dec_color: + config.emit_dec_color = 1; + break; + + case gfxd_emit_q_macro: + config.emit_q_macro = 1; + break; + + case gfxd_emit_ext_macro: + config.emit_ext_macro = 1; + break; + } +} + +void gfxd_disable(int cap) +{ + switch (cap) + { + case gfxd_stop_on_invalid: + config.stop_on_invalid = 0; + return; + + case gfxd_stop_on_end: + config.stop_on_end = 0; + return; + + case gfxd_emit_dec_color: + config.emit_dec_color = 0; + break; + + case gfxd_emit_q_macro: + config.emit_q_macro = 0; + break; + + case gfxd_emit_ext_macro: + config.emit_ext_macro = 0; + break; + } +} + +void gfxd_udata_set(void *ptr) +{ + config.udata = ptr; +} + +void *gfxd_udata_get(void) +{ + return config.udata; +} + +int gfxd_execute(void) +{ + state.macro_offset = 0; + state.n_byte = 0; + state.n_gfx = 0; + state.end_input = 0; + state.ret = 0; + + for (;;) + { + get_more_input(); + if (state.n_gfx == 0) + break; + + gfxd_macro_t *m = &state.macro[0]; + config.ucode->combine_fn(m, state.n_gfx); + + const gfxd_macro_type_t *t = &config.ucode->macro_tbl[m->id]; + if (t->ext != 0 && config.emit_ext_macro == 0) + { + Gfx gfx = state.gfx[0]; + swap_words(&gfx); + + t = &config.ucode->macro_tbl[gfxd_Invalid]; + t->disas_fn(m, gfx.hi, gfx.lo); + } + + int ret = config.macro_fn(); + if (ret != 0) + { + state.ret = ret; + break; + } + + if (config.stop_on_end != 0 + && (m->id == gfxd_SPBranchList + || m->id == gfxd_SPEndDisplayList)) + { + break; + } + + int n_pop = config.ucode->macro_tbl[m->id].n_gfx; + int n_rem = state.n_gfx - n_pop; + { + int n_byte = n_rem * sizeof(gfxd_macro_t); + memmove(&state.macro[0], &state.macro[n_pop], n_byte); + state.n_gfx = n_rem; + } + { + int n_byte = n_rem * sizeof(Gfx); + memmove(&state.gfx[0], &state.gfx[n_pop], n_byte); + state.n_byte = n_byte; + } + state.macro_offset += n_pop * sizeof(Gfx); + } + + return state.ret; +} + +int gfxd_macro_offset(void) +{ + return state.macro_offset; +} + +int gfxd_macro_packets(void) +{ + return config.ucode->macro_tbl[state.macro[0].id].n_gfx; +} + +const void *gfxd_macro_data(void) +{ + return state.gfx; +} + +int gfxd_macro_id(void) +{ + return state.macro[0].id; +} + +const char *gfxd_macro_name(void) +{ + int id = state.macro[0].id; + const gfxd_macro_type_t *t = &config.ucode->macro_tbl[id]; + + if (t->prefix == NULL && t->suffix == NULL) + { + return NULL; + } + else + { + static TLOCAL char buf[32]; + + char *p = buf; + if (t->prefix != NULL) + { + const char *s = t->prefix; + while (*s != '\0') + *p++ = *s++; + } + *p++ = 'g'; + if (config.arg == NULL) + *p++ = 's'; + if (t->suffix != NULL) + { + const char *s = t->suffix; + while (*s != '\0') + *p++ = *s++; + } + *p++ = '\0'; + + return buf; + } +} + +int gfxd_arg_count(void) +{ + return config.ucode->macro_tbl[state.macro[0].id].n_arg; +} + +int gfxd_arg_type(int arg_num) +{ + return state.macro[0].arg[arg_num].type; +} + +const char *gfxd_arg_name(int arg_num) +{ + return state.macro[0].arg[arg_num].name; +} + +int gfxd_arg_fmt(int arg_num) +{ + return config.ucode->arg_tbl[state.macro[0].arg[arg_num].type].fmt; +} + +const gfxd_value_t *gfxd_arg_value(int arg_num) +{ + return &state.macro[0].arg[arg_num].value; +} + +const gfxd_value_t *gfxd_value_by_type(int type, int idx) +{ + gfxd_macro_t *m = &state.macro[0]; + const gfxd_macro_type_t *t = &config.ucode->macro_tbl[m->id]; + + for (int i = 0; i < t->n_arg; i++) + { + gfxd_arg_t *a = &m->arg[i]; + if (a->type == type) + { + if (idx == 0) + return &a->value; + else + idx--; + } + } + + return NULL; +} + +int gfxd_arg_valid(int arg_num) +{ + return state.macro[0].arg[arg_num].bad == 0; +} diff --git a/extern/libgfxd/gfxd.h b/extern/libgfxd/gfxd.h new file mode 100644 index 000000000..268bbfa10 --- /dev/null +++ b/extern/libgfxd/gfxd.h @@ -0,0 +1,387 @@ +#ifndef GFXD_H +#define GFXD_H +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +enum +{ + gfxd_Word, /* generic word */ + gfxd_Opcode, /* command opcode (G_*) */ + gfxd_Coordi, /* integer coordinate */ + gfxd_Coordq, /* fractional (q10.2) coordinate */ + gfxd_Pal, /* palette index */ + gfxd_Tlut, /* tlut pointer */ + gfxd_Timg, /* texture image pointer */ + gfxd_Tmem, /* tmem address */ + gfxd_Tile, /* tile index */ + gfxd_Fmt, /* texture format */ + gfxd_Siz, /* texture pixel size */ + gfxd_Dim, /* integer dimension (width / height) */ + gfxd_Cm, /* clamp and mirror flags */ + gfxd_Tm, /* tile mask */ + gfxd_Ts, /* tile shift */ + gfxd_Dxt, /* texture dxt */ + gfxd_Tag, /* generic tag */ + gfxd_Pm, /* pipeline mode */ + gfxd_Colorpart, /* color component */ + gfxd_Color, /* color */ + gfxd_Lodfrac, /* lod fraction (q0.8) */ + gfxd_Cimg, /* color image pointer */ + gfxd_Zimg, /* depth image pointer */ + gfxd_Ac, /* alpha compare mode */ + gfxd_Ad, /* alpha dither mode */ + gfxd_Cd, /* color dither mode */ + gfxd_Ccpre, /* color combiner preset index */ + gfxd_Ccmuxa, /* color mux operand (a) */ + gfxd_Ccmuxb, /* color mux operand (b) */ + gfxd_Ccmuxc, /* color mux operand (c) */ + gfxd_Ccmuxd, /* color mux operand (d) */ + gfxd_Acmuxabd, /* alpha mux operand (a, b, or d) */ + gfxd_Acmuxc, /* alpha mux operand (c) */ + gfxd_Cv, /* color convert operand */ + gfxd_Tc, /* texture convert mode */ + gfxd_Cyc, /* cycle type */ + gfxd_Zs, /* depth source mode */ + gfxd_Ck, /* combine key mode */ + gfxd_Keyscale, /* combine key scale */ + gfxd_Keywidth, /* combine key width */ + gfxd_Zi, /* integer depth */ + gfxd_Rm1, /* cycle 1 render mode */ + gfxd_Rm2, /* cycle 2 render mode */ + gfxd_Sc, /* scissor mode */ + gfxd_Td, /* texture detail mode */ + gfxd_Tf, /* texture filter mode */ + gfxd_Tl, /* texture LOD mode */ + gfxd_Tt, /* textuure LUT mode */ + gfxd_Tp, /* texture perspective mode */ + gfxd_Line, /* texture line size */ + gfxd_Vtx, /* vertex index */ + gfxd_Vtxflag, /* vertex flag */ + gfxd_Dl, /* display list pointer */ + gfxd_Zraw, /* raw depth value (q16.16) */ + gfxd_Dlflag, /* display list flag */ + gfxd_Cr, /* clip ratio */ + gfxd_Num, /* element count */ + gfxd_Fogz, /* fog factor */ + gfxd_Fogp, /* fog position (0 - 1000) */ + gfxd_Mtxptr, /* matrix pointer */ + gfxd_Gm, /* geometry mode */ + gfxd_Mwo_matrix, /* matrix moveword offset */ + gfxd_Linewd, /* line width (1.5 + q7.1) */ + gfxd_Uctext, /* microcode text pointer */ + gfxd_Ucdata, /* microcode data pointer */ + gfxd_Size, /* data size */ + gfxd_Lookatptr, /* lookat pointer */ + gfxd_Mtxparam, /* matrix param */ + gfxd_Mtxstack, /* matrix param (stack select only) */ + gfxd_Mwo_point, /* vertex moveword offset */ + gfxd_Wscale, /* w-component scale (perspnorm) */ + gfxd_Seg, /* segment number */ + gfxd_Segptr, /* segment pointer */ + gfxd_Lightsn, /* dereferenced Lighstn pointer */ + gfxd_Numlights, /* light count (NUMLIGHTS_*) */ + gfxd_Lightnum, /* light number (LIGHT_*) */ + gfxd_Lightptr, /* light pointer */ + gfxd_Tcscale, /* texture coordinate scale */ + gfxd_Switch, /* on-off value */ + gfxd_St, /* vertex coordinate (q10.5) */ + gfxd_Stdelta, /* vertex coordinate delta (q5.10) */ + gfxd_Vtxptr, /* vertex pointer */ + gfxd_Vpptr, /* viewport pointer */ + gfxd_Dram, /* generic dram address */ + gfxd_Sftlo, /* othermode lo shift */ + gfxd_Othermodelo, /* othermode lo value */ + gfxd_Sfthi, /* othermode hi shift */ + gfxd_Othermodehi, /* othermode hi value */ + gfxd_Mw, /* moveword index */ + gfxd_Mwo, /* moveword offset */ + gfxd_Mwo_clip, /* clip ratio moveword offset */ + gfxd_Mwo_lightcol, /* light color moveword offset */ + gfxd_Mv, /* movemem index */ + gfxd_Mvo, /* movemem offset */ + gfxd_Dmem, /* dmem address */ + gfxd_Dmaflag, /* dma io flag */ +}; + +enum +{ + gfxd_Invalid, + gfxd_DPFillRectangle, + gfxd_DPFullSync, + gfxd_DPLoadSync, + gfxd_DPTileSync, + gfxd_DPPipeSync, + gfxd_DPLoadTLUT_pal16, + gfxd_DPLoadTLUT_pal256, + gfxd_DPLoadMultiBlockYuvS, + gfxd_DPLoadMultiBlockYuv, + gfxd_DPLoadMultiBlock_4bS, + gfxd_DPLoadMultiBlock_4b, + gfxd_DPLoadMultiBlockS, + gfxd_DPLoadMultiBlock, + gfxd__DPLoadTextureBlockYuvS, + gfxd__DPLoadTextureBlockYuv, + gfxd__DPLoadTextureBlock_4bS, + gfxd__DPLoadTextureBlock_4b, + gfxd__DPLoadTextureBlockS, + gfxd__DPLoadTextureBlock, + gfxd_DPLoadTextureBlockYuvS, + gfxd_DPLoadTextureBlockYuv, + gfxd_DPLoadTextureBlock_4bS, + gfxd_DPLoadTextureBlock_4b, + gfxd_DPLoadTextureBlockS, + gfxd_DPLoadTextureBlock, + gfxd_DPLoadMultiTileYuv, + gfxd_DPLoadMultiTile_4b, + gfxd_DPLoadMultiTile, + gfxd__DPLoadTextureTileYuv, + gfxd__DPLoadTextureTile_4b, + gfxd__DPLoadTextureTile, + gfxd_DPLoadTextureTileYuv, + gfxd_DPLoadTextureTile_4b, + gfxd_DPLoadTextureTile, + gfxd_DPLoadBlock, + gfxd_DPNoOp, + gfxd_DPNoOpTag, + gfxd_DPPipelineMode, + gfxd_DPSetBlendColor, + gfxd_DPSetEnvColor, + gfxd_DPSetFillColor, + gfxd_DPSetFogColor, + gfxd_DPSetPrimColor, + gfxd_DPSetColorImage, + gfxd_DPSetDepthImage, + gfxd_DPSetTextureImage, + gfxd_DPSetAlphaCompare, + gfxd_DPSetAlphaDither, + gfxd_DPSetColorDither, + gfxd_DPSetCombineMode, + gfxd_DPSetCombineLERP, + gfxd_DPSetConvert, + gfxd_DPSetTextureConvert, + gfxd_DPSetCycleType, + gfxd_DPSetDepthSource, + gfxd_DPSetCombineKey, + gfxd_DPSetKeyGB, + gfxd_DPSetKeyR, + gfxd_DPSetPrimDepth, + gfxd_DPSetRenderMode, + gfxd_DPSetScissor, + gfxd_DPSetScissorFrac, + gfxd_DPSetTextureDetail, + gfxd_DPSetTextureFilter, + gfxd_DPSetTextureLOD, + gfxd_DPSetTextureLUT, + gfxd_DPSetTexturePersp, + gfxd_DPSetTile, + gfxd_DPSetTileSize, + gfxd_SP1Triangle, + gfxd_SP2Triangles, + gfxd_SP1Quadrangle, + gfxd_SPBranchLessZraw, + gfxd_SPBranchList, + gfxd_SPClipRatio, + gfxd_SPCullDisplayList, + gfxd_SPDisplayList, + gfxd_SPEndDisplayList, + gfxd_SPFogFactor, + gfxd_SPFogPosition, + gfxd_SPForceMatrix, + gfxd_SPSetGeometryMode, + gfxd_SPClearGeometryMode, + gfxd_SPLoadGeometryMode, + gfxd_SPInsertMatrix, + gfxd_SPLine3D, + gfxd_SPLineW3D, + gfxd_SPLoadUcode, + gfxd_SPLookAtX, + gfxd_SPLookAtY, + gfxd_SPLookAt, + gfxd_SPMatrix, + gfxd_SPModifyVertex, + gfxd_SPPerspNormalize, + gfxd_SPPopMatrix, + gfxd_SPPopMatrixN, + gfxd_SPSegment, + gfxd_SPSetLights1, + gfxd_SPSetLights2, + gfxd_SPSetLights3, + gfxd_SPSetLights4, + gfxd_SPSetLights5, + gfxd_SPSetLights6, + gfxd_SPSetLights7, + gfxd_SPNumLights, + gfxd_SPLight, + gfxd_SPLightColor, + gfxd_SPTexture, + gfxd_SPTextureRectangle, + gfxd_SPTextureRectangleFlip, + gfxd_SPVertex, + gfxd_SPViewport, + gfxd_DPLoadTLUTCmd, + gfxd_DPLoadTLUT, + gfxd_BranchZ, + gfxd_DisplayList, + gfxd_DPHalf1, + gfxd_DPHalf2, + gfxd_DPWord, + gfxd_DPLoadTile, + gfxd_SPGeometryMode, + gfxd_SPSetOtherMode, + gfxd_SPSetOtherModeLo, + gfxd_SPSetOtherModeHi, + gfxd_DPSetOtherMode, + gfxd_MoveWd, + gfxd_MoveMem, + gfxd_SPDma_io, + gfxd_SPDmaRead, + gfxd_SPDmaWrite, + gfxd_LoadUcode, + gfxd_SPLoadUcodeEx, + gfxd_TexRect, + gfxd_TexRectFlip, + gfxd_SPNoOp, + gfxd_Special3, + gfxd_Special2, + gfxd_Special1, +}; + +enum +{ + gfxd_stop_on_invalid, + gfxd_stop_on_end, + gfxd_emit_dec_color, + gfxd_emit_q_macro, + gfxd_emit_ext_macro, +}; + +enum +{ + gfxd_endian_big, + gfxd_endian_little, + gfxd_endian_host, +}; + +enum +{ + gfxd_argfmt_i, + gfxd_argfmt_u, + gfxd_argfmt_f, +}; + +typedef union +{ + int32_t i; + uint32_t u; + float f; +} gfxd_value_t; + +typedef const struct gfxd_ucode *gfxd_ucode_t; + +typedef int gfxd_input_fn_t(void *buf, int count); +void gfxd_input_buffer(const void *buf, int size); +void gfxd_input_fd(int fd); +void gfxd_input_callback(gfxd_input_fn_t *fn); + +typedef int gfxd_output_fn_t(const char *buf, int count); +void gfxd_output_buffer(char *buf, int size); +void gfxd_output_fd(int fd); +void gfxd_output_callback(gfxd_output_fn_t *fn); + +typedef int gfxd_macro_fn_t(void); +void gfxd_macro_fn(gfxd_macro_fn_t *fn); +gfxd_macro_fn_t gfxd_macro_dflt; + +typedef void gfxd_arg_fn_t(int arg_num); +void gfxd_arg_fn(gfxd_arg_fn_t *fn); +gfxd_arg_fn_t gfxd_arg_dflt; + +typedef int gfxd_tlut_fn_t(uint32_t tlut, int32_t idx, int32_t count); +void gfxd_tlut_callback(gfxd_tlut_fn_t *fn); + +typedef int gfxd_timg_fn_t(uint32_t timg, int32_t fmt, int32_t siz, + int32_t width, int32_t height, int32_t pal); +void gfxd_timg_callback(gfxd_timg_fn_t *fn); + +typedef int gfxd_cimg_fn_t(uint32_t cimg, int32_t fmt, int32_t siz, + int32_t width); +void gfxd_cimg_callback(gfxd_cimg_fn_t *fn); + +typedef int gfxd_zimg_fn_t(uint32_t zimg); +void gfxd_zimg_callback(gfxd_zimg_fn_t *fn); + +typedef int gfxd_dl_fn_t(uint32_t dl); +void gfxd_dl_callback(gfxd_dl_fn_t *fn); + +typedef int gfxd_mtx_fn_t(uint32_t mtx); +void gfxd_mtx_callback(gfxd_mtx_fn_t *fn); + +typedef int gfxd_lookat_fn_t(uint32_t lookat, int32_t count); +void gfxd_lookat_callback(gfxd_lookat_fn_t *fn); + +typedef int gfxd_light_fn_t(uint32_t light, int32_t count); +void gfxd_light_callback(gfxd_light_fn_t *fn); + +typedef int gfxd_seg_fn_t(uint32_t seg, int32_t num); +void gfxd_seg_callback(gfxd_seg_fn_t *fn); + +typedef int gfxd_vtx_fn_t(uint32_t vtx, int32_t num); +void gfxd_vtx_callback(gfxd_vtx_fn_t *fn); + +typedef int gfxd_vp_fn_t(uint32_t vp); +void gfxd_vp_callback(gfxd_vp_fn_t *fn); + +typedef int gfxd_uctext_fn_t(uint32_t text, uint32_t size); +void gfxd_uctext_callback(gfxd_uctext_fn_t *fn); + +typedef int gfxd_ucdata_fn_t(uint32_t data, uint32_t size); +void gfxd_ucdata_callback(gfxd_ucdata_fn_t *fn); + +typedef int gfxd_dram_fn_t(uint32_t dram, uint32_t size); +void gfxd_dram_callback(gfxd_dram_fn_t *fn); + +int gfxd_write(const void *buf, int count); +int gfxd_puts(const char *str); +int gfxd_printf(const char *fmt, ...); +int gfxd_print_value(int type, const gfxd_value_t *value); + +void gfxd_target(gfxd_ucode_t ucode); +void gfxd_endian(int endian, int wordsize); +void gfxd_dynamic(const char *arg); +void gfxd_enable(int cap); +void gfxd_disable(int cap); +void gfxd_udata_set(void *ptr); +void *gfxd_udata_get(void); + +int gfxd_execute(void); + +int gfxd_macro_offset(void); +int gfxd_macro_packets(void); +const void *gfxd_macro_data(void); +int gfxd_macro_id(void); +const char *gfxd_macro_name(void); + +int gfxd_arg_count(void); +int gfxd_arg_type(int arg_num); +const char *gfxd_arg_name(int arg_num); +int gfxd_arg_fmt(int arg_num); +const gfxd_value_t *gfxd_arg_value(int arg_num); +const gfxd_value_t *gfxd_value_by_type(int type, int idx); +int gfxd_arg_valid(int arg_num); +int gfxd_arg_callbacks(int arg_num); + +extern const gfxd_ucode_t gfxd_f3d; +extern const gfxd_ucode_t gfxd_f3db; +extern const gfxd_ucode_t gfxd_f3dex; +extern const gfxd_ucode_t gfxd_f3dexb; +extern const gfxd_ucode_t gfxd_f3dex2; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/extern/libgfxd/priv.h b/extern/libgfxd/priv.h new file mode 100644 index 000000000..34d96f675 --- /dev/null +++ b/extern/libgfxd/priv.h @@ -0,0 +1,125 @@ +#ifndef GFXD_PRIV_H +#define GFXD_PRIV_H +#include "gfxd.h" + +#define CONFIG_MT + +#ifdef CONFIG_MT +# ifdef _MSC_VER +# define TLOCAL __declspec(thread) +# else +# define TLOCAL _Thread_local +# endif +#else +#define TLOCAL +#endif + +#define UCFUNC static inline + +#define config gfxd_config__ + +typedef int gfxd_argfn_t(const gfxd_value_t *v); + +typedef struct +{ + int fmt; + gfxd_argfn_t * fn; +} gfxd_arg_type_t; + +typedef struct +{ + int type; + const char * name; + gfxd_value_t value; + int bad; +} gfxd_arg_t; + +typedef struct +{ + int id; + gfxd_arg_t arg[18]; +} gfxd_macro_t; + +typedef int gfxd_disas_fn_t(gfxd_macro_t *macro, uint32_t hi, uint32_t lo); +typedef int gfxd_combine_fn_t(gfxd_macro_t *macro, int n_macro); + +typedef struct +{ + const char * prefix; + const char * suffix; + int opcode; + int n_arg; + int n_gfx; + gfxd_disas_fn_t * disas_fn; + gfxd_combine_fn_t * combine_fn; + int alias; + int ext; +} gfxd_macro_type_t; + +struct gfxd_ucode +{ + gfxd_disas_fn_t * disas_fn; + gfxd_combine_fn_t * combine_fn; + const gfxd_arg_type_t * arg_tbl; + const gfxd_macro_type_t * macro_tbl; +}; + +struct gfxd_state +{ + int macro_offset; + + Gfx gfx[9]; + int n_byte; + int n_gfx; + gfxd_macro_t macro[9]; + + int end_input; + int ret; +}; + +struct gfxd_config +{ + gfxd_ucode_t ucode; + int endian; + int wordsize; + const char * arg; + void * udata; + + int stop_on_invalid; + int stop_on_end; + int emit_dec_color; + int emit_q_macro; + int emit_ext_macro; + + const char * input_buf; + int input_buf_size; + int input_fd; + gfxd_input_fn_t * input_fn; + + char * output_buf; + int output_buf_size; + int output_fd; + gfxd_output_fn_t * output_fn; + + gfxd_macro_fn_t * macro_fn; + gfxd_arg_fn_t * arg_fn; + + gfxd_tlut_fn_t * tlut_fn; + gfxd_timg_fn_t * timg_fn; + gfxd_cimg_fn_t * cimg_fn; + gfxd_zimg_fn_t * zimg_fn; + gfxd_dl_fn_t * dl_fn; + gfxd_mtx_fn_t * mtx_fn; + gfxd_lookat_fn_t * lookat_fn; + gfxd_light_fn_t * light_fn; + gfxd_seg_fn_t * seg_fn; + gfxd_vtx_fn_t * vtx_fn; + gfxd_vp_fn_t * vp_fn; + gfxd_uctext_fn_t * uctext_fn; + gfxd_ucdata_fn_t * ucdata_fn; + gfxd_dram_fn_t * dram_fn; +}; + +extern TLOCAL struct gfxd_config gfxd_config__; + +#endif diff --git a/extern/libgfxd/uc.c b/extern/libgfxd/uc.c new file mode 100644 index 000000000..7efb09105 --- /dev/null +++ b/extern/libgfxd/uc.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include "gbi.h" +#include "gfxd.h" +#include "priv.h" + +#include "uc_argfn.c" +#include "uc_argtbl.c" +#include "uc_macrofn.c" +#include "uc_macrotbl.c" + +UCFUNC int disas(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int opcode = (hi >> 24) & 0xFF; + + for (int i = 0; i < sizeof(macro_tbl) / sizeof(macro_tbl[0]); i++) + { + const gfxd_macro_type_t *t = ¯o_tbl[i]; + if (t->disas_fn != NULL && t->opcode == opcode) + return t->disas_fn(m, hi, lo); + } + + return d_Invalid(m, hi, lo); +} + +UCFUNC int combine(gfxd_macro_t *m, int num) +{ + int opcode = macro_tbl[m->id].opcode; + + for (int i = 0; i < sizeof(macro_tbl) / sizeof(macro_tbl[0]); i++) + { + const gfxd_macro_type_t *t = ¯o_tbl[i]; + if (t->combine_fn != NULL + && t->opcode == opcode + && (t->ext == 0 || config.emit_ext_macro != 0)) + { + if (t->combine_fn(m, num) == 0) + return 0; + } + } + + return -1; +} + +static const struct gfxd_ucode uc = +{ + .disas_fn = disas, + .combine_fn = combine, + .arg_tbl = arg_tbl, + .macro_tbl = macro_tbl, +}; + +const gfxd_ucode_t uc_name = &uc; diff --git a/extern/libgfxd/uc_argfn.c b/extern/libgfxd/uc_argfn.c new file mode 100644 index 000000000..f65feb60f --- /dev/null +++ b/extern/libgfxd/uc_argfn.c @@ -0,0 +1,1814 @@ +#define MDMASK(md) ((((uint32_t)1 << G_MDSIZ_##md) - 1) << G_MDSFT_##md) +#define MDMASK_RM_C1 ((uint32_t)0xCCCC0000) +#define MDMASK_RM_C2 ((uint32_t)0x33330000) +#define MDMASK_RM_LO ((uint32_t)0x0000FFF8) + +UCFUNC int argfn_i(const gfxd_value_t *v) +{ + return gfxd_printf("%" PRIi32, v->i); +} + +UCFUNC int argfn_u(const gfxd_value_t *v) +{ + return gfxd_printf("%" PRIu32, v->u); +} + +UCFUNC int argfn_x8(const gfxd_value_t *v) +{ + return gfxd_printf("0x%02" PRIX32, v->u); +} + +UCFUNC int argfn_x16(const gfxd_value_t *v) +{ + return gfxd_printf("0x%04" PRIX32, v->u); +} + +UCFUNC int argfn_x32(const gfxd_value_t *v) +{ + return gfxd_printf("0x%08" PRIX32, v->u); +} + +UCFUNC int argfn_color(const gfxd_value_t *v) +{ + if (config.emit_dec_color) + return gfxd_printf("%" PRIu32, v->u); + else + return gfxd_printf("0x%02" PRIX32, v->u); +} + +UCFUNC int argfn_qu08(const gfxd_value_t *v) +{ + if (v->u == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qu08(%.16g)", v->u / 256.f); + else + return gfxd_printf("0x%02" PRIX32, v->u); +} + +UCFUNC int argfn_qu016(const gfxd_value_t *v) +{ + if (v->u == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qu016(%.16g)", v->u / 65536.f); + else + return gfxd_printf("0x%04" PRIX32, v->u); +} + +UCFUNC int argfn_qs48(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qs48(%.16g)", v->i / 256.f); + else + { + if (v->i < 0) + return gfxd_printf("-0x%04" PRIX32, (uint32_t)-v->i); + else + return gfxd_printf("0x%04" PRIX32, (uint32_t)v->i); + } +} + +UCFUNC int argfn_qs510(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qs510(%.16g)", v->i / 1024.f); + else + { + if (v->i < 0) + return gfxd_printf("-0x%04" PRIX32, (uint32_t)-v->i); + else + return gfxd_printf("0x%04" PRIX32, (uint32_t)v->i); + } +} + +UCFUNC int argfn_qu102(const gfxd_value_t *v) +{ + if (v->u == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qu102(%.16g)", v->u / 4.f); + else + return gfxd_printf("0x%04" PRIX32, v->u); +} + +UCFUNC int argfn_qs105(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qs105(%.16g)", v->i / 32.f); + else + { + if (v->i < 0) + return gfxd_printf("-0x%04" PRIX32, (uint32_t)-v->i); + else + return gfxd_printf("0x%04" PRIX32, (uint32_t)v->i); + } +} + +UCFUNC int argfn_qs1616(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("0"); + else if (config.emit_q_macro) + return gfxd_printf("qs1616(%.16g)", v->i / 65536.f); + else + { + if (v->i < 0) + return gfxd_printf("-0x%08" PRIX32, (uint32_t)-v->i); + else + return gfxd_printf("0x%08" PRIX32, (uint32_t)v->i); + } +} + +UCFUNC int argfn_opc(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_SPNOOP: + return gfxd_puts("G_SPNOOP"); + case G_MTX: + return gfxd_puts("G_MTX"); + case G_MOVEMEM: + return gfxd_puts("G_MOVEMEM"); + case G_VTX: + return gfxd_puts("G_VTX"); + case G_DL: + return gfxd_puts("G_DL"); + case G_RDPHALF_2: + return gfxd_puts("G_RDPHALF_2"); + case G_RDPHALF_1: + return gfxd_puts("G_RDPHALF_1"); +#if defined(F3D_BETA) && (defined(F3D_GBI) || defined(F3DEX_GBI)) + case G_PERSPNORM: + return gfxd_puts("G_PERSPNORM"); +#endif + case G_LINE3D: + return gfxd_puts("G_LINE3D"); +#if defined(F3D_GBI) || defined(F3DEX_GBI) + case G_CLEARGEOMETRYMODE: + return gfxd_puts("G_CLEARGEOMETRYMODE"); + case G_SETGEOMETRYMODE: + return gfxd_puts("G_SETGEOMETRYMODE"); +#endif + case G_ENDDL: + return gfxd_puts("G_ENDDL"); + case G_SETOTHERMODE_L: + return gfxd_puts("G_SETOTHERMODE_L"); + case G_SETOTHERMODE_H: + return gfxd_puts("G_SETOTHERMODE_H"); + case G_TEXTURE: + return gfxd_puts("G_TEXTURE"); + case G_MOVEWORD: + return gfxd_puts("G_MOVEWORD"); + case G_POPMTX: + return gfxd_puts("G_POPMTX"); + case G_CULLDL: + return gfxd_puts("G_CULLDL"); + case G_TRI1: + return gfxd_puts("G_TRI1"); + case G_NOOP: + return gfxd_puts("G_NOOP"); +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + case G_LOAD_UCODE: + return gfxd_puts("G_LOAD_UCODE"); + case G_BRANCH_Z: + return gfxd_puts("G_BRANCH_Z"); + case G_TRI2: + return gfxd_puts("G_TRI2"); +# if !(defined(F3D_BETA) && defined(F3DEX_GBI)) + case G_MODIFYVTX: + return gfxd_puts("G_MODIFYVTX"); +# endif +#endif +#if defined(F3DEX_GBI_2) + case G_QUAD: + return gfxd_puts("G_QUAD"); + case G_SPECIAL_3: + return gfxd_puts("G_SPECIAL_3"); + case G_SPECIAL_2: + return gfxd_puts("G_SPECIAL_2"); + case G_SPECIAL_1: + return gfxd_puts("G_SPECIAL_1"); + case G_DMA_IO: + return gfxd_puts("G_DMA_IO"); + case G_GEOMETRYMODE: + return gfxd_puts("G_GEOMETRYMODE"); +#endif + case G_TEXRECT: + return gfxd_puts("G_TEXRECT"); + case G_TEXRECTFLIP: + return gfxd_puts("G_TEXRECTFLIP"); + case G_RDPLOADSYNC: + return gfxd_puts("G_RDPLOADSYNC"); + case G_RDPPIPESYNC: + return gfxd_puts("G_RDPPIPESYNC"); + case G_RDPTILESYNC: + return gfxd_puts("G_RDPTILESYNC"); + case G_RDPFULLSYNC: + return gfxd_puts("G_RDPFULLSYNC"); + case G_SETKEYGB: + return gfxd_puts("G_SETKEYGB"); + case G_SETKEYR: + return gfxd_puts("G_SETKEYR"); + case G_SETCONVERT: + return gfxd_puts("G_SETCONVERT"); + case G_SETSCISSOR: + return gfxd_puts("G_SETSCISSOR"); + case G_SETPRIMDEPTH: + return gfxd_puts("G_SETPRIMDEPTH"); + case G_RDPSETOTHERMODE: + return gfxd_puts("G_RDPSETOTHERMODE"); + case G_LOADTLUT: + return gfxd_puts("G_LOADTLUT"); + case G_SETTILESIZE: + return gfxd_puts("G_SETTILESIZE"); + case G_LOADBLOCK: + return gfxd_puts("G_LOADBLOCK"); + case G_LOADTILE: + return gfxd_puts("G_LOADTILE"); + case G_SETTILE: + return gfxd_puts("G_SETTILE"); + case G_FILLRECT: + return gfxd_puts("G_FILLRECT"); + case G_SETFILLCOLOR: + return gfxd_puts("G_SETFILLCOLOR"); + case G_SETFOGCOLOR: + return gfxd_puts("G_SETFOGCOLOR"); + case G_SETBLENDCOLOR: + return gfxd_puts("G_SETBLENDCOLOR"); + case G_SETPRIMCOLOR: + return gfxd_puts("G_SETPRIMCOLOR"); + case G_SETENVCOLOR: + return gfxd_puts("G_SETENVCOLOR"); + case G_SETCOMBINE: + return gfxd_puts("G_SETCOMBINE"); + case G_SETTIMG: + return gfxd_puts("G_SETTIMG"); + case G_SETZIMG: + return gfxd_puts("G_SETZIMG"); + case G_SETCIMG: + return gfxd_puts("G_SETCIMG"); + default: + return gfxd_printf("0x%02" PRIX32, (uint32_t)v->i); + } +} + +UCFUNC int argfn_fmt(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_IM_FMT_RGBA: + return gfxd_puts("G_IM_FMT_RGBA"); + case G_IM_FMT_YUV: + return gfxd_puts("G_IM_FMT_YUV"); + case G_IM_FMT_CI: + return gfxd_puts("G_IM_FMT_CI"); + case G_IM_FMT_IA: + return gfxd_puts("G_IM_FMT_IA"); + case G_IM_FMT_I: + return gfxd_puts("G_IM_FMT_I"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_siz(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_IM_SIZ_4b: + return gfxd_puts("G_IM_SIZ_4b"); + case G_IM_SIZ_8b: + return gfxd_puts("G_IM_SIZ_8b"); + case G_IM_SIZ_16b: + return gfxd_puts("G_IM_SIZ_16b"); + case G_IM_SIZ_32b: + return gfxd_puts("G_IM_SIZ_32b"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_cm(const gfxd_value_t *v) +{ + int n = 0; + if (v->u & G_TX_MIRROR) + n += gfxd_puts("G_TX_MIRROR"); + else + n += gfxd_puts("G_TX_NOMIRROR"); + if (v->u & G_TX_CLAMP) + n += gfxd_puts(" | G_TX_CLAMP"); + else + n += gfxd_puts(" | G_TX_WRAP"); + return n; +} + +UCFUNC int argfn_tm(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("G_TX_NOMASK"); + else + return gfxd_printf("%" PRIi32, v->i); +} + +UCFUNC int argfn_ts(const gfxd_value_t *v) +{ + if (v->i == 0) + return gfxd_puts("G_TX_NOLOD"); + else + return gfxd_printf("%" PRIi32, v->i); +} + +UCFUNC int argfn_switch(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_ON: + return gfxd_puts("G_ON"); + case G_OFF: + return gfxd_puts("G_OFF"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_tile(const gfxd_value_t *v) +{ + if (v->i == G_TX_LOADTILE) + return gfxd_puts("G_TX_LOADTILE"); + else if (v->i == G_TX_RENDERTILE) + return gfxd_puts("G_TX_RENDERTILE"); + else + return gfxd_printf("%" PRIi32, v->i); +} + +UCFUNC int argfn_gm(const gfxd_value_t *v) +{ + int n = 0; + uint32_t arg = v->u; + if (arg & G_ZBUFFER) + n += gfxd_puts("G_ZBUFFER"); + if (arg & G_TEXTURE_ENABLE) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_TEXTURE_ENABLE"); + } + if (arg & G_SHADE) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_SHADE"); + } + if ((arg & G_CULL_BOTH) == G_CULL_BOTH) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_CULL_BOTH"); + } + else + { + if (arg & G_CULL_FRONT) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_CULL_FRONT"); + } + if (arg & G_CULL_BACK) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_CULL_BACK"); + } + } + if (arg & G_FOG) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_FOG"); + } + if (arg & G_LIGHTING) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_LIGHTING"); + } + if (arg & G_TEXTURE_GEN) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_TEXTURE_GEN"); + } + if (arg & G_TEXTURE_GEN_LINEAR) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_TEXTURE_GEN_LINEAR"); + } + if (arg & G_LOD) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_LOD"); + } + if (arg & G_SHADING_SMOOTH) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_SHADING_SMOOTH"); + } + if (arg & G_CLIPPING) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("G_CLIPPING"); + } + arg = arg & ~(G_ZBUFFER | G_TEXTURE_ENABLE | G_SHADE | G_CULL_BOTH | + G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | + G_CLIPPING); + if (arg) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_printf("0x%08" PRIX32, arg); + } + return n; +} + +UCFUNC int argfn_sftlo(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_MDSFT_ALPHACOMPARE: + return gfxd_puts("G_MDSFT_ALPHACOMPARE"); + case G_MDSFT_ZSRCSEL: + return gfxd_puts("G_MDSFT_ZSRCSEL"); + case G_MDSFT_RENDERMODE: + return gfxd_puts("G_MDSFT_RENDERMODE"); + case G_MDSFT_BLENDER: + return gfxd_puts("G_MDSFT_BLENDER"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int rm_mode_str(uint32_t arg) +{ + int n = 0; + if (arg & AA_EN) + n += gfxd_puts("AA_EN"); + if (arg & Z_CMP) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("Z_CMP"); + } + if (arg & Z_UPD) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("Z_UPD"); + } + if (arg & IM_RD) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("IM_RD"); + } + if (arg & CLR_ON_CVG) + { + if (n > 0) + n += gfxd_puts(" | "); + n += gfxd_puts("CLR_ON_CVG"); + } + if (n > 0) + n += gfxd_puts(" | "); + int cvg = arg & 0x00000300; + switch (cvg) + { + case CVG_DST_CLAMP: + n += gfxd_puts("CVG_DST_CLAMP"); + break; + case CVG_DST_WRAP: + n += gfxd_puts("CVG_DST_WRAP"); + break; + case CVG_DST_FULL: + n += gfxd_puts("CVG_DST_FULL"); + break; + case CVG_DST_SAVE: + n += gfxd_puts("CVG_DST_SAVE"); + break; + } + int zmode = arg & 0x00000C00; + switch (zmode) + { + case ZMODE_OPA: + n += gfxd_puts(" | ZMODE_OPA"); + break; + case ZMODE_INTER: + n += gfxd_puts(" | ZMODE_INTER"); + break; + case ZMODE_XLU: + n += gfxd_puts(" | ZMODE_XLU"); + break; + case ZMODE_DEC: + n += gfxd_puts(" | ZMODE_DEC"); + break; + } + if (arg & CVG_X_ALPHA) + n += gfxd_puts(" | CVG_X_ALPHA"); + if (arg & ALPHA_CVG_SEL) + n += gfxd_puts(" | ALPHA_CVG_SEL"); + if (arg & FORCE_BL) + n += gfxd_puts(" | FORCE_BL"); + return n; +} + +UCFUNC int rm_cbl_str(uint32_t arg, int c) +{ + int n = 0; + if (c == 2) + arg <<= 2; + int bp = (arg >> 30) & 0b11; + switch (bp) + { + case G_BL_CLR_IN: + n += gfxd_printf("GBL_c%i(G_BL_CLR_IN", c); + break; + case G_BL_CLR_MEM: + n += gfxd_printf("GBL_c%i(G_BL_CLR_MEM", c); + break; + case G_BL_CLR_BL: + n += gfxd_printf("GBL_c%i(G_BL_CLR_BL", c); + break; + case G_BL_CLR_FOG: + n += gfxd_printf("GBL_c%i(G_BL_CLR_FOG", c); + break; + } + int ba = (arg >> 26) & 0b11; + switch (ba) + { + case G_BL_A_IN: + n += gfxd_puts(", G_BL_A_IN"); + break; + case G_BL_A_FOG: + n += gfxd_puts(", G_BL_A_FOG"); + break; + case G_BL_A_SHADE: + n += gfxd_puts(", G_BL_A_SHADE"); + break; + case G_BL_0: + n += gfxd_puts(", G_BL_0"); + break; + } + int bm = (arg >> 22) & 0b11; + switch (bm) + { + case G_BL_CLR_IN: + n += gfxd_puts(", G_BL_CLR_IN"); + break; + case G_BL_CLR_MEM: + n += gfxd_puts(", G_BL_CLR_MEM"); + break; + case G_BL_CLR_BL: + n += gfxd_puts(", G_BL_CLR_BL"); + break; + case G_BL_CLR_FOG: + n += gfxd_puts(", G_BL_CLR_FOG"); + break; + } + int bb = (arg >> 18) & 0b11; + switch (bb) + { + case G_BL_1MA: + n += gfxd_puts(", G_BL_1MA)"); + break; + case G_BL_A_MEM: + n += gfxd_puts(", G_BL_A_MEM)"); + break; + case G_BL_1: + n += gfxd_puts(", G_BL_1)"); + break; + case G_BL_0: + n += gfxd_puts(", G_BL_0)"); + break; + } + return n; +} + +struct rm_preset +{ + uint32_t rm; + const char * name; +}; + +static const struct rm_preset rm_presets[] = +{ + {G_RM_OPA_SURF, "G_RM_OPA_SURF"}, + {G_RM_OPA_SURF2, "G_RM_OPA_SURF2"}, + {G_RM_AA_OPA_SURF, "G_RM_AA_OPA_SURF"}, + {G_RM_AA_OPA_SURF2, "G_RM_AA_OPA_SURF2"}, + {G_RM_RA_OPA_SURF, "G_RM_RA_OPA_SURF"}, + {G_RM_RA_OPA_SURF2, "G_RM_RA_OPA_SURF2"}, + {G_RM_ZB_OPA_SURF, "G_RM_ZB_OPA_SURF"}, + {G_RM_ZB_OPA_SURF2, "G_RM_ZB_OPA_SURF2"}, + {G_RM_AA_ZB_OPA_SURF, "G_RM_AA_ZB_OPA_SURF"}, + {G_RM_AA_ZB_OPA_SURF2, "G_RM_AA_ZB_OPA_SURF2"}, + {G_RM_RA_ZB_OPA_SURF, "G_RM_RA_ZB_OPA_SURF"}, + {G_RM_RA_ZB_OPA_SURF2, "G_RM_RA_ZB_OPA_SURF2"}, + {G_RM_XLU_SURF, "G_RM_XLU_SURF"}, + {G_RM_XLU_SURF2, "G_RM_XLU_SURF2"}, + {G_RM_AA_XLU_SURF, "G_RM_AA_XLU_SURF"}, + {G_RM_AA_XLU_SURF2, "G_RM_AA_XLU_SURF2"}, + {G_RM_ZB_XLU_SURF, "G_RM_ZB_XLU_SURF"}, + {G_RM_ZB_XLU_SURF2, "G_RM_ZB_XLU_SURF2"}, + {G_RM_AA_ZB_XLU_SURF, "G_RM_AA_ZB_XLU_SURF"}, + {G_RM_AA_ZB_XLU_SURF2, "G_RM_AA_ZB_XLU_SURF2"}, + {G_RM_ZB_OPA_DECAL, "G_RM_ZB_OPA_DECAL"}, + {G_RM_ZB_OPA_DECAL2, "G_RM_ZB_OPA_DECAL2"}, + {G_RM_AA_ZB_OPA_DECAL, "G_RM_AA_ZB_OPA_DECAL"}, + {G_RM_AA_ZB_OPA_DECAL2, "G_RM_AA_ZB_OPA_DECAL2"}, + {G_RM_RA_ZB_OPA_DECAL, "G_RM_RA_ZB_OPA_DECAL"}, + {G_RM_RA_ZB_OPA_DECAL2, "G_RM_RA_ZB_OPA_DECAL2"}, + {G_RM_ZB_XLU_DECAL, "G_RM_ZB_XLU_DECAL"}, + {G_RM_ZB_XLU_DECAL2, "G_RM_ZB_XLU_DECAL2"}, + {G_RM_AA_ZB_XLU_DECAL, "G_RM_AA_ZB_XLU_DECAL"}, + {G_RM_AA_ZB_XLU_DECAL2, "G_RM_AA_ZB_XLU_DECAL2"}, + {G_RM_AA_ZB_OPA_INTER, "G_RM_AA_ZB_OPA_INTER"}, + {G_RM_AA_ZB_OPA_INTER2, "G_RM_AA_ZB_OPA_INTER2"}, + {G_RM_RA_ZB_OPA_INTER, "G_RM_RA_ZB_OPA_INTER"}, + {G_RM_RA_ZB_OPA_INTER2, "G_RM_RA_ZB_OPA_INTER2"}, + {G_RM_AA_ZB_XLU_INTER, "G_RM_AA_ZB_XLU_INTER"}, + {G_RM_AA_ZB_XLU_INTER2, "G_RM_AA_ZB_XLU_INTER2"}, + {G_RM_AA_XLU_LINE, "G_RM_AA_XLU_LINE"}, + {G_RM_AA_XLU_LINE2, "G_RM_AA_XLU_LINE2"}, + {G_RM_AA_ZB_XLU_LINE, "G_RM_AA_ZB_XLU_LINE"}, + {G_RM_AA_ZB_XLU_LINE2, "G_RM_AA_ZB_XLU_LINE2"}, + {G_RM_AA_DEC_LINE, "G_RM_AA_DEC_LINE"}, + {G_RM_AA_DEC_LINE2, "G_RM_AA_DEC_LINE2"}, + {G_RM_AA_ZB_DEC_LINE, "G_RM_AA_ZB_DEC_LINE"}, + {G_RM_AA_ZB_DEC_LINE2, "G_RM_AA_ZB_DEC_LINE2"}, + {G_RM_TEX_EDGE, "G_RM_TEX_EDGE"}, + {G_RM_TEX_EDGE2, "G_RM_TEX_EDGE2"}, + {G_RM_AA_TEX_EDGE, "G_RM_AA_TEX_EDGE"}, + {G_RM_AA_TEX_EDGE2, "G_RM_AA_TEX_EDGE2"}, + {G_RM_AA_ZB_TEX_EDGE, "G_RM_AA_ZB_TEX_EDGE"}, + {G_RM_AA_ZB_TEX_EDGE2, "G_RM_AA_ZB_TEX_EDGE2"}, + {G_RM_AA_ZB_TEX_INTER, "G_RM_AA_ZB_TEX_INTER"}, + {G_RM_AA_ZB_TEX_INTER2, "G_RM_AA_ZB_TEX_INTER2"}, + {G_RM_AA_SUB_SURF, "G_RM_AA_SUB_SURF"}, + {G_RM_AA_SUB_SURF2, "G_RM_AA_SUB_SURF2"}, + {G_RM_AA_ZB_SUB_SURF, "G_RM_AA_ZB_SUB_SURF"}, + {G_RM_AA_ZB_SUB_SURF2, "G_RM_AA_ZB_SUB_SURF2"}, + {G_RM_PCL_SURF, "G_RM_PCL_SURF"}, + {G_RM_PCL_SURF2, "G_RM_PCL_SURF2"}, + {G_RM_AA_PCL_SURF, "G_RM_AA_PCL_SURF"}, + {G_RM_AA_PCL_SURF2, "G_RM_AA_PCL_SURF2"}, + {G_RM_ZB_PCL_SURF, "G_RM_ZB_PCL_SURF"}, + {G_RM_ZB_PCL_SURF2, "G_RM_ZB_PCL_SURF2"}, + {G_RM_AA_ZB_PCL_SURF, "G_RM_AA_ZB_PCL_SURF"}, + {G_RM_AA_ZB_PCL_SURF2, "G_RM_AA_ZB_PCL_SURF2"}, + {G_RM_AA_OPA_TERR, "G_RM_AA_OPA_TERR"}, + {G_RM_AA_OPA_TERR2, "G_RM_AA_OPA_TERR2"}, + {G_RM_AA_ZB_OPA_TERR, "G_RM_AA_ZB_OPA_TERR"}, + {G_RM_AA_ZB_OPA_TERR2, "G_RM_AA_ZB_OPA_TERR2"}, + {G_RM_AA_TEX_TERR, "G_RM_AA_TEX_TERR"}, + {G_RM_AA_TEX_TERR2, "G_RM_AA_TEX_TERR2"}, + {G_RM_AA_ZB_TEX_TERR, "G_RM_AA_ZB_TEX_TERR"}, + {G_RM_AA_ZB_TEX_TERR2, "G_RM_AA_ZB_TEX_TERR2"}, + {G_RM_AA_SUB_TERR, "G_RM_AA_SUB_TERR"}, + {G_RM_AA_SUB_TERR2, "G_RM_AA_SUB_TERR2"}, + {G_RM_AA_ZB_SUB_TERR, "G_RM_AA_ZB_SUB_TERR"}, + {G_RM_AA_ZB_SUB_TERR2, "G_RM_AA_ZB_SUB_TERR2"}, + {G_RM_CLD_SURF, "G_RM_CLD_SURF"}, + {G_RM_CLD_SURF2, "G_RM_CLD_SURF2"}, + {G_RM_ZB_CLD_SURF, "G_RM_ZB_CLD_SURF"}, + {G_RM_ZB_CLD_SURF2, "G_RM_ZB_CLD_SURF2"}, + {G_RM_ZB_OVL_SURF, "G_RM_ZB_OVL_SURF"}, + {G_RM_ZB_OVL_SURF2, "G_RM_ZB_OVL_SURF2"}, + {G_RM_ADD, "G_RM_ADD"}, + {G_RM_ADD2, "G_RM_ADD2"}, + {G_RM_VISCVG, "G_RM_VISCVG"}, + {G_RM_VISCVG2, "G_RM_VISCVG2"}, + {G_RM_OPA_CI, "G_RM_OPA_CI"}, + {G_RM_OPA_CI2, "G_RM_OPA_CI2"}, + {G_RM_RA_SPRITE, "G_RM_RA_SPRITE"}, + {G_RM_RA_SPRITE2, "G_RM_RA_SPRITE2"}, +}; + +static const struct rm_preset bl1_presets[] = +{ + {G_RM_FOG_SHADE_A, "G_RM_FOG_SHADE_A"}, + {G_RM_FOG_PRIM_A, "G_RM_FOG_PRIM_A"}, + {G_RM_PASS, "G_RM_PASS"}, + {G_RM_NOOP, "G_RM_NOOP"}, +}; + +static const struct rm_preset bl2_presets[] = +{ + {G_RM_NOOP2, "G_RM_NOOP2"}, +}; + +UCFUNC int othermodelo_str(uint32_t arg, uint32_t which) +{ + int n = 0; + uint32_t rm_c1_mask = MDMASK_RM_C1; + uint32_t rm_c2_mask = MDMASK_RM_C2; + uint32_t rm_mode_lo = MDMASK_RM_LO; + uint32_t rm_mask = rm_c1_mask | rm_c2_mask | rm_mode_lo; + const struct rm_preset *pre_c1 = NULL; + const struct rm_preset *pre_c2 = NULL; + int n_rm_presets = sizeof(rm_presets) / sizeof(*rm_presets); + for (int i = 0; i < n_rm_presets; i++) + { + const struct rm_preset *pre = &rm_presets[i]; + uint32_t pre_extra = pre->rm & ~rm_mask; + uint32_t rm_c1 = arg & (rm_c1_mask | rm_mode_lo | pre_extra); + if (!pre_c1 && rm_c1 == pre->rm) + pre_c1 = pre; + uint32_t rm_c2 = arg & (rm_c2_mask | rm_mode_lo | pre_extra); + if (!pre_c2 && rm_c2 == pre->rm) + pre_c2 = pre; + } + if (!pre_c1 || !pre_c2 || pre_c1 + 1 != pre_c2) + { + int n_bl1_presets = sizeof(bl1_presets) / sizeof(*bl1_presets); + for (int i = 0; i < n_bl1_presets; i++) + { + const struct rm_preset *pre = &bl1_presets[i]; + uint32_t pre_extra = pre->rm & ~rm_mask; + uint32_t rm_c1 = arg & (rm_c1_mask | pre_extra); + if (rm_c1 == pre->rm) + { + pre_c1 = pre; + break; + } + } + int n_bl2_presets = sizeof(bl2_presets) / sizeof(*bl2_presets); + for (int i = 0; i < n_bl2_presets; i++) + { + const struct rm_preset *pre = &bl2_presets[i]; + uint32_t pre_extra = pre->rm & ~rm_mask; + uint32_t rm_c2 = arg & (rm_c2_mask | pre_extra); + if (rm_c2 == pre->rm) + { + pre_c2 = pre; + break; + } + } + } + uint32_t pre_rm = 0; + if (pre_c1) + pre_rm |= pre_c1->rm; + if (pre_c2) + pre_rm |= pre_c2->rm; + uint32_t ac_mask = MDMASK(ALPHACOMPARE); + if (((arg & ~pre_rm) | which) & ac_mask) + { + uint32_t ac = arg & ac_mask; + switch (ac) + { + case G_AC_NONE: + n += gfxd_puts("G_AC_NONE"); + break; + case G_AC_THRESHOLD: + n += gfxd_puts("G_AC_THRESHOLD"); + break; + case G_AC_DITHER: + n += gfxd_puts("G_AC_DITHER"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, ac); + break; + } + } + uint32_t zs_mask = MDMASK(ZSRCSEL); + if (((arg & ~pre_rm) | which) & zs_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t zs = arg & zs_mask; + switch (zs) + { + case G_ZS_PIXEL: + n += gfxd_puts("G_ZS_PIXEL"); + break; + case G_ZS_PRIM: + n += gfxd_puts("G_ZS_PRIM"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, zs); + break; + } + } + uint32_t rm = arg & (rm_mask | pre_rm); + if (((arg & ~pre_rm) | which) & rm_mode_lo) + { + if (n > 0) + n += gfxd_puts(" | "); + n += rm_mode_str(rm); + } + int c = 0; + if (which & rm_c1_mask) + c |= 1; + if (which & rm_c2_mask) + c |= 2; + if (c & 1 || (c == 0 && arg & rm_c1_mask)) + { + if (n > 0) + n += gfxd_puts(" | "); + if (pre_c1) + n += gfxd_printf("%s", pre_c1->name); + else + n += rm_cbl_str(rm, 1); + } + if (c & 2 || (c == 0 && arg & rm_c2_mask)) + { + if (n > 0) + n += gfxd_puts(" | "); + if (pre_c2) + n += gfxd_printf("%s", pre_c2->name); + else + n += rm_cbl_str(rm, 2); + } + uint32_t unk_mask = ~(rm_mask | ac_mask | zs_mask); + if (arg & unk_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t unk = arg & unk_mask; + n += gfxd_printf("0x%08" PRIX32, unk); + } + return n; +} + +UCFUNC int argfn_ac(const gfxd_value_t *v) +{ + return othermodelo_str(v->u, MDMASK(ALPHACOMPARE)); +} + +UCFUNC int argfn_zs(const gfxd_value_t *v) +{ + return othermodelo_str(v->u, MDMASK(ZSRCSEL)); +} + +UCFUNC int argfn_rm1(const gfxd_value_t *v) +{ + return othermodelo_str(v->u, MDMASK_RM_C1); +} + +UCFUNC int argfn_rm2(const gfxd_value_t *v) +{ + return othermodelo_str(v->u, MDMASK_RM_C2); +} + +UCFUNC int argfn_othermodelo(const gfxd_value_t *v) +{ + uint32_t mask = MDMASK(ALPHACOMPARE) | MDMASK(ZSRCSEL) | MDMASK_RM_C1 | + MDMASK_RM_C2; + return othermodelo_str(v->u, mask); +} + +UCFUNC int argfn_sfthi(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_MDSFT_ALPHADITHER: + return gfxd_puts("G_MDSFT_ALPHADITHER"); + case G_MDSFT_RGBDITHER: + return gfxd_puts("G_MDSFT_RGBDITHER"); + case G_MDSFT_COMBKEY: + return gfxd_puts("G_MDSFT_COMBKEY"); + case G_MDSFT_TEXTCONV: + return gfxd_puts("G_MDSFT_TEXTCONV"); + case G_MDSFT_TEXTFILT: + return gfxd_puts("G_MDSFT_TEXTFILT"); + case G_MDSFT_TEXTLUT: + return gfxd_puts("G_MDSFT_TEXTLUT"); + case G_MDSFT_TEXTLOD: + return gfxd_puts("G_MDSFT_TEXTLOD"); + case G_MDSFT_TEXTDETAIL: + return gfxd_puts("G_MDSFT_TEXTDETAIL"); + case G_MDSFT_TEXTPERSP: + return gfxd_puts("G_MDSFT_TEXTPERSP"); + case G_MDSFT_CYCLETYPE: + return gfxd_puts("G_MDSFT_CYCLETYPE"); + case G_MDSFT_PIPELINE: + return gfxd_puts("G_MDSFT_PIPELINE"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int othermodehi_str(uint32_t arg, uint32_t which) +{ + int n = 0; + uint32_t ad_mask = MDMASK(ALPHADITHER); + if ((arg | which) & ad_mask) + { + uint32_t ad = arg & ad_mask; + switch (ad) + { + case G_AD_PATTERN: + n += gfxd_puts("G_AD_PATTERN"); + break; + case G_AD_NOTPATTERN: + n += gfxd_puts("G_AD_NOTPATTERN"); + break; + case G_AD_NOISE: + n += gfxd_puts("G_AD_NOISE"); + break; + case G_AD_DISABLE: + n += gfxd_puts("G_AD_DISABLE"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, ad); + break; + } + } + uint32_t cd_mask = MDMASK(RGBDITHER); + if ((arg | which) & cd_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t cd = arg & cd_mask; + switch (cd) + { + case G_CD_MAGICSQ: + n += gfxd_puts("G_CD_MAGICSQ"); + break; + case G_CD_BAYER: + n += gfxd_puts("G_CD_BAYER"); + break; + case G_CD_NOISE: + n += gfxd_puts("G_CD_NOISE"); + break; + case G_CD_DISABLE: + n += gfxd_puts("G_CD_DISABLE"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, cd); + break; + } + } + uint32_t ck_mask = MDMASK(COMBKEY); + if ((arg | which) & ck_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t ck = arg & ck_mask; + switch (ck) + { + case G_CK_NONE: + n += gfxd_puts("G_CK_NONE"); + break; + case G_CK_KEY: + n += gfxd_puts("G_CK_KEY"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, ck); + break; + } + } + uint32_t tc_mask = MDMASK(TEXTCONV); + if ((arg | which) & tc_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t tc = arg & tc_mask; + switch (tc) + { + case G_TC_CONV: + n += gfxd_puts("G_TC_CONV"); + break; + case G_TC_FILTCONV: + n += gfxd_puts("G_TC_FILTCONV"); + break; + case G_TC_FILT: + n += gfxd_puts("G_TC_FILT"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, tc); + break; + } + } + uint32_t tf_mask = MDMASK(TEXTFILT); + if ((arg | which) & tf_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t tf = arg & tf_mask; + switch (tf) + { + case G_TF_POINT: + n += gfxd_puts("G_TF_POINT"); + break; + case G_TF_BILERP: + n += gfxd_puts("G_TF_BILERP"); + break; + case G_TF_AVERAGE: + n += gfxd_puts("G_TF_AVERAGE"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, tf); + break; + } + } + uint32_t tt_mask = MDMASK(TEXTLUT); + if ((arg | which) & tt_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t tt = arg & tt_mask; + switch (tt) + { + case G_TT_NONE: + n += gfxd_puts("G_TT_NONE"); + break; + case G_TT_RGBA16: + n += gfxd_puts("G_TT_RGBA16"); + break; + case G_TT_IA16: + n += gfxd_puts("G_TT_IA16"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, tt); + break; + } + } + uint32_t tl_mask = MDMASK(TEXTLOD); + if ((arg | which) & tl_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t tl = arg & tl_mask; + switch (tl) + { + case G_TL_TILE: + n += gfxd_puts("G_TL_TILE"); + break; + case G_TL_LOD: + n += gfxd_puts("G_TL_LOD"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, tl); + break; + } + } + uint32_t td_mask = MDMASK(TEXTDETAIL); + if ((arg | which) & td_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t td = arg & td_mask; + switch (td) + { + case G_TD_CLAMP: + n += gfxd_puts("G_TD_CLAMP"); + break; + case G_TD_SHARPEN: + n += gfxd_puts("G_TD_SHARPEN"); + break; + case G_TD_DETAIL: + n += gfxd_puts("G_TD_DETAIL"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, td); + break; + } + } + uint32_t tp_mask = MDMASK(TEXTPERSP); + if ((arg | which) & tp_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t tp = arg & tp_mask; + switch (tp) + { + case G_TP_NONE: + n += gfxd_puts("G_TP_NONE"); + break; + case G_TP_PERSP: + n += gfxd_puts("G_TP_PERSP"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, tp); + break; + } + } + uint32_t cyc_mask = MDMASK(CYCLETYPE); + if ((arg | which) & cyc_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t cyc = arg & cyc_mask; + switch (cyc) + { + case G_CYC_1CYCLE: + n += gfxd_puts("G_CYC_1CYCLE"); + break; + case G_CYC_2CYCLE: + n += gfxd_puts("G_CYC_2CYCLE"); + break; + case G_CYC_COPY: + n += gfxd_puts("G_CYC_COPY"); + break; + case G_CYC_FILL: + n += gfxd_puts("G_CYC_FILL"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, cyc); + break; + } + } + uint32_t pm_mask = MDMASK(PIPELINE); + if ((arg | which) & pm_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t pm = arg & pm_mask; + switch (pm) + { + case G_PM_NPRIMITIVE: + n += gfxd_puts("G_PM_NPRIMITIVE"); + break; + case G_PM_1PRIMITIVE: + n += gfxd_puts("G_PM_1PRIMITIVE"); + break; + default: + n += gfxd_printf("0x%08" PRIX32, pm); + break; + } + } + uint32_t unk_mask = ~(ad_mask | cd_mask | ck_mask | tc_mask | tf_mask | + tt_mask | tl_mask | td_mask | tp_mask | + cyc_mask | pm_mask); + if (arg & unk_mask) + { + if (n > 0) + n += gfxd_puts(" | "); + uint32_t unk = arg & unk_mask; + n += gfxd_printf("0x%08" PRIX32, unk); + } + return n; +} + +UCFUNC int argfn_ad(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(ALPHADITHER)); +} + +UCFUNC int argfn_cd(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(RGBDITHER)); +} + +UCFUNC int argfn_ck(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(COMBKEY)); +} + +UCFUNC int argfn_tc(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTCONV)); +} + +UCFUNC int argfn_tf(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTFILT)); +} + +UCFUNC int argfn_tt(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTLUT)); +} + +UCFUNC int argfn_tl(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTLOD)); +} + +UCFUNC int argfn_td(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTDETAIL)); +} + +UCFUNC int argfn_tp(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(TEXTPERSP)); +} + +UCFUNC int argfn_cyc(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(CYCLETYPE)); +} + +UCFUNC int argfn_pm(const gfxd_value_t *v) +{ + return othermodehi_str(v->u, MDMASK(PIPELINE)); +} + +UCFUNC int argfn_othermodehi(const gfxd_value_t *v) +{ + uint32_t mask = MDMASK(ALPHADITHER) | + MDMASK(RGBDITHER) | + MDMASK(COMBKEY) | + MDMASK(TEXTCONV) | + MDMASK(TEXTFILT) | + MDMASK(TEXTLUT) | + MDMASK(TEXTLOD) | + MDMASK(TEXTDETAIL) | + MDMASK(TEXTPERSP) | + MDMASK(CYCLETYPE) | + MDMASK(PIPELINE); + return othermodehi_str(v->u, mask); +} + +UCFUNC int argfn_cv(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_CV_K0: + return gfxd_puts("G_CV_K0"); + case G_CV_K1: + return gfxd_puts("G_CV_K1"); + case G_CV_K2: + return gfxd_puts("G_CV_K2"); + case G_CV_K3: + return gfxd_puts("G_CV_K3"); + case G_CV_K4: + return gfxd_puts("G_CV_K4"); + case G_CV_K5: + return gfxd_puts("G_CV_K5"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_ccmuxa(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_CCMUX_COMBINED: + return gfxd_puts("COMBINED"); + case G_CCMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_CCMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_CCMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_CCMUX_SHADE: + return gfxd_puts("SHADE"); + case G_CCMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_CCMUX_1: + return gfxd_puts("1"); + case G_CCMUX_NOISE: + return gfxd_puts("NOISE"); + default: + return gfxd_puts("0"); + } +} + +UCFUNC int argfn_ccmuxb(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_CCMUX_COMBINED: + return gfxd_puts("COMBINED"); + case G_CCMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_CCMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_CCMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_CCMUX_SHADE: + return gfxd_puts("SHADE"); + case G_CCMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_CCMUX_CENTER: + return gfxd_puts("CENTER"); + case G_CCMUX_K4: + return gfxd_puts("K4"); + default: + return gfxd_puts("0"); + } +} + +UCFUNC int argfn_ccmuxc(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_CCMUX_COMBINED: + return gfxd_puts("COMBINED"); + case G_CCMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_CCMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_CCMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_CCMUX_SHADE: + return gfxd_puts("SHADE"); + case G_CCMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_CCMUX_SCALE: + return gfxd_puts("SCALE"); + case G_CCMUX_COMBINED_ALPHA: + return gfxd_puts("COMBINED_ALPHA"); + case G_CCMUX_TEXEL0_ALPHA: + return gfxd_puts("TEXEL0_ALPHA"); + case G_CCMUX_TEXEL1_ALPHA: + return gfxd_puts("TEXEL1_ALPHA"); + case G_CCMUX_PRIMITIVE_ALPHA: + return gfxd_puts("PRIMITIVE_ALPHA"); + case G_CCMUX_SHADE_ALPHA: + return gfxd_puts("SHADE_ALPHA"); + case G_CCMUX_ENV_ALPHA: + return gfxd_puts("ENV_ALPHA"); + case G_CCMUX_LOD_FRACTION: + return gfxd_puts("LOD_FRACTION"); + case G_CCMUX_PRIM_LOD_FRAC: + return gfxd_puts("PRIM_LOD_FRAC"); + case G_CCMUX_K5: + return gfxd_puts("K5"); + default: + return gfxd_puts("0"); + } +} + +UCFUNC int argfn_ccmuxd(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_CCMUX_COMBINED: + return gfxd_puts("COMBINED"); + case G_CCMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_CCMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_CCMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_CCMUX_SHADE: + return gfxd_puts("SHADE"); + case G_CCMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_CCMUX_1: + return gfxd_puts("1"); + default: + return gfxd_puts("0"); + } +} + +UCFUNC int argfn_acmuxabd(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_ACMUX_COMBINED: + return gfxd_puts("COMBINED"); + case G_ACMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_ACMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_ACMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_ACMUX_SHADE: + return gfxd_puts("SHADE"); + case G_ACMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_ACMUX_1: + return gfxd_puts("1"); + default: + return gfxd_puts("0"); + } +} + +UCFUNC int argfn_acmuxc(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_ACMUX_LOD_FRACTION: + return gfxd_puts("LOD_FRACTION"); + case G_ACMUX_TEXEL0: + return gfxd_puts("TEXEL0"); + case G_ACMUX_TEXEL1: + return gfxd_puts("TEXEL1"); + case G_ACMUX_PRIMITIVE: + return gfxd_puts("PRIMITIVE"); + case G_ACMUX_SHADE: + return gfxd_puts("SHADE"); + case G_ACMUX_ENVIRONMENT: + return gfxd_puts("ENVIRONMENT"); + case G_ACMUX_PRIM_LOD_FRAC: + return gfxd_puts("PRIM_LOD_FRAC"); + default: + return gfxd_puts("0"); + } +} + +struct cc_mode +{ + int a; + int b; + int c; + int d; + int Aa; + int Ab; + int Ac; + int Ad; +}; + +struct cc_preset +{ + struct cc_mode mode; + const char * name; +}; + +#define CC_(a,b,c,d,Aa,Ab,Ac,Ad) \ + { \ + G_CCMUX_##a, G_CCMUX_##b, \ + G_CCMUX_##c, G_CCMUX_##d, \ + G_ACMUX_##Aa, G_ACMUX_##Ab, \ + G_ACMUX_##Ac, G_ACMUX_##Ad \ + } +#define CC(m) CC_(m) +static const struct cc_preset cc_presets[] = +{ + {CC(G_CC_MODULATEI), "G_CC_MODULATEI"}, + {CC(G_CC_MODULATEIA), "G_CC_MODULATEIA"}, + {CC(G_CC_MODULATEIDECALA), "G_CC_MODULATEIDECALA"}, + {CC(G_CC_MODULATERGB), "G_CC_MODULATERGB"}, + {CC(G_CC_MODULATERGBA), "G_CC_MODULATERGBA"}, + {CC(G_CC_MODULATERGBDECALA), "G_CC_MODULATERGBDECALA"}, + {CC(G_CC_MODULATEI_PRIM), "G_CC_MODULATEI_PRIM"}, + {CC(G_CC_MODULATEIA_PRIM), "G_CC_MODULATEIA_PRIM"}, + {CC(G_CC_MODULATEIDECALA_PRIM), "G_CC_MODULATEIDECALA_PRIM"}, + {CC(G_CC_MODULATERGB_PRIM), "G_CC_MODULATERGB_PRIM"}, + {CC(G_CC_MODULATERGBA_PRIM), "G_CC_MODULATERGBA_PRIM"}, + {CC(G_CC_MODULATERGBDECALA_PRIM), "G_CC_MODULATERGBDECALA_PRIM"}, + {CC(G_CC_DECALRGB), "G_CC_DECALRGB"}, + {CC(G_CC_DECALRGBA), "G_CC_DECALRGBA"}, + {CC(G_CC_BLENDI), "G_CC_BLENDI"}, + {CC(G_CC_BLENDIA), "G_CC_BLENDIA"}, + {CC(G_CC_BLENDIDECALA), "G_CC_BLENDIDECALA"}, + {CC(G_CC_BLENDRGBA), "G_CC_BLENDRGBA"}, + {CC(G_CC_BLENDRGBDECALA), "G_CC_BLENDRGBDECALA"}, + {CC(G_CC_REFLECTRGB), "G_CC_REFLECTRGB"}, + {CC(G_CC_REFLECTRGBDECALA), "G_CC_REFLECTRGBDECALA"}, + {CC(G_CC_HILITERGB), "G_CC_HILITERGB"}, + {CC(G_CC_HILITERGBA), "G_CC_HILITERGBA"}, + {CC(G_CC_HILITERGBDECALA), "G_CC_HILITERGBDECALA"}, + {CC(G_CC_1CYUV2RGB), "G_CC_1CYUV2RGB"}, + {CC(G_CC_PRIMITIVE), "G_CC_PRIMITIVE"}, + {CC(G_CC_SHADE), "G_CC_SHADE"}, + {CC(G_CC_ADDRGB), "G_CC_ADDRGB"}, + {CC(G_CC_ADDRGBDECALA), "G_CC_ADDRGBDECALA"}, + {CC(G_CC_SHADEDECALA), "G_CC_SHADEDECALA"}, + {CC(G_CC_BLENDPE), "G_CC_BLENDPE"}, + {CC(G_CC_BLENDPEDECALA), "G_CC_BLENDPEDECALA"}, + {CC(G_CC_TRILERP), "G_CC_TRILERP"}, + {CC(G_CC_TEMPLERP), "G_CC_TEMPLERP"}, + {CC(G_CC_INTERFERENCE), "G_CC_INTERFERENCE"}, + {CC(_G_CC_BLENDPE), "_G_CC_BLENDPE"}, + {CC(_G_CC_BLENDPEDECALA), "_G_CC_BLENDPEDECALA"}, + {CC(_G_CC_SPARSEST), "_G_CC_SPARSEST"}, + {CC(_G_CC_TWOCOLORTEX), "_G_CC_TWOCOLORTEX"}, + {CC(G_CC_MODULATEI2), "G_CC_MODULATEI2"}, + {CC(G_CC_MODULATEIA2), "G_CC_MODULATEIA2"}, + {CC(G_CC_MODULATERGB2), "G_CC_MODULATERGB2"}, + {CC(G_CC_MODULATERGBA2), "G_CC_MODULATERGBA2"}, + {CC(G_CC_MODULATEI_PRIM2), "G_CC_MODULATEI_PRIM2"}, + {CC(G_CC_MODULATEIA_PRIM2), "G_CC_MODULATEIA_PRIM2"}, + {CC(G_CC_MODULATERGB_PRIM2), "G_CC_MODULATERGB_PRIM2"}, + {CC(G_CC_MODULATERGBA_PRIM2), "G_CC_MODULATERGBA_PRIM2"}, + {CC(G_CC_DECALRGB2), "G_CC_DECALRGB2"}, + {CC(G_CC_BLENDI2), "G_CC_BLENDI2"}, + {CC(G_CC_BLENDIA2), "G_CC_BLENDIA2"}, + {CC(G_CC_HILITERGB2), "G_CC_HILITERGB2"}, + {CC(G_CC_HILITERGBA2), "G_CC_HILITERGBA2"}, + {CC(G_CC_HILITERGBDECALA2), "G_CC_HILITERGBDECALA2"}, + {CC(G_CC_HILITERGBPASSA2), "G_CC_HILITERGBPASSA2"}, + {CC(G_CC_CHROMA_KEY2), "G_CC_CHROMA_KEY2"}, + {CC(G_CC_YUV2RGB), "G_CC_YUV2RGB"}, + {CC(G_CC_PASS2), "G_CC_PASS2"}, +}; +#undef CC_ +#undef CC + +UCFUNC int argfn_ccpre(const gfxd_value_t *v) +{ + return gfxd_printf("%s", cc_presets[v->i].name); +} + +UCFUNC int argfn_sc(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_SC_NON_INTERLACE: + return gfxd_puts("G_SC_NON_INTERLACE"); + case G_SC_EVEN_INTERLACE: + return gfxd_puts("G_SC_EVEN_INTERLACE"); + case G_SC_ODD_INTERLACE: + return gfxd_puts("G_SC_ODD_INTERLACE"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int argfn_bz(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_BZ_PERSP: + return gfxd_puts("G_BZ_PERSP"); + default: + return gfxd_puts("G_BZ_ORTHO"); + } +} +#endif + +UCFUNC int argfn_dlf(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_DL_PUSH: + return gfxd_puts("G_DL_PUSH"); + case G_DL_NOPUSH: + return gfxd_puts("G_DL_NOPUSH"); + default: + return gfxd_printf("%" PRIi32, v->i);; + } +} + +UCFUNC int argfn_mp(const gfxd_value_t *v) +{ + int n = 0; + if (v->u & G_MTX_PUSH) + n += gfxd_puts("G_MTX_PUSH"); + else + n += gfxd_puts("G_MTX_NOPUSH"); + if (v->u & G_MTX_LOAD) + n += gfxd_puts(" | G_MTX_LOAD"); + else + n += gfxd_puts(" | G_MTX_MUL"); + if (v->u & G_MTX_PROJECTION) + n += gfxd_puts(" | G_MTX_PROJECTION"); + else + n += gfxd_puts(" | G_MTX_MODELVIEW"); + for (int i = 3; i < 8; i++) + if (v->u & (1 << i)) + n += gfxd_printf(" | 0x%02x", 1 << i); + return n; +} + +UCFUNC int argfn_ms(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_MTX_MODELVIEW: + return gfxd_puts("G_MTX_MODELVIEW"); + case G_MTX_PROJECTION: + return gfxd_puts("G_MTX_PROJECTION"); + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_mw(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_MW_MATRIX: + return gfxd_puts("G_MW_MATRIX"); + case G_MW_NUMLIGHT: + return gfxd_puts("G_MW_NUMLIGHT"); + case G_MW_CLIP: + return gfxd_puts("G_MW_CLIP"); + case G_MW_SEGMENT: + return gfxd_puts("G_MW_SEGMENT"); + case G_MW_FOG: + return gfxd_puts("G_MW_FOG"); + case G_MW_LIGHTCOL: + return gfxd_puts("G_MW_LIGHTCOL"); + case G_MW_PERSPNORM: + return gfxd_puts("G_MW_PERSPNORM"); +#if defined(F3D_GBI) || defined(F3DEX_GBI) + case G_MW_POINTS: + return gfxd_puts("G_MW_POINTS"); +#endif +#if defined(F3DEX_GBI_2) + case G_MW_FORCEMTX: + return gfxd_puts("G_MW_FORCEMTX"); +#endif + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_mwo_clip(const gfxd_value_t *v) +{ + switch (v->u) + { + case G_MWO_CLIP_RNX: + return gfxd_puts("G_MWO_CLIP_RNX"); + case G_MWO_CLIP_RNY: + return gfxd_puts("G_MWO_CLIP_RNY"); + case G_MWO_CLIP_RPX: + return gfxd_puts("G_MWO_CLIP_RPX"); + case G_MWO_CLIP_RPY: + return gfxd_puts("G_MWO_CLIP_RPY"); + default: + return gfxd_printf("0x%04" PRIX32, v->u); + } +} + +UCFUNC int argfn_mwo_lightcol(const gfxd_value_t *v) +{ + switch (v->u) + { + case G_MWO_aLIGHT_1: + return gfxd_puts("G_MWO_aLIGHT_1"); + case G_MWO_bLIGHT_1: + return gfxd_puts("G_MWO_bLIGHT_1"); + case G_MWO_aLIGHT_2: + return gfxd_puts("G_MWO_aLIGHT_2"); + case G_MWO_bLIGHT_2: + return gfxd_puts("G_MWO_bLIGHT_2"); + case G_MWO_aLIGHT_3: + return gfxd_puts("G_MWO_aLIGHT_3"); + case G_MWO_bLIGHT_3: + return gfxd_puts("G_MWO_bLIGHT_3"); + case G_MWO_aLIGHT_4: + return gfxd_puts("G_MWO_aLIGHT_4"); + case G_MWO_bLIGHT_4: + return gfxd_puts("G_MWO_bLIGHT_4"); + case G_MWO_aLIGHT_5: + return gfxd_puts("G_MWO_aLIGHT_5"); + case G_MWO_bLIGHT_5: + return gfxd_puts("G_MWO_bLIGHT_5"); + case G_MWO_aLIGHT_6: + return gfxd_puts("G_MWO_aLIGHT_6"); + case G_MWO_bLIGHT_6: + return gfxd_puts("G_MWO_bLIGHT_6"); + case G_MWO_aLIGHT_7: + return gfxd_puts("G_MWO_aLIGHT_7"); + case G_MWO_bLIGHT_7: + return gfxd_puts("G_MWO_bLIGHT_7"); + case G_MWO_aLIGHT_8: + return gfxd_puts("G_MWO_aLIGHT_8"); + case G_MWO_bLIGHT_8: + return gfxd_puts("G_MWO_bLIGHT_8"); + default: + return gfxd_printf("0x%04" PRIX32, v->u); + } +} + +UCFUNC int argfn_lightnum(const gfxd_value_t *v) +{ + return gfxd_printf("LIGHT_%" PRIi32, v->i); +} + +UCFUNC int argfn_lightsn(const gfxd_value_t *v) +{ + return gfxd_printf("*(Lightsn *)0x%08" PRIX32, v->u); +} + +UCFUNC int argfn_mwo_matrix(const gfxd_value_t *v) +{ + switch (v->u) + { + case G_MWO_MATRIX_XX_XY_I: + return gfxd_puts("G_MWO_MATRIX_XX_XY_I"); + case G_MWO_MATRIX_XZ_XW_I: + return gfxd_puts("G_MWO_MATRIX_XZ_XW_I"); + case G_MWO_MATRIX_YX_YY_I: + return gfxd_puts("G_MWO_MATRIX_YX_YY_I"); + case G_MWO_MATRIX_YZ_YW_I: + return gfxd_puts("G_MWO_MATRIX_YZ_YW_I"); + case G_MWO_MATRIX_ZX_ZY_I: + return gfxd_puts("G_MWO_MATRIX_ZX_ZY_I"); + case G_MWO_MATRIX_ZZ_ZW_I: + return gfxd_puts("G_MWO_MATRIX_ZZ_ZW_I"); + case G_MWO_MATRIX_WX_WY_I: + return gfxd_puts("G_MWO_MATRIX_WX_WY_I"); + case G_MWO_MATRIX_WZ_WW_I: + return gfxd_puts("G_MWO_MATRIX_WZ_WW_I"); + case G_MWO_MATRIX_XX_XY_F: + return gfxd_puts("G_MWO_MATRIX_XX_XY_F"); + case G_MWO_MATRIX_XZ_XW_F: + return gfxd_puts("G_MWO_MATRIX_XZ_XW_F"); + case G_MWO_MATRIX_YX_YY_F: + return gfxd_puts("G_MWO_MATRIX_YX_YY_F"); + case G_MWO_MATRIX_YZ_YW_F: + return gfxd_puts("G_MWO_MATRIX_YZ_YW_F"); + case G_MWO_MATRIX_ZX_ZY_F: + return gfxd_puts("G_MWO_MATRIX_ZX_ZY_F"); + case G_MWO_MATRIX_ZZ_ZW_F: + return gfxd_puts("G_MWO_MATRIX_ZZ_ZW_F"); + case G_MWO_MATRIX_WX_WY_F: + return gfxd_puts("G_MWO_MATRIX_WX_WY_F"); + case G_MWO_MATRIX_WZ_WW_F: + return gfxd_puts("G_MWO_MATRIX_WZ_WW_F"); + default: + return gfxd_printf("0x%04" PRIX32, v->u); + } +} + +UCFUNC int argfn_mwo_point(const gfxd_value_t *v) +{ + switch (v->u) + { + case G_MWO_POINT_RGBA: + return gfxd_puts("G_MWO_POINT_RGBA"); + case G_MWO_POINT_ST: + return gfxd_puts("G_MWO_POINT_ST"); + case G_MWO_POINT_XYSCREEN: + return gfxd_puts("G_MWO_POINT_XYSCREEN"); + case G_MWO_POINT_ZSCREEN: + return gfxd_puts("G_MWO_POINT_ZSCREEN"); + default: + return gfxd_printf("0x%04" PRIX32, v->u); + } +} + +UCFUNC int argfn_mv(const gfxd_value_t *v) +{ + switch (v->i) + { + case G_MV_VIEWPORT: + return gfxd_puts("G_MV_VIEWPORT"); +#if defined(F3D_GBI) || defined(F3DEX_GBI) + case G_MV_LOOKATY: + return gfxd_puts("G_MV_LOOKATY"); + case G_MV_LOOKATX: + return gfxd_puts("G_MV_LOOKATX"); + case G_MV_L0: + return gfxd_puts("G_MV_L0"); + case G_MV_L1: + return gfxd_puts("G_MV_L1"); + case G_MV_L2: + return gfxd_puts("G_MV_L2"); + case G_MV_L3: + return gfxd_puts("G_MV_L3"); + case G_MV_L4: + return gfxd_puts("G_MV_L4"); + case G_MV_L5: + return gfxd_puts("G_MV_L5"); + case G_MV_L6: + return gfxd_puts("G_MV_L6"); + case G_MV_L7: + return gfxd_puts("G_MV_L7"); + case G_MV_TXTATT: + return gfxd_puts("G_MV_TXTATT"); + case G_MV_MATRIX_2: + return gfxd_puts("G_MV_MATRIX_2"); + case G_MV_MATRIX_3: + return gfxd_puts("G_MV_MATRIX_3"); + case G_MV_MATRIX_4: + return gfxd_puts("G_MV_MATRIX_4"); + case G_MV_MATRIX_1: + return gfxd_puts("G_MV_MATRIX_1"); +#elif defined(F3DEX_GBI_2) + case G_MV_MMTX: + return gfxd_puts("G_MV_MMTX"); + case G_MV_PMTX: + return gfxd_puts("G_MV_PMTX"); + case G_MV_LIGHT: + return gfxd_puts("G_MV_LIGHT"); + case G_MV_POINT: + return gfxd_puts("G_MV_POINT"); + case G_MV_MATRIX: + return gfxd_puts("G_MV_MATRIX"); +#endif + default: + return gfxd_printf("%" PRIi32, v->i); + } +} + +UCFUNC int argfn_cr(const gfxd_value_t *v) +{ + switch (v->u) + { + case FRUSTRATIO_1: + return gfxd_puts("FRUSTRATIO_1"); + case FRUSTRATIO_2: + return gfxd_puts("FRUSTRATIO_2"); + case FRUSTRATIO_3: + return gfxd_puts("FRUSTRATIO_3"); + case FRUSTRATIO_4: + return gfxd_puts("FRUSTRATIO_4"); + case FRUSTRATIO_5: + return gfxd_puts("FRUSTRATIO_5"); + case FRUSTRATIO_6: + return gfxd_puts("FRUSTRATIO_6"); + default: + return gfxd_printf("%" PRIu32, v->u); + } +} diff --git a/extern/libgfxd/uc_argtbl.c b/extern/libgfxd/uc_argtbl.c new file mode 100644 index 000000000..22a0b6500 --- /dev/null +++ b/extern/libgfxd/uc_argtbl.c @@ -0,0 +1,485 @@ +static const gfxd_arg_type_t arg_tbl[] = +{ + [gfxd_Word] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Opcode] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_opc, + }, + [gfxd_Coordi] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_u, + }, + [gfxd_Coordq] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_qu102, + }, + [gfxd_Pal] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Tlut] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Timg] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Tmem] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x16, + }, + [gfxd_Tile] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_tile, + }, + [gfxd_Fmt] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_fmt, + }, + [gfxd_Siz] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_siz, + }, + [gfxd_Dim] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Cm] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_cm, + }, + [gfxd_Tm] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_tm, + }, + [gfxd_Ts] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ts, + }, + [gfxd_Dxt] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_u, + }, + [gfxd_Tag] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Pm] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_pm, + }, + [gfxd_Colorpart] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_color, + }, + [gfxd_Color] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Lodfrac] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_qu08, + }, + [gfxd_Cimg] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Zimg] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Ac] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_ac, + }, + [gfxd_Ad] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_ad, + }, + [gfxd_Cd] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_cd, + }, + [gfxd_Ccpre] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_ccpre, + }, + [gfxd_Ccmuxa] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ccmuxa, + }, + [gfxd_Ccmuxb] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ccmuxb, + }, + [gfxd_Ccmuxc] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ccmuxc, + }, + [gfxd_Ccmuxd] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ccmuxd, + }, + [gfxd_Acmuxabd] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_acmuxabd, + }, + [gfxd_Acmuxc] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_acmuxc, + }, + [gfxd_Cv] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_cv, + }, + [gfxd_Tc] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_tc, + }, + [gfxd_Cyc] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_cyc, + }, + [gfxd_Zs] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_zs, + }, + [gfxd_Ck] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_ck, + }, + [gfxd_Keyscale] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_color, + }, + [gfxd_Keywidth] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_qs48, + }, + [gfxd_Zi] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Rm1] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_rm1, + }, + [gfxd_Rm2] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_rm2, + }, + [gfxd_Sc] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_sc, + }, + [gfxd_Td] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_td, + }, + [gfxd_Tf] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_tf, + }, + [gfxd_Tl] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_tl, + }, + [gfxd_Tt] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_tt, + }, + [gfxd_Tp] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_tp, + }, + [gfxd_Line] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Vtx] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Vtxflag] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Dl] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_Zraw] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_qs1616, + }, +#endif + [gfxd_Dlflag] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_dlf, + }, + [gfxd_Cr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_cr, + }, + [gfxd_Num] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Fogz] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Fogp] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Mtxptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Gm] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_gm, + }, + [gfxd_Mwo_matrix] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_mwo_matrix, + }, + [gfxd_Linewd] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Uctext] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Ucdata] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Size] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x16, + }, + [gfxd_Lookatptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Mtxparam] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_mp, + }, + [gfxd_Mtxstack] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_ms, + }, + [gfxd_Mwo_point] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_mwo_point, + }, + [gfxd_Wscale] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_qu016, + }, + [gfxd_Seg] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x8, + }, + [gfxd_Segptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Lightsn] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_lightsn, + }, + [gfxd_Numlights] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, + [gfxd_Lightnum] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_lightnum, + }, + [gfxd_Lightptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Tcscale] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_qu016, + }, + [gfxd_Switch] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_switch, + }, + [gfxd_St] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_qs105, + }, + [gfxd_Stdelta] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_qs510, + }, + [gfxd_Vtxptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Vpptr] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Dram] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x32, + }, + [gfxd_Sftlo] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_sftlo, + }, + [gfxd_Othermodelo] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_othermodelo, + }, + [gfxd_Sfthi] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_sfthi, + }, + [gfxd_Othermodehi] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_othermodehi, + }, + [gfxd_Mw] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_mw, + }, + [gfxd_Mwo] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x16, + }, + [gfxd_Mwo_clip] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_mwo_clip, + }, + [gfxd_Mwo_lightcol] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_mwo_lightcol, + }, + [gfxd_Mv] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_mv, + }, + [gfxd_Mvo] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x16, + }, + [gfxd_Dmem] = + { + .fmt = gfxd_argfmt_u, + .fn = argfn_x16, + }, + [gfxd_Dmaflag] = + { + .fmt = gfxd_argfmt_i, + .fn = argfn_i, + }, +}; diff --git a/extern/libgfxd/uc_f3d.c b/extern/libgfxd/uc_f3d.c new file mode 100644 index 000000000..946551510 --- /dev/null +++ b/extern/libgfxd/uc_f3d.c @@ -0,0 +1,4 @@ +#define uc_name gfxd_f3d +#define F3D_GBI + +#include "uc.c" diff --git a/extern/libgfxd/uc_f3db.c b/extern/libgfxd/uc_f3db.c new file mode 100644 index 000000000..cd4990412 --- /dev/null +++ b/extern/libgfxd/uc_f3db.c @@ -0,0 +1,5 @@ +#define uc_name gfxd_f3db +#define F3D_GBI +#define F3D_BETA + +#include "uc.c" diff --git a/extern/libgfxd/uc_f3dex.c b/extern/libgfxd/uc_f3dex.c new file mode 100644 index 000000000..2ec70d8ab --- /dev/null +++ b/extern/libgfxd/uc_f3dex.c @@ -0,0 +1,4 @@ +#define uc_name gfxd_f3dex +#define F3DEX_GBI + +#include "uc.c" diff --git a/extern/libgfxd/uc_f3dex2.c b/extern/libgfxd/uc_f3dex2.c new file mode 100644 index 000000000..9a19c9903 --- /dev/null +++ b/extern/libgfxd/uc_f3dex2.c @@ -0,0 +1,4 @@ +#define uc_name gfxd_f3dex2 +#define F3DEX_GBI_2 + +#include "uc.c" diff --git a/extern/libgfxd/uc_f3dexb.c b/extern/libgfxd/uc_f3dexb.c new file mode 100644 index 000000000..2b5c30a4a --- /dev/null +++ b/extern/libgfxd/uc_f3dexb.c @@ -0,0 +1,5 @@ +#define uc_name gfxd_f3dexb +#define F3DEX_GBI +#define F3D_BETA + +#include "uc.c" diff --git a/extern/libgfxd/uc_macrofn.c b/extern/libgfxd/uc_macrofn.c new file mode 100644 index 000000000..46d4b4ee8 --- /dev/null +++ b/extern/libgfxd/uc_macrofn.c @@ -0,0 +1,2507 @@ +static inline uint32_t getfield(uint32_t w, int n, int s) +{ + return (w >> s) & (((uint32_t)1 << n) - 1); +} + +static inline int32_t argvi(gfxd_macro_t *m, int idx) +{ + return m->arg[idx].value.i; +} + +static inline uint32_t argvu(gfxd_macro_t *m, int idx) +{ + return m->arg[idx].value.u; +} + +static inline float argvf(gfxd_macro_t *m, int idx) +{ + return m->arg[idx].value.f; +} + +static inline void argi(gfxd_macro_t *m, int idx, const char *name, + int32_t value, int type) +{ + m->arg[idx].type = type; + m->arg[idx].name = name; + m->arg[idx].value.i = value; + m->arg[idx].bad = 0; +} + +static inline void argu(gfxd_macro_t *m, int idx, const char *name, + uint32_t value, int type) +{ + m->arg[idx].type = type; + m->arg[idx].name = name; + m->arg[idx].value.u = value; + m->arg[idx].bad = 0; +} + +static inline void argf(gfxd_macro_t *m, int idx, const char *name, + float value, int type) +{ + m->arg[idx].type = type; + m->arg[idx].name = name; + m->arg[idx].value.f = value; + m->arg[idx].bad = 0; +} + +static inline void badarg(gfxd_macro_t *m, int idx) +{ + m->arg[idx].bad = 1; +} + +UCFUNC int32_t sx(uint32_t n, int bits) +{ + int32_t smin = (int32_t)1 << (bits - 1); + int32_t smax = (int32_t)1 << bits; + int32_t i = n; + if (i < smin) + return i; + else + return i - smax; +} + +UCFUNC int d_Invalid(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_Invalid; + argu(m, 0, "hi", hi, gfxd_Word); + argu(m, 1, "lo", lo, gfxd_Word); + return -1; +} + +UCFUNC int d_DPFillRectangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPFillRectangle; + argu(m, 0, "ulx", getfield(lo, 10, 14), gfxd_Coordi); + argu(m, 1, "uly", getfield(lo, 10, 2), gfxd_Coordi); + argu(m, 2, "lrx", getfield(hi, 10, 14), gfxd_Coordi); + argu(m, 3, "lry", getfield(hi, 10, 2), gfxd_Coordi); + return 0; +} + +UCFUNC int d_DPFullSync(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPFullSync; + return 0; +} + +UCFUNC int d_DPLoadSync(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPLoadSync; + return 0; +} + +UCFUNC int d_DPTileSync(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPTileSync; + return 0; +} + +UCFUNC int d_DPPipeSync(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPPipeSync; + return 0; +} + +UCFUNC int c_DPLoadTLUT_pal16(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 6) + return -1; + if (m[0].id != gfxd_DPSetTextureImage + || argvi(&m[0], 0) != G_IM_FMT_RGBA + || argvi(&m[0], 1) != G_IM_SIZ_16b + || argvi(&m[0], 2) != 1) + { + return -1; + } + uint32_t dram = argvu(&m[0], 3); + if (m[1].id != gfxd_DPTileSync) + return -1; + if (m[2].id != gfxd_DPSetTile + || argvi(&m[2], 0) != 0 + || argvi(&m[2], 1) != 0 + || argvi(&m[2], 2) != 0 + || argvu(&m[2], 3) < 0x100 + || argvu(&m[2], 3) % 0x10 != 0 + || argvi(&m[2], 4) != G_TX_LOADTILE + || argvi(&m[2], 5) != 0 + || argvu(&m[2], 6) != 0 + || argvi(&m[2], 7) != 0 + || argvi(&m[2], 8) != 0 + || argvu(&m[2], 9) != 0 + || argvi(&m[2], 10) != 0 + || argvi(&m[2], 11) != 0) + { + return -1; + } + int pal = (argvu(&m[2], 3) - 0x100) / 0x10; + if (m[3].id != gfxd_DPLoadSync) + return -1; + if (m[4].id != gfxd_DPLoadTLUTCmd + || argvi(&m[4], 0) != G_TX_LOADTILE + || argvi(&m[4], 1) != 15) + { + return -1; + } + if (m[5].id != gfxd_DPPipeSync) + return -1; + m->id = gfxd_DPLoadTLUT_pal16; + argi(m, 0, "pal", pal, gfxd_Pal); + argu(m, 1, "dram", dram, gfxd_Tlut); + return 0; +} + +UCFUNC int c_DPLoadTLUT_pal256(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 6) + return -1; + if (m[0].id != gfxd_DPSetTextureImage + || argvi(&m[0], 0) != G_IM_FMT_RGBA + || argvi(&m[0], 1) != G_IM_SIZ_16b + || argvi(&m[0], 2) != 1) + { + return -1; + } + uint32_t dram = argvu(&m[0], 3); + if (m[1].id != gfxd_DPTileSync) + return -1; + if (m[2].id != gfxd_DPSetTile + || argvi(&m[2], 0) != 0 + || argvi(&m[2], 1) != 0 + || argvi(&m[2], 2) != 0 + || argvu(&m[2], 3) != 0x100 + || argvi(&m[2], 4) != G_TX_LOADTILE + || argvi(&m[2], 5) != 0 + || argvu(&m[2], 6) != 0 + || argvi(&m[2], 7) != 0 + || argvi(&m[2], 8) != 0 + || argvu(&m[2], 9) != 0 + || argvi(&m[2], 10) != 0 + || argvi(&m[2], 11) != 0) + { + return -1; + } + if (m[3].id != gfxd_DPLoadSync) + return -1; + if (m[4].id != gfxd_DPLoadTLUTCmd + || argvi(&m[4], 0) != G_TX_LOADTILE + || argvi(&m[4], 1) != 255) + { + return -1; + } + if (m[5].id != gfxd_DPPipeSync) + return -1; + m->id = gfxd_DPLoadTLUT_pal256; + argu(m, 0, "dram", dram, gfxd_Tlut); + return 0; +} + +UCFUNC int c_ltb(gfxd_macro_t *m, int n_macro, int id, int mdxt, int mtmem, + int mrt, int myuv, int m4b) +{ + if (n_macro < 7) + return -1; + if (m[0].id != gfxd_DPSetTextureImage || argvi(&m[0], 2) != 1) + return -1; + g_ifmt_t fmt = argvi(&m[0], 0); + g_isiz_t ldsiz = argvi(&m[0], 1); + uint32_t timg = argvu(&m[0], 3); + if (myuv && fmt != G_IM_FMT_YUV) + return -1; + if (m[1].id != gfxd_DPSetTile + || argvi(&m[1], 0) != fmt + || argvi(&m[1], 1) != ldsiz + || argvi(&m[1], 2) != 0 + || argvi(&m[1], 4) != G_TX_LOADTILE + || argvi(&m[1], 5) != 0) + { + return -1; + } + uint32_t tmem = argvu(&m[1], 3); + unsigned cms = argvu(&m[1], 9); + unsigned cmt = argvu(&m[1], 6); + int masks = argvi(&m[1], 10); + int maskt = argvi(&m[1], 7); + int shifts = argvi(&m[1], 11); + int shiftt = argvi(&m[1], 8); + if (m[2].id != gfxd_DPLoadSync) + return -1; + if (m[3].id != gfxd_DPLoadBlock + || argvi(&m[3], 0) != G_TX_LOADTILE + || argvu(&m[3], 1) != 0 + || argvu(&m[3], 2) != 0) + { + return -1; + } + qu102_t ldlrs = argvu(&m[3], 3); + unsigned lddxt = argvu(&m[3], 4); + if (m[4].id != gfxd_DPPipeSync) + return -1; + if (m[5].id != gfxd_DPSetTile + || argvi(&m[5], 0) != fmt + || G_SIZ_LDSIZ(argvi(&m[5], 1)) != ldsiz + || argvu(&m[5], 3) != tmem + || argvu(&m[5], 6) != cmt + || argvi(&m[5], 7) != maskt + || argvi(&m[5], 8) != shiftt + || argvu(&m[5], 9) != cms + || argvi(&m[5], 10) != masks + || argvi(&m[5], 11) != shifts) + { + return -1; + } + int siz = argvi(&m[5], 1); + int rdline = argvi(&m[5], 2); + int rt = argvi(&m[5], 4); + int pal = argvi(&m[5], 5); + if (m4b && siz != G_IM_SIZ_4b) + return -1; + if (!(mrt && rt != G_TX_RENDERTILE && tmem == 0) + && (tmem != 0) != mtmem) + { + return -1; + } + if ((rt != G_TX_RENDERTILE) != mrt) + return -1; + if (m[6].id != gfxd_DPSetTileSize + || argvi(&m[6], 0) != rt + || argvu(&m[6], 1) != 0 + || argvu(&m[6], 2) != 0 + || (argvu(&m[6], 3) & 3) + || (argvu(&m[6], 4) & 3)) + { + return -1; + } + int width = (argvu(&m[6], 3) >> 2) + 1; + int height = (argvu(&m[6], 4) >> 2) + 1; + unsigned lrs = G_LDBLK_TXL(G_LTB_LRS(width, height, siz)); + unsigned dxt = 0; + if (!mdxt) + dxt = G_DXT(siz, width); + int line; + if (myuv) + line = (width + 7) / 8; + else + line = (width * G_SIZ_LDBITS(siz) + 63) / 64; + if (ldlrs != lrs || lddxt != dxt || rdline != line) + return -1; + m->id = id; + int i = 0; + argu(m, i++, "timg", timg, gfxd_Timg); + if (mtmem) + argu(m, i++, "tmem", tmem, gfxd_Tmem); + if (mrt) + argi(m, i++, "rtile", rt, gfxd_Tile); + argi(m, i++, "fmt", fmt, gfxd_Fmt); + if (!m4b) + argi(m, i++, "siz", siz, gfxd_Siz); + argi(m, i++, "width", width, gfxd_Dim); + argi(m, i++, "height", height, gfxd_Dim); + argi(m, i++, "pal", pal, gfxd_Pal); + argu(m, i++, "cms", cms, gfxd_Cm); + argu(m, i++, "cmt", cmt, gfxd_Cm); + argi(m, i++, "masks", masks, gfxd_Tm); + argi(m, i++, "maskt", maskt, gfxd_Tm); + argi(m, i++, "shifts", shifts, gfxd_Ts); + argi(m, i++, "shiftt", shiftt, gfxd_Ts); + return 0; +} + +UCFUNC int c_DPLoadMultiBlockYuvS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlockYuvS, 1, 1, 1, 1, 0); +} + +UCFUNC int c_DPLoadMultiBlockYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlockYuv, 0, 1, 1, 1, 0); +} + +UCFUNC int c_DPLoadMultiBlock_4bS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlock_4bS, 1, 1, 1, 0, 1); +} + +UCFUNC int c_DPLoadMultiBlock_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlock_4b, 0, 1, 1, 0, 1); +} + +UCFUNC int c_DPLoadMultiBlockS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlockS, 1, 1, 1, 0, 0); +} + +UCFUNC int c_DPLoadMultiBlock(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadMultiBlock, 0, 1, 1, 0, 0); +} + +UCFUNC int c__DPLoadTextureBlockYuvS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlockYuvS, 1, 1, 0, 1, 0); +} + +UCFUNC int c__DPLoadTextureBlockYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlockYuv, 0, 1, 0, 1, 0); +} + +UCFUNC int c__DPLoadTextureBlock_4bS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlock_4bS, 1, 1, 0, 0, 1); +} + +UCFUNC int c__DPLoadTextureBlock_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlock_4b, 0, 1, 0, 0, 1); +} + +UCFUNC int c__DPLoadTextureBlockS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlockS, 1, 1, 0, 0, 0); +} + +UCFUNC int c__DPLoadTextureBlock(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd__DPLoadTextureBlock, 0, 1, 0, 0, 0); +} + +UCFUNC int c_DPLoadTextureBlockYuvS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlockYuvS, 1, 0, 0, 1, 0); +} + +UCFUNC int c_DPLoadTextureBlockYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlockYuv, 0, 0, 0, 1, 0); +} + +UCFUNC int c_DPLoadTextureBlock_4bS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlock_4bS, 1, 0, 0, 0, 1); +} + +UCFUNC int c_DPLoadTextureBlock_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlock_4b, 0, 0, 0, 0, 1); +} + +UCFUNC int c_DPLoadTextureBlockS(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlockS, 1, 0, 0, 0, 0); +} + +UCFUNC int c_DPLoadTextureBlock(gfxd_macro_t *m, int n_macro) +{ + return c_ltb(m, n_macro, gfxd_DPLoadTextureBlock, 0, 0, 0, 0, 0); +} + +UCFUNC int c_ltt(gfxd_macro_t *m, int n_macro, int id, int mtmem, int mrt, + int myuv, int m4b) +{ + if (n_macro < 7) + return -1; + if (m[0].id != gfxd_DPSetTextureImage) + return -1; + g_ifmt_t fmt = argvi(&m[0], 0); + g_isiz_t ldsiz = argvi(&m[0], 1); + int width = argvi(&m[0], 2); + if (m4b) + { + if (ldsiz != G_IM_SIZ_8b) + return -1; + width *= 2; + } + uint32_t timg = argvu(&m[0], 3); + if (myuv && fmt != G_IM_FMT_YUV) + return -1; + if (m[1].id != gfxd_DPSetTile + || argvi(&m[1], 0) != fmt + || argvi(&m[1], 1) != ldsiz + || argvi(&m[1], 4) != G_TX_LOADTILE + || argvi(&m[1], 5) != 0) + { + return -1; + } + int ldline = argvi(&m[1], 2); + uint32_t tmem = argvu(&m[1], 3); + unsigned cms = argvu(&m[1], 9); + unsigned cmt = argvu(&m[1], 6); + int masks = argvi(&m[1], 10); + int maskt = argvi(&m[1], 7); + int shifts = argvi(&m[1], 11); + int shiftt = argvi(&m[1], 8); + if (m[2].id != gfxd_DPLoadSync) + return -1; + if (m[3].id != gfxd_DPLoadTile + || argvi(&m[3], 0) != G_TX_LOADTILE + || (argvu(&m[3], 1) & 1) + || (argvu(&m[3], 2) & 3) + || (argvu(&m[3], 3) & 1) + || (argvu(&m[3], 4) & 3)) + { + return -1; + } + qu102_t lduls = argvu(&m[3], 1); + qu102_t ldult = argvu(&m[3], 2); + qu102_t ldlrs = argvu(&m[3], 3); + qu102_t ldlrt = argvu(&m[3], 4); + if (m[4].id != gfxd_DPPipeSync) + return -1; + if (m[5].id != gfxd_DPSetTile + || argvi(&m[5], 0) != fmt + || argvi(&m[5], 2) != ldline + || argvu(&m[5], 3) != tmem + || argvu(&m[5], 6) != cmt + || argvi(&m[5], 7) != maskt + || argvi(&m[5], 8) != shiftt + || argvu(&m[5], 9) != cms + || argvi(&m[5], 10) != masks + || argvi(&m[5], 11) != shifts) + { + return -1; + } + int siz = argvi(&m[5], 1); + int rt = argvi(&m[5], 4); + int pal = argvi(&m[5], 5); + if (m4b) + { + if (siz != G_IM_SIZ_4b) + return -1; + } + else if (siz != ldsiz) + return -1; + if (!(mrt && rt != G_TX_RENDERTILE && tmem == 0) + && (tmem != 0) != mtmem) + { + return -1; + } + if ((rt != G_TX_RENDERTILE) != mrt) + return -1; + if (m[6].id != gfxd_DPSetTileSize + || argvi(&m[6], 0) != rt + || (argvu(&m[6], 1) & 3) + || (argvu(&m[6], 2) & 3) + || (argvu(&m[6], 3) & 3) + || (argvu(&m[6], 4) & 3)) + { + return -1; + } + unsigned uls = argvu(&m[6], 1) >> 2; + unsigned ult = argvu(&m[6], 2) >> 2; + unsigned lrs = argvu(&m[6], 3) >> 2; + unsigned lrt = argvu(&m[6], 4) >> 2; + int line; + if (myuv) + line = ((lrs - uls + 1) + 7) / 8; + else if (m4b) + line = ((lrs - uls + 1) / 2 + 7) / 8; + else + line = ((lrs - uls + 1) * G_SIZ_LDBITS(siz) + 63) / 64; + if (m4b) + { + if (lduls != qu102(uls) / 2 || ldlrs != qu102(lrs) / 2) + return -1; + } + else if (lduls != qu102(uls) || ldlrs != qu102(lrs)) + return -1; + if (ldult != qu102(ult) || ldlrt != qu102(lrt) || ldline != line) + return -1; + m->id = id; + int i = 0; + argu(m, i++, "timg", timg, gfxd_Timg); + if (mtmem) + argu(m, i++, "tmem", tmem, gfxd_Tmem); + if (mrt) + argi(m, i++, "rtile", rt, gfxd_Tile); + argi(m, i++, "fmt", fmt, gfxd_Fmt); + if (!m4b) + argi(m, i++, "siz", siz, gfxd_Siz); + argi(m, i++, "width", width, gfxd_Dim); + argi(m, i++, "height", 0, gfxd_Dim); + argu(m, i++, "uls", uls, gfxd_Coordi); + argu(m, i++, "ult", ult, gfxd_Coordi); + argu(m, i++, "lrs", lrs, gfxd_Coordi); + argu(m, i++, "lrt", lrt, gfxd_Coordi); + argi(m, i++, "pal", pal, gfxd_Pal); + argu(m, i++, "cms", cms, gfxd_Cm); + argu(m, i++, "cmt", cmt, gfxd_Cm); + argi(m, i++, "masks", masks, gfxd_Tm); + argi(m, i++, "maskt", maskt, gfxd_Tm); + argi(m, i++, "shifts", shifts, gfxd_Ts); + argi(m, i++, "shiftt", shiftt, gfxd_Ts); + return 0; +} + +UCFUNC int c_DPLoadMultiTileYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadMultiTileYuv, 1, 1, 1, 0); +} + +UCFUNC int c_DPLoadMultiTile_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadMultiTile_4b, 1, 1, 0, 1); +} + +UCFUNC int c_DPLoadMultiTile(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadMultiTile, 1, 1, 0, 0); +} + +UCFUNC int c__DPLoadTextureTileYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd__DPLoadTextureTileYuv, 1, 0, 1, 0); +} + +UCFUNC int c__DPLoadTextureTile_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd__DPLoadTextureTile_4b, 1, 0, 0, 1); +} + +UCFUNC int c__DPLoadTextureTile(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd__DPLoadTextureTile, 1, 0, 0, 0); +} + +UCFUNC int c_DPLoadTextureTileYuv(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadTextureTileYuv, 0, 0, 1, 0); +} + +UCFUNC int c_DPLoadTextureTile_4b(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadTextureTile_4b, 0, 0, 0, 1); +} + +UCFUNC int c_DPLoadTextureTile(gfxd_macro_t *m, int n_macro) +{ + return c_ltt(m, n_macro, gfxd_DPLoadTextureTile, 0, 0, 0, 0); +} + +UCFUNC int d_DPLoadBlock(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPLoadBlock; + argi(m, 0, "tile", getfield(lo, 3, 24), gfxd_Tile); + argu(m, 1, "uls", getfield(hi, 12, 12), gfxd_Coordi); + argu(m, 2, "ult", getfield(hi, 12, 0), gfxd_Coordi); + argu(m, 3, "lrs", getfield(lo, 12, 12), gfxd_Coordi); + argu(m, 4, "dxt", getfield(lo, 12, 0), gfxd_Dxt); + if (argvu(m, 3) > G_TX_LDBLK_MAX_TXL) { + badarg(m, 3); + return -1; + } + else { + return 0; + } +} + +UCFUNC int d_DPNoOp(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPNoOp; + return 0; +} + +UCFUNC int d_DPNoOpTag(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + if (lo == 0) + return d_DPNoOp(m, hi, lo); + else + { + m->id = gfxd_DPNoOpTag; + argu(m, 0, "tag", lo, gfxd_Tag); + return 0; + } +} + +UCFUNC int d_DPPipelineMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPPipelineMode; + argu(m, 0, "mode", lo, gfxd_Pm); + return 0; +} + +UCFUNC int d_DPSetBlendColor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetBlendColor; + argu(m, 0, "r", getfield(lo, 8, 24), gfxd_Colorpart); + argu(m, 1, "g", getfield(lo, 8, 16), gfxd_Colorpart); + argu(m, 2, "b", getfield(lo, 8, 8), gfxd_Colorpart); + argu(m, 3, "a", getfield(lo, 8, 0), gfxd_Colorpart); + return 0; +} + +UCFUNC int d_DPSetEnvColor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetEnvColor; + argu(m, 0, "r", getfield(lo, 8, 24), gfxd_Colorpart); + argu(m, 1, "g", getfield(lo, 8, 16), gfxd_Colorpart); + argu(m, 2, "b", getfield(lo, 8, 8), gfxd_Colorpart); + argu(m, 3, "a", getfield(lo, 8, 0), gfxd_Colorpart); + return 0; +} + +UCFUNC int d_DPSetFillColor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetFillColor; + argu(m, 0, "c", lo, gfxd_Color); + return 0; +} + +UCFUNC int d_DPSetFogColor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetFogColor; + argu(m, 0, "r", getfield(lo, 8, 24), gfxd_Colorpart); + argu(m, 1, "g", getfield(lo, 8, 16), gfxd_Colorpart); + argu(m, 2, "b", getfield(lo, 8, 8), gfxd_Colorpart); + argu(m, 3, "a", getfield(lo, 8, 0), gfxd_Colorpart); + return 0; +} + +UCFUNC int d_DPSetPrimColor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetPrimColor; + argu(m, 0, "m", getfield(hi, 8, 8), gfxd_Lodfrac); + argu(m, 1, "l", getfield(hi, 8, 0), gfxd_Lodfrac); + argu(m, 2, "r", getfield(lo, 8, 24), gfxd_Colorpart); + argu(m, 3, "g", getfield(lo, 8, 16), gfxd_Colorpart); + argu(m, 4, "b", getfield(lo, 8, 8), gfxd_Colorpart); + argu(m, 5, "a", getfield(lo, 8, 0), gfxd_Colorpart); + return 0; +} + +UCFUNC int d_DPSetColorImage(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetColorImage; + argi(m, 0, "fmt", getfield(hi, 3, 21), gfxd_Fmt); + argi(m, 1, "siz", getfield(hi, 2, 19), gfxd_Siz); + argi(m, 2, "width", getfield(hi, 12, 0) + 1, gfxd_Dim); + argu(m, 3, "cimg", lo, gfxd_Cimg); + return 0; +} + +UCFUNC int d_DPSetDepthImage(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetDepthImage; + argu(m, 0, "zimg", lo, gfxd_Zimg); + return 0; +} + +UCFUNC int d_DPSetTextureImage(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureImage; + argi(m, 0, "fmt", getfield(hi, 3, 21), gfxd_Fmt); + argi(m, 1, "siz", getfield(hi, 2, 19), gfxd_Siz); + argi(m, 2, "width", getfield(hi, 12, 0) + 1, gfxd_Dim); + argu(m, 3, "timg", lo, gfxd_Timg); + return 0; +} + +UCFUNC int d_DPSetAlphaCompare(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetAlphaCompare; + argu(m, 0, "mode", lo, gfxd_Ac); + return 0; +} + +UCFUNC int d_DPSetAlphaDither(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetAlphaDither; + argu(m, 0, "mode", lo, gfxd_Ad); + return 0; +} + +UCFUNC int d_DPSetColorDither(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetColorDither; + argu(m, 0, "mode", lo, gfxd_Cd); + return 0; +} + +UCFUNC void cc_unpack(struct cc_mode *m0, struct cc_mode *m1, uint32_t hi, + uint32_t lo) +{ + m0->a = getfield(hi, 4, 20); + m0->b = getfield(lo, 4, 28); + m0->c = getfield(hi, 5, 15); + m0->d = getfield(lo, 3, 15); + m0->Aa = getfield(hi, 3, 12); + m0->Ab = getfield(lo, 3, 12); + m0->Ac = getfield(hi, 3, 9); + m0->Ad = getfield(lo, 3, 9); + m1->a = getfield(hi, 4, 5); + m1->b = getfield(lo, 4, 24); + m1->c = getfield(hi, 5, 0); + m1->d = getfield(lo, 3, 6); + m1->Aa = getfield(lo, 3, 21); + m1->Ab = getfield(lo, 3, 3); + m1->Ac = getfield(lo, 3, 18); + m1->Ad = getfield(lo, 3, 0); +} + +UCFUNC int cc_lookup(const struct cc_mode *m) +{ + struct cc_mode m_norm = *m; + if (m_norm.a > 0x7) m_norm.a = G_CCMUX_0; + if (m_norm.b > 0x7) m_norm.b = G_CCMUX_0; + if (m_norm.c > 0xF) m_norm.c = G_CCMUX_0; + if (m_norm.d > 0x6) m_norm.d = G_CCMUX_0; + m = &m_norm; + int n_presets = sizeof(cc_presets) / sizeof(*cc_presets); + for (int i = 0; i < n_presets; i++) + { + const struct cc_mode *p = &cc_presets[i].mode; + if (m->a == p->a + && m->b == p->b + && m->c == p->c + && m->d == p->d + && m->Aa == p->Aa + && m->Ab == p->Ab + && m->Ac == p->Ac + && m->Ad == p->Ad) + { + return i; + } + } + return -1; +} + +UCFUNC int d_DPSetCombineMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetCombineMode; + struct cc_mode m0; + struct cc_mode m1; + cc_unpack(&m0, &m1, hi, lo); + int p0 = cc_lookup(&m0); + int p1 = cc_lookup(&m1); + argi(m, 0, "mode1", p0, gfxd_Ccpre); + argi(m, 1, "mode2", p1, gfxd_Ccpre); + int ret = 0; + if (p0 == -1) + { + badarg(m, 0); + ret = -1; + } + if (p1 == -1) + { + badarg(m, 1); + ret = -1; + } + return ret; +} + +UCFUNC int d_DPSetCombineLERP(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + struct cc_mode m0; + struct cc_mode m1; + cc_unpack(&m0, &m1, hi, lo); + int p0 = cc_lookup(&m0); + int p1 = cc_lookup(&m1); + if (p0 != -1 && p1 != -1) + return d_DPSetCombineMode(m, hi, lo); + else + { + m->id = gfxd_DPSetCombineLERP; + argi(m, 0, "a0", m0.a, gfxd_Ccmuxa); + argi(m, 1, "b0", m0.b, gfxd_Ccmuxb); + argi(m, 2, "c0", m0.c, gfxd_Ccmuxc); + argi(m, 3, "d0", m0.d, gfxd_Ccmuxd); + argi(m, 4, "Aa0", m0.Aa, gfxd_Acmuxabd); + argi(m, 5, "Ab0", m0.Ab, gfxd_Acmuxabd); + argi(m, 6, "Ac0", m0.Ac, gfxd_Acmuxc); + argi(m, 7, "Ad0", m0.Ad, gfxd_Acmuxabd); + argi(m, 8, "a1", m1.a, gfxd_Ccmuxa); + argi(m, 9, "b1", m1.b, gfxd_Ccmuxb); + argi(m, 10, "c1", m1.c, gfxd_Ccmuxc); + argi(m, 11, "d1", m1.d, gfxd_Ccmuxd); + argi(m, 12, "Aa1", m1.Aa, gfxd_Acmuxabd); + argi(m, 13, "Ab1", m1.Ab, gfxd_Acmuxabd); + argi(m, 14, "Ac1", m1.Ac, gfxd_Acmuxc); + argi(m, 15, "Ad1", m1.Ad, gfxd_Acmuxabd); + return 0; + } +} + +UCFUNC int d_DPSetConvert(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetConvert; + argi(m, 0, "k0", sx(getfield(hi, 9, 13), 9), gfxd_Cv); + argi(m, 1, "k1", sx(getfield(hi, 9, 4), 9), gfxd_Cv); + argi(m, 2, "k2", sx((getfield(hi, 4, 0) << 5) | getfield(lo, 5, 27), 9), + gfxd_Cv); + argi(m, 3, "k3", sx(getfield(lo, 9, 18), 9), gfxd_Cv); + argi(m, 4, "k4", sx(getfield(lo, 9, 9), 9), gfxd_Cv); + argi(m, 5, "k5", sx(getfield(lo, 9, 0), 9), gfxd_Cv); + return 0; +} + +UCFUNC int d_DPSetTextureConvert(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureConvert; + argu(m, 0, "mode", lo, gfxd_Tc); + return 0; +} + +UCFUNC int d_DPSetCycleType(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetCycleType; + argu(m, 0, "mode", lo, gfxd_Cyc); + return 0; +} + +UCFUNC int d_DPSetDepthSource(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetDepthSource; + argu(m, 0, "mode", lo, gfxd_Zs); + return 0; +} + +UCFUNC int d_DPSetCombineKey(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetCombineKey; + argu(m, 0, "mode", lo, gfxd_Ck); + return 0; +} + +UCFUNC int d_DPSetKeyGB(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetKeyGB; + argu(m, 0, "cG", getfield(lo, 8, 24), gfxd_Color); + argu(m, 1, "sG", getfield(lo, 8, 16), gfxd_Keyscale); + argi(m, 2, "wG", sx(getfield(hi, 12, 12), 12), gfxd_Keywidth); + argu(m, 3, "cB", getfield(lo, 8, 8), gfxd_Color); + argu(m, 4, "sB", getfield(lo, 8, 0), gfxd_Keyscale); + argi(m, 5, "wB", sx(getfield(hi, 12, 0), 12), gfxd_Keywidth); + return 0; +} + +UCFUNC int d_DPSetKeyR(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetKeyR; + argu(m, 0, "cR", getfield(lo, 8, 8), gfxd_Color); + argu(m, 1, "sR", getfield(lo, 8, 0), gfxd_Keyscale); + argi(m, 2, "wR", sx(getfield(lo, 12, 16), 12), gfxd_Keywidth); + return 0; +} + +UCFUNC int d_DPSetPrimDepth(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetPrimDepth; + argi(m, 0, "z", sx(getfield(lo, 16, 16), 16), gfxd_Zi); + argi(m, 1, "dz", sx(getfield(lo, 16, 0), 16), gfxd_Zi); + return 0; +} + +UCFUNC int d_DPSetRenderMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetRenderMode; + argu(m, 0, "mode1", lo, gfxd_Rm1); + argu(m, 1, "mode2", lo, gfxd_Rm2); + return 0; +} + +UCFUNC int d_DPSetScissor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetScissor; + argi(m, 0, "mode", getfield(lo, 2, 24), gfxd_Sc); + argu(m, 1, "ulx", getfield(hi, 10, 14), gfxd_Coordi); + argu(m, 2, "uly", getfield(hi, 10, 2), gfxd_Coordi); + argu(m, 3, "lrx", getfield(lo, 10, 14), gfxd_Coordi); + argu(m, 4, "lry", getfield(lo, 10, 2), gfxd_Coordi); + return 0; +} + +UCFUNC int d_DPSetScissorFrac(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + qu102_t ulx = getfield(hi, 12, 12); + qu102_t uly = getfield(hi, 12, 0); + qu102_t lrx = getfield(lo, 12, 12); + qu102_t lry = getfield(lo, 12, 0); + if ((ulx & 3) || (uly & 3) || (lrx & 3) || (lry & 3)) + { + m->id = gfxd_DPSetScissorFrac; + argi(m, 0, "mode", getfield(lo, 2, 24), gfxd_Sc); + argu(m, 1, "ulx", ulx, gfxd_Coordq); + argu(m, 2, "uly", uly, gfxd_Coordq); + argu(m, 3, "lrx", lrx, gfxd_Coordq); + argu(m, 4, "lry", lry, gfxd_Coordq); + return 0; + } + else + return d_DPSetScissor(m, hi, lo); +} + +UCFUNC int d_DPSetTextureDetail(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureDetail; + argu(m, 0, "mode", lo, gfxd_Td); + return 0; +} + +UCFUNC int d_DPSetTextureFilter(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureFilter; + argu(m, 0, "mode", lo, gfxd_Tf); + return 0; +} + +UCFUNC int d_DPSetTextureLOD(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureLOD; + argu(m, 0, "mode", lo, gfxd_Tl); + return 0; +} + +UCFUNC int d_DPSetTextureLUT(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTextureLUT; + argu(m, 0, "mode", lo, gfxd_Tt); + return 0; +} + +UCFUNC int d_DPSetTexturePersp(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTexturePersp; + argu(m, 0, "mode", lo, gfxd_Tp); + return 0; +} + +UCFUNC int d_DPSetTile(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTile; + argi(m, 0, "fmt", getfield(hi, 3, 21), gfxd_Fmt); + argi(m, 1, "siz", getfield(hi, 2, 19), gfxd_Siz); + argi(m, 2, "line", getfield(hi, 9, 9), gfxd_Line); + argu(m, 3, "tmem", getfield(hi, 9, 0), gfxd_Tmem); + argi(m, 4, "tile", getfield(lo, 3, 24), gfxd_Tile); + argi(m, 5, "pal", getfield(lo, 4, 20), gfxd_Pal); + argu(m, 6, "cmt", getfield(lo, 2, 18), gfxd_Cm); + argi(m, 7, "maskt", getfield(lo, 4, 14), gfxd_Tm); + argi(m, 8, "shiftt", getfield(lo, 4, 10), gfxd_Ts); + argu(m, 9, "cms", getfield(lo, 2, 8), gfxd_Cm); + argi(m, 10, "masks", getfield(lo, 4, 4), gfxd_Tm); + argi(m, 11, "shifts", getfield(lo, 4, 0), gfxd_Ts); + return 0; +} + +UCFUNC int d_DPSetTileSize(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetTileSize; + argi(m, 0, "tile", getfield(lo, 3, 24), gfxd_Tile); + argu(m, 1, "uls", getfield(hi, 12, 12), gfxd_Coordq); + argu(m, 2, "ult", getfield(hi, 12, 0), gfxd_Coordq); + argu(m, 3, "lrs", getfield(lo, 12, 12), gfxd_Coordq); + argu(m, 4, "lrt", getfield(lo, 12, 0), gfxd_Coordq); + return 0; +} + +#if defined(F3D_GBI) +UCFUNC int d_SP1Triangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SP1Triangle; + int n0 = getfield(lo, 8, 16); + int n1 = getfield(lo, 8, 8); + int n2 = getfield(lo, 8, 0); + argi(m, 0, "v0", n0 / 10, gfxd_Vtx); + argi(m, 1, "v1", n1 / 10, gfxd_Vtx); + argi(m, 2, "v2", n2 / 10, gfxd_Vtx); + argi(m, 3, "flag", getfield(lo, 8, 24), gfxd_Vtxflag); + int ret = 0; + if (n0 % 10 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 10 != 0) + { + badarg(m, 1); + ret = -1; + } + if (n2 % 10 != 0) + { + badarg(m, 2); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI) +UCFUNC int d_SP1Triangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SP1Triangle; + int n0 = getfield(lo, 8, 16); + int n1 = getfield(lo, 8, 8); + int n2 = getfield(lo, 8, 0); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "v1", n1 / 2, gfxd_Vtx); + argi(m, 2, "v2", n2 / 2, gfxd_Vtx); + argi(m, 3, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + if (n2 % 2 != 0) + { + badarg(m, 2); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SP1Triangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SP1Triangle; + int n0 = getfield(hi, 8, 16); + int n1 = getfield(hi, 8, 8); + int n2 = getfield(hi, 8, 0); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "v1", n1 / 2, gfxd_Vtx); + argi(m, 2, "v2", n2 / 2, gfxd_Vtx); + argi(m, 3, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + if (n2 % 2 != 0) + { + badarg(m, 2); + ret = -1; + } + return ret; +} +#endif + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_SP1Quadrangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo); +UCFUNC int d_SP2Triangles(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int n00 = getfield(hi, 8, 16); + int n01 = getfield(hi, 8, 8); + int n02 = getfield(hi, 8, 0); + int n10 = getfield(lo, 8, 16); + int n11 = getfield(lo, 8, 8); + int n12 = getfield(lo, 8, 0); +#if defined(F3DEX_GBI) + if (n00 == n10 && n02 == n11) + return d_SP1Quadrangle(m, hi, lo); +#endif + m->id = gfxd_SP2Triangles; + argi(m, 0, "v00", n00 / 2, gfxd_Vtx); + argi(m, 1, "v01", n01 / 2, gfxd_Vtx); + argi(m, 2, "v02", n02 / 2, gfxd_Vtx); + argi(m, 3, "flag0", 0, gfxd_Vtxflag); + argi(m, 4, "v10", n10 / 2, gfxd_Vtx); + argi(m, 5, "v11", n11 / 2, gfxd_Vtx); + argi(m, 6, "v12", n12 / 2, gfxd_Vtx); + argi(m, 7, "flag1", 0, gfxd_Vtxflag); + int ret = 0; + if (n00 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n01 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + if (n02 % 2 != 0) + { + badarg(m, 2); + ret = -1; + } + if (n10 % 2 != 0) + { + badarg(m, 4); + ret = -1; + } + if (n11 % 2 != 0) + { + badarg(m, 5); + ret = -1; + } + if (n12 % 2 != 0) + { + badarg(m, 6); + ret = -1; + } + return ret; +} + +UCFUNC int d_SP1Quadrangle(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SP1Quadrangle; + int n00 = getfield(hi, 8, 16); + int n01 = getfield(hi, 8, 8); + int n02 = getfield(hi, 8, 0); + int n10 = getfield(lo, 8, 16); + int n11 = getfield(lo, 8, 8); + int n12 = getfield(lo, 8, 0); + int v00 = n00 / 2; + int v01 = n01 / 2; + int v02 = n02 / 2; + int v10 = n10 / 2; + int v11 = n11 / 2; + int v12 = n12 / 2; + argi(m, 0, "v0", v00, gfxd_Vtx); + argi(m, 1, "v1", v01, gfxd_Vtx); + argi(m, 2, "v2", v11, gfxd_Vtx); + argi(m, 3, "v3", v12, gfxd_Vtx); + argi(m, 4, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (v00 != v10 || n00 % 2 != 0 || n10 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n01 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + if (v02 != v11 || n02 % 2 != 0 || n11 % 2 != 0) + { + badarg(m, 2); + ret = -1; + } + if (n12 % 2 != 0) + { + badarg(m, 3); + ret = -1; + } + return ret; +} + +UCFUNC int c_SPBranchLessZraw(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_DPHalf1) + return -1; + uint32_t branchdl = argvu(&m[0], 0); + if (m[1].id != gfxd_BranchZ) + return -1; + int32_t vtx = argvi(&m[1], 0); + int32_t zval = argvi(&m[1], 1); + m->id = gfxd_SPBranchLessZraw; + argu(m, 0, "dl", branchdl, gfxd_Dl); + argi(m, 1, "vtx", vtx, gfxd_Vtx); + argi(m, 2, "zval", zval, gfxd_Zraw); + return 0; +} +#endif + +UCFUNC int d_SPBranchList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPBranchList; + argu(m, 0, "dl", lo, gfxd_Dl); + return 0; +} + +UCFUNC int c_SPClipRatio(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 4) + return -1; + if (m[0].id != gfxd_MoveWd + || argvi(&m[0], 0) != G_MW_CLIP + || argvu(&m[0], 1) != G_MWO_CLIP_RNX) + { + return -1; + } + uint32_t r = argvu(&m[0], 2); + if (m[1].id != gfxd_MoveWd + || argvi(&m[1], 0) != G_MW_CLIP + || argvu(&m[1], 1) != G_MWO_CLIP_RNY + || argvu(&m[1], 2) != r) + { + return -1; + } + if (m[2].id != gfxd_MoveWd + || argvi(&m[2], 0) != G_MW_CLIP + || argvu(&m[2], 1) != G_MWO_CLIP_RPX + || ((uint32_t)1 << 16) - argvu(&m[2], 2) != r) + { + return -1; + } + if (m[3].id != gfxd_MoveWd + || argvi(&m[3], 0) != G_MW_CLIP + || argvu(&m[3], 1) != G_MWO_CLIP_RPY + || ((uint32_t)1 << 16) - argvu(&m[3], 2) != r) + { + return -1; + } + m->id = gfxd_SPClipRatio; + argi(m, 0, "r", r, gfxd_Cr); + return 0; +} + +#if defined(F3D_GBI) +UCFUNC int d_SPCullDisplayList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPCullDisplayList; + int n0 = getfield(hi, 24, 0); + int nn = getfield(lo, 16, 0); + argi(m, 0, "v0", n0 / 40, gfxd_Vtx); + argi(m, 1, "vn", nn / 40 - 1, gfxd_Num); + int ret = 0; + if (n0 % 40 != 0) + { + badarg(m, 0); + ret = -1; + } + if (nn % 40 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_SPCullDisplayList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPCullDisplayList; + int n0 = getfield(hi, 16, 0); + int nn = getfield(lo, 16, 0); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "vn", nn / 2, gfxd_Num); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (nn % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#endif + +UCFUNC int d_SPDisplayList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPDisplayList; + argu(m, 0, "dl", lo, gfxd_Dl); + return 0; +} + +UCFUNC int d_SPEndDisplayList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPEndDisplayList; + return 0; +} + +UCFUNC int d_SPFogFactor(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPFogFactor; + argi(m, 0, "fm", sx(getfield(lo, 16, 16), 16), gfxd_Fogz); + argi(m, 1, "fo", sx(getfield(lo, 16, 0), 16), gfxd_Fogz); + return 0; +} + +UCFUNC int d_SPFogPosition(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int x = sx(getfield(lo, 16, 16), 16); + int y = sx(getfield(lo, 16, 0), 16); + if (x == 0) + return d_SPFogFactor(m, hi, lo); + else + { + int d = 128000 / x; + int yd = y * d; + if (yd > 0) + yd += 255; + else if (yd < 0) + yd -= 255; + int min = 500 - yd / 256; + int max = d + min; + + if (min >= 0 && min <= 1000 && max >= 0 && max <= 1000) + { + m->id = gfxd_SPFogPosition; + argi(m, 0, "min", min, gfxd_Fogp); + argi(m, 1, "max", max, gfxd_Fogp); + return 0; + } + else + return d_SPFogFactor(m, hi, lo); + } +} + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int c_SPForceMatrix(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 4) + return -1; + for (int i = 0; i < 4; i++) + if (m[i].id != gfxd_MoveMem + || argvu(&m[i], 0) != 16 + || argvu(&m[i], 2) != argvu(&m[0], 2) + i * 16) + { + return -1; + } + if (argvi(&m[0], 1) != G_MV_MATRIX_1 + || argvi(&m[1], 1) != G_MV_MATRIX_2 + || argvi(&m[2], 1) != G_MV_MATRIX_3 + || argvi(&m[3], 1) != G_MV_MATRIX_4) + { + return -1; + } + uint32_t mptr = argvu(&m[0], 2); + m->id = gfxd_SPForceMatrix; + argu(m, 0, "mptr", mptr, gfxd_Mtxptr); + return 0; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int c_SPForceMatrix(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_MoveMem + || argvu(&m[0], 0) != sizeof(Mtx) + || argvi(&m[0], 1) != G_MV_MATRIX + || argvu(&m[0], 2) != 0) + { + return -1; + } + uint32_t mptr = argvu(&m[0], 3); + if (m[1].id != gfxd_MoveWd + || argvi(&m[1], 0) != G_MW_FORCEMTX + || argvu(&m[1], 1) != 0 + || argvu(&m[1], 2) != 0x10000) + { + return -1; + } + m->id = gfxd_SPForceMatrix; + argu(m, 0, "mptr", mptr, gfxd_Mtxptr); + return 0; +} +#endif + +UCFUNC int d_SPSetGeometryMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPSetGeometryMode; + argu(m, 0, "mode", lo, gfxd_Gm); + return 0; +} + +UCFUNC int d_SPClearGeometryMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPClearGeometryMode; +#if defined(F3D_GBI) || defined(F3DEX_GBI) + argu(m, 0, "mode", lo, gfxd_Gm); +#elif defined(F3DEX_GBI_2) + argu(m, 0, "mode", getfield(~hi, 24, 0), gfxd_Gm); +#endif + return 0; +} + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int c_SPLoadGeometryMode(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_SPClearGeometryMode + || argvu(&m[0], 0) != 0xFFFFFFFF + || m[1].id != gfxd_SPSetGeometryMode) + { + return -1; + } + uint32_t mode = argvu(&m[1], 0); + m->id = gfxd_SPLoadGeometryMode; + argu(m, 0, "mode", mode, gfxd_Gm); + return 0; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPLoadGeometryMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLoadGeometryMode; + argu(m, 0, "mode", lo, gfxd_Gm); + return 0; +} +#endif + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int d_SPInsertMatrix(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPInsertMatrix; + argu(m, 0, "where", getfield(hi, 16, 8), gfxd_Mwo_matrix); + argu(m, 1, "val", lo, gfxd_Word); + return 0; +} +#endif + +#if defined(F3D_GBI) +UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLine3D; + int n0 = getfield(lo, 8, 16); + int n1 = getfield(lo, 8, 8); + argi(m, 0, "v0", n0 / 10, gfxd_Vtx); + argi(m, 1, "v1", n1 / 10, gfxd_Vtx); + argi(m, 2, "flag", getfield(lo, 8, 24), gfxd_Vtxflag); + int ret = 0; + if (n0 % 10 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 10 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI) +UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLine3D; + int n0 = getfield(lo, 8, 16); + int n1 = getfield(lo, 8, 8); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "v1", n1 / 2, gfxd_Vtx); + argi(m, 2, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPLine3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLine3D; + int n0 = getfield(hi, 8, 16); + int n1 = getfield(hi, 8, 8); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "v1", n1 / 2, gfxd_Vtx); + argi(m, 2, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#endif + +#if defined(F3D_GBI) +UCFUNC int d_SPLineW3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int wd = getfield(lo, 8, 0); + if (wd == 0) + return d_SPLine3D(m, hi, lo); + else + { + m->id = gfxd_SPLineW3D; + int n0 = getfield(lo, 8, 16); + int n1 = getfield(lo, 8, 8); + argi(m, 0, "v0", n0 / 10, gfxd_Vtx); + argi(m, 1, "v1", n1 / 10, gfxd_Vtx); + argi(m, 2, "wd", wd, gfxd_Linewd); + argi(m, 3, "flag", getfield(lo, 8, 24), gfxd_Vtxflag); + int ret = 0; + if (n0 % 10 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 10 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; + } +} +#elif defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_SPLineW3D(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int wd = getfield(hi, 8, 0); + if (wd == 0) + return d_SPLine3D(m, hi, lo); + else + { + m->id = gfxd_SPLineW3D; + int n0 = getfield(hi, 8, 16); + int n1 = getfield(hi, 8, 8); + argi(m, 0, "v0", n0 / 2, gfxd_Vtx); + argi(m, 1, "v1", n1 / 2, gfxd_Vtx); + argi(m, 2, "wd", wd, gfxd_Linewd); + argi(m, 3, "flag", 0, gfxd_Vtxflag); + int ret = 0; + if (n0 % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + if (n1 % 2 != 0) + { + badarg(m, 1); + ret = -1; + } + return ret; + } +} +#endif + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int c_SPLoadUcode(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_DPHalf1) + return -1; + uint32_t uc_dstart = argvu(&m[0], 0); + if (m[1].id != gfxd_LoadUcode) + return -1; + uint32_t uc_start = argvu(&m[1], 0); + uint32_t uc_dsize = argvu(&m[1], 1); + if (uc_dsize != 0x800) + return -1; + m->id = gfxd_SPLoadUcode; + argu(m, 0, "uc_start", uc_start, gfxd_Uctext); + argu(m, 1, "uc_dstart", uc_dstart, gfxd_Ucdata); + return 0; +} +#endif + +UCFUNC int d_SPLookAtX(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLookAtX; + argu(m, 0, "l", lo, gfxd_Lookatptr); + return 0; +} + +UCFUNC int d_SPLookAtY(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPLookAtY; + argu(m, 0, "l", lo, gfxd_Lookatptr); + return 0; +} + +UCFUNC int c_SPLookAt(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_SPLookAtX) + return -1; + uint32_t l = argvu(&m[0], 0); + if (m[1].id != gfxd_SPLookAtY || argvu(&m[1], 0) != l + 0x10) + return -1; + m->id = gfxd_SPLookAt; + argu(m, 0, "l", l, gfxd_Lookatptr); + return 0; +} + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int d_SPMatrix(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPMatrix; + int x = getfield(hi, 16, 0); + argu(m, 0, "matrix", lo, gfxd_Mtxptr); + argi(m, 1, "param", getfield(hi, 8, 16), gfxd_Mtxparam); + if (x != sizeof(Mtx)) + return -1; + else + return 0; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPMatrix(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPMatrix; + int x = getfield(hi, 5, 19); + argu(m, 0, "matrix", lo, gfxd_Mtxptr); + argi(m, 1, "param", getfield(hi, 8, 0) ^ G_MTX_PUSH, gfxd_Mtxparam); + if (x != (sizeof(Mtx) - 1) / 8) + return -1; + else + return 0; +} +#endif + +#if defined(F3D_GBI) || (defined(F3D_BETA) && defined(F3DEX_GBI)) +UCFUNC int d_SPModifyVertex(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPModifyVertex; + int offset = getfield(hi, 16, 8); + argi(m, 0, "vtx", offset / 40, gfxd_Vtx); + argu(m, 1, "where", offset % 40, gfxd_Mwo_point); + argu(m, 2, "val", lo, gfxd_Word); + return 0; +} +#elif defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_SPModifyVertex(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPModifyVertex; + int vtx = getfield(hi, 16, 0); + argi(m, 0, "vtx", vtx / 2, gfxd_Vtx); + argu(m, 1, "where", getfield(hi, 8, 16), gfxd_Mwo_point); + argu(m, 2, "val", lo, gfxd_Word); + int ret = 0; + if (vtx % 2 != 0) + { + badarg(m, 0); + ret = -1; + } + return ret; +} +#endif + +UCFUNC int d_SPPerspNormalize(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPPerspNormalize; + argu(m, 0, "scale", getfield(lo, 16, 0), gfxd_Wscale); + return 0; +} + +UCFUNC int d_SPPopMatrix(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPPopMatrix; +#if defined(F3D_GBI) || defined(F3DEX_GBI) + argi(m, 0, "param", lo, gfxd_Mtxstack); +#elif defined(F3DEX_GBI_2) + argi(m, 0, "param", G_MTX_MODELVIEW, gfxd_Mtxstack); +#endif + return 0; +} + +#if defined(F3DEX_GBI_2) +UCFUNC int d_SPPopMatrixN(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int len = (getfield(hi, 5, 19) + 1) * 8; + int ofs = getfield(hi, 8, 8) * 8; + int idx = getfield(hi, 8, 0); + int n = lo / sizeof(Mtx); + if (lo % sizeof(Mtx) == 0 + && len == sizeof(Mtx) + && ofs == 0 + && idx == 2 + && n == 1) + { + return d_SPPopMatrix(m, hi, lo); + } + m->id = gfxd_SPPopMatrixN; + argi(m, 0, "param", G_MTX_MODELVIEW, gfxd_Mtxstack); + argi(m, 1, "num", n, gfxd_Num); + int ret = 0; + if (lo % sizeof(Mtx) != 0) + { + badarg(m, 1); + ret = -1; + } + if (len != sizeof(Mtx) || ofs != 0 || idx != 2) + ret = -1; + return ret; +} +#endif + +UCFUNC int d_SPSegment(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPSegment; +#if defined(F3D_GBI) || defined(F3DEX_GBI) + int offset = getfield(hi, 16, 8); +#elif defined(F3DEX_GBI_2) + int offset = getfield(hi, 16, 0); +#endif + argu(m, 0, "seg", offset / 4, gfxd_Seg); + argu(m, 1, "base", lo, gfxd_Segptr); + int ret = 0; + if (offset % 4 != 0) + { + badarg(m, 0); + ret = -1; + } + return ret; +} + +UCFUNC int c_SPSetLightsN(gfxd_macro_t *m, int n_macro, int id, int numlights) +{ + if (n_macro < 2 + numlights) + return -1; + if (m[0].id != gfxd_SPNumLights || argvi(&m[0], 0) != numlights) + return -1; + int a = 1 + numlights; + if (m[a].id != gfxd_SPLight || argvi(&m[a], 1) != a) + return -1; + uint32_t l = argvu(&m[a], 0); + for (int i = 1; i <= numlights; i++) + { + int offset = sizeof(Ambient) + sizeof(Light) * (i - 1); + if (m[i].id != gfxd_SPLight + || argvu(&m[i], 0) != l + offset + || argvi(&m[i], 1) != i) + { + return -1; + } + } + m->id = id; + argu(m, 0, "l", l, gfxd_Lightsn); + return 0; +} + +UCFUNC int c_SPSetLights1(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights1, NUMLIGHTS_1); +} + +UCFUNC int c_SPSetLights2(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights2, NUMLIGHTS_2); +} + +UCFUNC int c_SPSetLights3(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights3, NUMLIGHTS_3); +} + +UCFUNC int c_SPSetLights4(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights4, NUMLIGHTS_4); +} + +UCFUNC int c_SPSetLights5(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights5, NUMLIGHTS_5); +} + +UCFUNC int c_SPSetLights6(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights6, NUMLIGHTS_6); +} + +UCFUNC int c_SPSetLights7(gfxd_macro_t *m, int n_macro) +{ + return c_SPSetLightsN(m, n_macro, gfxd_SPSetLights7, NUMLIGHTS_7); +} + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int d_SPNumLights(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPNumLights; + argi(m, 0, "n", (lo - 0x80000000) / 32 - 1, gfxd_Numlights); + int ret = 0; + if (lo < 0x80000040 || lo % 32 != 0) + { + badarg(m, 0); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPNumLights(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPNumLights; + argi(m, 0, "n", lo / 24, gfxd_Numlights); + int ret = 0; + if (lo < 24 || lo % 24 != 0) + { + badarg(m, 0); + ret = -1; + } + return ret; +} +#endif + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int d_SPLight(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int n = (getfield(hi, 8, 16) - G_MV_L0) / 2 + 1; + m->id = gfxd_SPLight; + argu(m, 0, "l", lo, gfxd_Lightptr); + argi(m, 1, "n", n, gfxd_Num); + return 0; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPLight(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int n = (getfield(hi, 8, 8) * 8 / 24) - 1; + m->id = gfxd_SPLight; + argu(m, 0, "l", lo, gfxd_Lightptr); + argi(m, 1, "n", n, gfxd_Num); + return 0; +} +#endif + +UCFUNC int c_SPLightColor(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_MoveWd + || argvi(&m[0], 0) != G_MW_LIGHTCOL + || argvu(&m[0], 1) % 0x18 != 0 + || argvu(&m[0], 1) > G_MWO_aLIGHT_8) + { + return -1; + } + uint32_t offset = argvu(&m[0], 1); + uint32_t packedcolor = argvu(&m[0], 2); + if (m[1].id != gfxd_MoveWd + || argvi(&m[1], 0) != G_MW_LIGHTCOL + || argvu(&m[1], 1) != offset + 4 + || argvu(&m[1], 2) != packedcolor) + { + return -1; + } + m->id = gfxd_SPLightColor; + argi(m, 0, "n", offset / 0x18 + 1, gfxd_Lightnum); + argu(m, 1, "c", packedcolor, gfxd_Color); + return 0; +} + +UCFUNC int d_SPTexture(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPTexture; + argu(m, 0, "sc", getfield(lo, 16, 16), gfxd_Tcscale); + argu(m, 1, "tc", getfield(lo, 16, 0), gfxd_Tcscale); + argi(m, 2, "level", getfield(hi, 3, 11), gfxd_Num); + argi(m, 3, "tile", getfield(hi, 3, 8), gfxd_Tile); +#if defined(F3D_GBI) || defined(F3DEX_GBI) + argi(m, 4, "on", getfield(hi, 8, 0), gfxd_Switch); +#elif defined(F3DEX_GBI_2) + argi(m, 4, "on", getfield(hi, 7, 1), gfxd_Switch); +#endif + return 0; +} + +UCFUNC int c_SPTextureRectangle(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 3) + return -1; + if (m[0].id != gfxd_TexRect) + return -1; + qu102_t ulx = argvu(&m[0], 0); + qu102_t uly = argvu(&m[0], 1); + qu102_t lrx = argvu(&m[0], 2); + qu102_t lry = argvu(&m[0], 3); + int tile = argvi(&m[0], 4); + if (m[1].id != gfxd_DPHalf1) + return -1; + qs105_t s = sx(getfield(argvu(&m[1], 0), 16, 16), 16); + qs105_t t = sx(getfield(argvu(&m[1], 0), 16, 0), 16); + if (m[2].id != gfxd_DPHalf2) + return -1; + qs510_t dsdx = sx(getfield(argvu(&m[2], 0), 16, 16), 16); + qs510_t dtdy = sx(getfield(argvu(&m[2], 0), 16, 0), 16); + m->id = gfxd_SPTextureRectangle; + argu(m, 0, "ulx", ulx, gfxd_Coordq); + argu(m, 1, "uly", uly, gfxd_Coordq); + argu(m, 2, "lrx", lrx, gfxd_Coordq); + argu(m, 3, "lry", lry, gfxd_Coordq); + argi(m, 4, "tile", tile, gfxd_Tile); + argi(m, 5, "s", s, gfxd_St); + argi(m, 6, "t", t, gfxd_St); + argi(m, 7, "dsdx", dsdx, gfxd_Stdelta); + argi(m, 8, "dtdy", dtdy, gfxd_Stdelta); + return 0; +} + +UCFUNC int c_SPTextureRectangleFlip(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 3) + return -1; + if (m[0].id != gfxd_TexRectFlip) + return -1; + qu102_t ulx = argvu(&m[0], 0); + qu102_t uly = argvu(&m[0], 1); + qu102_t lrx = argvu(&m[0], 2); + qu102_t lry = argvu(&m[0], 3); + int tile = argvi(&m[0], 4); + if (m[1].id != gfxd_DPHalf1) + return -1; + qs105_t s = sx(getfield(argvu(&m[1], 0), 16, 16), 16); + qs105_t t = sx(getfield(argvu(&m[1], 0), 16, 0), 16); + if (m[2].id != gfxd_DPHalf2) + return -1; + qs510_t dsdx = sx(getfield(argvu(&m[2], 0), 16, 16), 16); + qs510_t dtdy = sx(getfield(argvu(&m[2], 0), 16, 0), 16); + m->id = gfxd_SPTextureRectangleFlip; + argu(m, 0, "ulx", ulx, gfxd_Coordq); + argu(m, 1, "uly", uly, gfxd_Coordq); + argu(m, 2, "lrx", lrx, gfxd_Coordq); + argu(m, 3, "lry", lry, gfxd_Coordq); + argi(m, 4, "tile", tile, gfxd_Tile); + argi(m, 5, "s", s, gfxd_St); + argi(m, 6, "t", t, gfxd_St); + argi(m, 7, "dsdx", dsdx, gfxd_Stdelta); + argi(m, 8, "dtdy", dtdy, gfxd_Stdelta); + return 0; +} + +#if defined(F3D_GBI) +UCFUNC int d_SPVertex(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPVertex; + int n = getfield(hi, 4, 20) + 1; + int v0 = getfield(hi, 4, 16); + int size = getfield(hi, 16, 0); + argu(m, 0, "v", lo, gfxd_Vtxptr); + argi(m, 1, "n", n, gfxd_Num); + argi(m, 2, "v0", v0, gfxd_Vtx); + int ret = 0; + if (size != sizeof(Vtx) * n) + { + badarg(m, 1); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI) +UCFUNC int d_SPVertex(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPVertex; + int n = getfield(hi, 6, 10); + int v0 = getfield(hi, 8, 16); + int size = getfield(hi, 10, 0); + argu(m, 0, "v", lo, gfxd_Vtxptr); + argi(m, 1, "n", n, gfxd_Num); + argi(m, 2, "v0", v0 / 2, gfxd_Vtx); + int ret = 0; + if (size != sizeof(Vtx) * n - 1) + { + badarg(m, 1); + ret = -1; + } + if (v0 % 2 != 0) + { + badarg(m, 2); + ret = -1; + } + return ret; +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_SPVertex(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPVertex; + int n = getfield(hi, 8, 12); + int v0 = getfield(hi, 7, 1) - n; + argu(m, 0, "v", lo, gfxd_Vtxptr); + argi(m, 1, "n", n, gfxd_Num); + argi(m, 2, "v0", v0, gfxd_Vtx); + return 0; +} +#endif + +UCFUNC int d_SPViewport(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPViewport; + argu(m, 0, "v", lo, gfxd_Vpptr); + return 0; +} + +UCFUNC int d_DPLoadTLUTCmd(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPLoadTLUTCmd; + argi(m, 0, "tile", getfield(lo, 3, 24), gfxd_Tile); + argi(m, 1, "count", getfield(lo, 10, 14), gfxd_Num); + return 0; +} + +UCFUNC int c_DPLoadTLUT(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 6) + return -1; + if (m[0].id != gfxd_DPSetTextureImage + || argvi(&m[0], 0) != G_IM_FMT_RGBA + || argvi(&m[0], 1) != G_IM_SIZ_16b + || argvi(&m[0], 2) != 1) + { + return -1; + } + uint32_t dram = argvu(&m[0], 3); + if (m[1].id != gfxd_DPTileSync) + return -1; + if (m[2].id != gfxd_DPSetTile + || argvi(&m[2], 0) != 0 + || argvi(&m[2], 1) != 0 + || argvi(&m[2], 2) != 0 + || argvi(&m[2], 4) != G_TX_LOADTILE + || argvi(&m[2], 5) != 0 + || argvu(&m[2], 6) != 0 + || argvi(&m[2], 7) != 0 + || argvi(&m[2], 8) != 0 + || argvu(&m[2], 9) != 0 + || argvi(&m[2], 10) != 0 + || argvi(&m[2], 11) != 0) + { + return -1; + } + uint32_t tmem = argvu(&m[2], 3); + if (m[3].id != gfxd_DPLoadSync) + return -1; + if (m[4].id != gfxd_DPLoadTLUTCmd || argvi(&m[4], 0) != G_TX_LOADTILE) + return -1; + int count = argvi(&m[4], 1) + 1; + if (m[5].id != gfxd_DPPipeSync) + return -1; + m->id = gfxd_DPLoadTLUT; + argi(m, 0, "count", count, gfxd_Num); + argu(m, 1, "tmem", tmem, gfxd_Tmem); + argu(m, 2, "dram", dram, gfxd_Tlut); + return 0; +} + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_BranchZ(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_BranchZ; + int na = getfield(hi, 12, 12); + int nb = getfield(hi, 12, 0); + int32_t zval; + if (lo > 0x7FFFFFFF) + zval = INT32_MIN + (int32_t)(lo & 0x7FFFFFFF); + else + zval = lo; + argi(m, 0, "vtx", nb / 2, gfxd_Vtx); + argi(m, 1, "zval", zval, gfxd_Zraw); + int ret = 0; + if (nb % 2 != 0 || na / 5 != nb / 2 || na % 5 != 0) + { + badarg(m, 0); + ret = -1; + } + return ret; +} +#endif + +UCFUNC int d_DisplayList(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int flag = getfield(hi, 8, 16); + if (flag == 0) + return d_SPDisplayList(m, hi, lo); + else if (flag == 1) + return d_SPBranchList(m, hi, lo); + else + { + m->id = gfxd_DisplayList; + argu(m, 0, "dl", lo, gfxd_Dl); + argi(m, 1, "flag", flag, gfxd_Dlflag); + return 0; + } +} + +UCFUNC int d_DPHalf1(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPHalf1; + argu(m, 0, "hi", lo, gfxd_Word); + return 0; +} + +UCFUNC int d_DPHalf2(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPHalf2; + argu(m, 0, "lo", lo, gfxd_Word); + return 0; +} + +UCFUNC int c_DPWord(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_DPHalf1 || m[1].id != gfxd_DPHalf2) + return -1; + uint32_t wordhi = argvu(&m[0], 0); + uint32_t wordlo = argvu(&m[1], 0); + m->id = gfxd_DPWord; + argu(m, 0, "wordhi", wordhi, gfxd_Word); + argu(m, 1, "wordlo", wordlo, gfxd_Word); + return 0; +} + +UCFUNC int d_DPLoadTile(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPLoadTile; + argi(m, 0, "tile", getfield(lo, 3, 24), gfxd_Tile); + argu(m, 1, "uls", getfield(hi, 12, 12), gfxd_Coordq); + argu(m, 2, "ult", getfield(hi, 12, 0), gfxd_Coordq); + argu(m, 3, "lrs", getfield(lo, 12, 12), gfxd_Coordq); + argu(m, 4, "lrt", getfield(lo, 12, 0), gfxd_Coordq); + return 0; +} + +#if defined(F3DEX_GBI_2) +UCFUNC int d_SPGeometryMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + uint32_t clearbits = getfield(~hi, 24, 0); + uint32_t setbits = lo; + if (clearbits == 0 && setbits != 0) + return d_SPSetGeometryMode(m, hi, lo); + else if (clearbits != 0 && setbits == 0) + return d_SPClearGeometryMode(m, hi, lo); + else if (clearbits == 0x00FFFFFF) + return d_SPLoadGeometryMode(m, hi, lo); + else + { + m->id = gfxd_SPGeometryMode; + argu(m, 0, "c", clearbits, gfxd_Gm); + argu(m, 1, "s", setbits, gfxd_Gm); + return 0; + } +} +#endif + +UCFUNC int d_SPSetOtherMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPSetOtherMode; + int opc = getfield(hi, 8, 24); +#if defined(F3D_GBI) || defined(F3DEX_GBI) + int length = getfield(hi, 8, 0); + int shift = getfield(hi, 8, 8); +#elif defined(F3DEX_GBI_2) + int length = getfield(hi, 8, 0) + 1; + int shift = 32 - (getfield(hi, 8, 8) + length); +#endif + argi(m, 0, "opc", opc, gfxd_Opcode); + argi(m, 1, "sft", shift, gfxd_Sftlo); + argi(m, 2, "len", length, gfxd_Num); + if (opc == G_SETOTHERMODE_H) + argu(m, 3, "mode", lo, gfxd_Othermodehi); + else if (opc == G_SETOTHERMODE_L) + argu(m, 3, "mode", lo, gfxd_Othermodelo); + else + argu(m, 3, "mode", lo, gfxd_Word); + return 0; +} + +UCFUNC int d_SPSetOtherModeLo(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ +#if defined(F3D_GBI) || defined(F3DEX_GBI) + int length = getfield(hi, 8, 0); + int shift = getfield(hi, 8, 8); +#elif defined(F3DEX_GBI_2) + int length = getfield(hi, 8, 0) + 1; + int shift = 32 - (getfield(hi, 8, 8) + length); +#endif + if (shift == G_MDSFT_ALPHACOMPARE && length == G_MDSIZ_ALPHACOMPARE) + return d_DPSetAlphaCompare(m, hi, lo); + else if (shift == G_MDSFT_ZSRCSEL && length == G_MDSIZ_ZSRCSEL) + return d_DPSetDepthSource(m, hi, lo); + else if (shift == G_MDSFT_RENDERMODE && length == G_MDSIZ_RENDERMODE) + return d_DPSetRenderMode(m, hi, lo); + else if (config.emit_ext_macro) + { + m->id = gfxd_SPSetOtherModeLo; + argi(m, 0, "sft", shift, gfxd_Sftlo); + argi(m, 1, "len", length, gfxd_Num); + argu(m, 2, "mode", lo, gfxd_Othermodelo); + return 0; + } + else + return d_SPSetOtherMode(m, hi, lo); +} + +UCFUNC int d_SPSetOtherModeHi(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ +#if defined(F3D_GBI) || defined(F3DEX_GBI) + int length = getfield(hi, 8, 0); + int shift = getfield(hi, 8, 8); +#elif defined(F3DEX_GBI_2) + int length = getfield(hi, 8, 0) + 1; + int shift = 32 - (getfield(hi, 8, 8) + length); +#endif + if (shift == G_MDSFT_ALPHADITHER && length == G_MDSIZ_ALPHADITHER) + return d_DPSetAlphaDither(m, hi, lo); + else if (shift == G_MDSFT_RGBDITHER && length == G_MDSIZ_RGBDITHER) + return d_DPSetColorDither(m, hi, lo); + else if (shift == G_MDSFT_COMBKEY && length == G_MDSIZ_COMBKEY) + return d_DPSetCombineKey(m, hi, lo); + else if (shift == G_MDSFT_TEXTCONV && length == G_MDSIZ_TEXTCONV) + return d_DPSetTextureConvert(m, hi, lo); + else if (shift == G_MDSFT_TEXTFILT && length == G_MDSIZ_TEXTFILT) + return d_DPSetTextureFilter(m, hi, lo); + else if (shift == G_MDSFT_TEXTLUT && length == G_MDSIZ_TEXTLUT) + return d_DPSetTextureLUT(m, hi, lo); + else if (shift == G_MDSFT_TEXTLOD && length == G_MDSIZ_TEXTLOD) + return d_DPSetTextureLOD(m, hi, lo); + else if (shift == G_MDSFT_TEXTDETAIL && length == G_MDSIZ_TEXTDETAIL) + return d_DPSetTextureDetail(m, hi, lo); + else if (shift == G_MDSFT_TEXTPERSP && length == G_MDSIZ_TEXTPERSP) + return d_DPSetTexturePersp(m, hi, lo); + else if (shift == G_MDSFT_CYCLETYPE && length == G_MDSIZ_CYCLETYPE) + return d_DPSetCycleType(m, hi, lo); + else if (shift == G_MDSFT_PIPELINE && length == G_MDSIZ_PIPELINE) + return d_DPPipelineMode(m, hi, lo); + else if (config.emit_ext_macro) + { + m->id = gfxd_SPSetOtherModeHi; + argi(m, 0, "sft", shift, gfxd_Sfthi); + argi(m, 1, "len", length, gfxd_Num); + argu(m, 2, "mode", lo, gfxd_Othermodehi); + return 0; + } + else + return d_SPSetOtherMode(m, hi, lo); +} + +UCFUNC int d_DPSetOtherMode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_DPSetOtherMode; + argu(m, 0, "hi", getfield(hi, 24, 0), gfxd_Othermodehi); + argu(m, 1, "lo", lo, gfxd_Othermodelo); + return 0; +} + +UCFUNC int d_MoveWd(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ +#if defined(F3D_GBI) || defined(F3DEX_GBI) + int index = getfield(hi, 8, 0); + int offset = getfield(hi, 16, 8); +#elif defined(F3DEX_GBI_2) + int index = getfield(hi, 8, 16); + int offset = getfield(hi, 16, 0); +#endif + if (index == G_MW_FOG && offset == G_MWO_FOG) + return d_SPFogPosition(m, hi, lo); +#if !(defined(F3D_BETA) && (defined(F3D_GBI) || defined(F3DEX_GBI))) + else if (index == G_MW_PERSPNORM && offset == 0) + return d_SPPerspNormalize(m, hi, lo); +#endif + else if (index == G_MW_SEGMENT) + return d_SPSegment(m, hi, lo); + else if (index == G_MW_NUMLIGHT && offset == G_MWO_NUMLIGHT) + return d_SPNumLights(m, hi, lo); +#if defined(F3D_GBI) || (defined(F3D_BETA) && defined(F3DEX_GBI)) + else if (index == G_MW_POINTS) + return d_SPModifyVertex(m, hi, lo); +#endif +#if defined(F3D_GBI) || defined(F3DEX_GBI) + else if (index == G_MW_MATRIX) + return d_SPInsertMatrix(m, hi, lo); +#endif + else + { + m->id = gfxd_MoveWd; + argi(m, 0, "index", index, gfxd_Mw); + if (index == G_MW_MATRIX) + argu(m, 1, "offset", offset, gfxd_Mwo_matrix); + else if (index == G_MW_CLIP) + argu(m, 1, "offset", offset, gfxd_Mwo_clip); + else if (index == G_MW_LIGHTCOL) + argu(m, 1, "offset", offset, gfxd_Mwo_lightcol); + else + argu(m, 1, "offset", offset, gfxd_Mwo); + argu(m, 2, "value", lo, gfxd_Word); + } + return 0; +} + +#if defined(F3D_GBI) || defined(F3DEX_GBI) +UCFUNC int d_MoveMem(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int size = getfield(hi, 16, 0); + int index = getfield(hi, 8, 16); + if (size == sizeof(Light) + && index >= G_MV_L0 + && index <= G_MV_L7 + && index % 2 == 0) + { + return d_SPLight(m, hi, lo); + } + else if (size == sizeof(Light) && index == G_MV_LOOKATX) + return d_SPLookAtX(m, hi, lo); + else if (size == sizeof(Light) && index == G_MV_LOOKATY) + return d_SPLookAtY(m, hi, lo); + else if (size == sizeof(Vp) && index == G_MV_VIEWPORT) + return d_SPViewport(m, hi, lo); + else + { + m->id = gfxd_MoveMem; + argu(m, 0, "size", size, gfxd_Size); + argi(m, 1, "index", index, gfxd_Mv); + argu(m, 2, "dram", lo, gfxd_Dram); + return 0; + } +} +#elif defined(F3DEX_GBI_2) +UCFUNC int d_MoveMem(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int size = (getfield(hi, 5, 19) + 1) * 8; + int index = getfield(hi, 8, 0); + int offset = getfield(hi, 8, 8) * 8; + if (size == sizeof(Light) + && index == G_MV_LIGHT + && offset >= G_MVO_L0 + && offset <= G_MVO_L7 + && offset % 0x18 == 0) + { + return d_SPLight(m, hi, lo); + } + else if (size == sizeof(Light) + && index == G_MV_LIGHT + && offset == G_MVO_LOOKATX) + { + return d_SPLookAtX(m, hi, lo); + } + else if (size == sizeof(Light) + && index == G_MV_LIGHT + && offset == G_MVO_LOOKATY) + { + return d_SPLookAtY(m, hi, lo); + } + else if (size == sizeof(Vp) + && index == G_MV_VIEWPORT + && offset == 0) + { + return d_SPViewport(m, hi, lo); + } + else + { + m->id = gfxd_MoveMem; + argu(m, 0, "size", size, gfxd_Size); + argi(m, 1, "index", index, gfxd_Mv); + argu(m, 2, "offset", offset, gfxd_Size); + argu(m, 3, "dram", lo, gfxd_Dram); + return 0; + } +} +#endif + +#if defined(F3DEX_GBI_2) +UCFUNC int d_SPDmaRead(gfxd_macro_t *m, uint32_t hi, uint32_t lo); +UCFUNC int d_SPDmaWrite(gfxd_macro_t *m, uint32_t hi, uint32_t lo); +UCFUNC int d_SPDma_io(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + int flag = getfield(hi, 1, 23); + if (flag == 0) + return d_SPDmaRead(m, hi, lo); + else if (flag == 1) + return d_SPDmaWrite(m, hi, lo); + else + { + m->id = gfxd_SPDma_io; + argi(m, 0, "flag", flag, gfxd_Dmaflag); + argu(m, 1, "dmem", getfield(hi, 10, 13) * 8, gfxd_Dmem); + argu(m, 2, "dram", lo, gfxd_Dram); + argu(m, 3, "size", getfield(hi, 12, 10) + 1, gfxd_Size); + return 0; + } +} + +UCFUNC int d_SPDmaRead(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPDmaRead; + argu(m, 0, "dmem", getfield(hi, 10, 13) * 8, gfxd_Dmem); + argu(m, 1, "dram", lo, gfxd_Dram); + argu(m, 2, "size", getfield(hi, 12, 10) + 1, gfxd_Size); + return 0; +} + +UCFUNC int d_SPDmaWrite(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPDmaWrite; + argu(m, 0, "dmem", getfield(hi, 10, 13) * 8, gfxd_Dmem); + argu(m, 1, "dram", lo, gfxd_Dram); + argu(m, 2, "size", getfield(hi, 12, 10) + 1, gfxd_Size); + return 0; +} +#endif + +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) +UCFUNC int d_LoadUcode(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_LoadUcode; + argu(m, 0, "uc_start", lo, gfxd_Uctext); + argu(m, 1, "uc_dsize", getfield(hi, 16, 0) + 1, gfxd_Size); + return 0; +} + +UCFUNC int c_SPLoadUcodeEx(gfxd_macro_t *m, int n_macro) +{ + if (n_macro < 2) + return -1; + if (m[0].id != gfxd_DPHalf1) + return -1; + uint32_t uc_dstart = argvu(&m[0], 0); + if (m[1].id != gfxd_LoadUcode) + return -1; + uint32_t uc_start = argvu(&m[1], 0); + uint32_t uc_dsize = argvu(&m[1], 1); + m->id = gfxd_SPLoadUcodeEx; + argu(m, 0, "uc_start", uc_start, gfxd_Uctext); + argu(m, 1, "uc_dstart", uc_dstart, gfxd_Ucdata); + argu(m, 2, "uc_dsize", uc_dsize, gfxd_Size); + return 0; +} +#endif + +UCFUNC int d_TexRect(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_TexRect; + argu(m, 0, "ulx", getfield(lo, 12, 12), gfxd_Coordq); + argu(m, 1, "uly", getfield(lo, 12, 0), gfxd_Coordq); + argu(m, 2, "lrx", getfield(hi, 12, 12), gfxd_Coordq); + argu(m, 3, "lry", getfield(hi, 12, 0), gfxd_Coordq); + argi(m, 4, "tile", getfield(lo, 3, 24), gfxd_Tile); + return 0; +} + +UCFUNC int d_TexRectFlip(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_TexRectFlip; + argu(m, 0, "ulx", getfield(lo, 12, 12), gfxd_Coordq); + argu(m, 1, "uly", getfield(lo, 12, 0), gfxd_Coordq); + argu(m, 2, "lrx", getfield(hi, 12, 12), gfxd_Coordq); + argu(m, 3, "lry", getfield(hi, 12, 0), gfxd_Coordq); + argi(m, 4, "tile", getfield(lo, 3, 24), gfxd_Tile); + return 0; +} + +UCFUNC int d_SPNoOp(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_SPNoOp; + return 0; +} + +#if defined(F3DEX_GBI_2) +UCFUNC int d_Special3(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_Special3; + argu(m, 0, "hi", getfield(hi, 24, 0), gfxd_Word); + argu(m, 1, "lo", lo, gfxd_Word); + return 0; +} + +UCFUNC int d_Special2(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_Special2; + argu(m, 0, "hi", getfield(hi, 24, 0), gfxd_Word); + argu(m, 1, "lo", lo, gfxd_Word); + return 0; +} + +UCFUNC int d_Special1(gfxd_macro_t *m, uint32_t hi, uint32_t lo) +{ + m->id = gfxd_Special1; + argu(m, 0, "hi", getfield(hi, 24, 0), gfxd_Word); + argu(m, 1, "lo", lo, gfxd_Word); + return 0; +} +#endif diff --git a/extern/libgfxd/uc_macrotbl.c b/extern/libgfxd/uc_macrotbl.c new file mode 100644 index 000000000..a8939cede --- /dev/null +++ b/extern/libgfxd/uc_macrotbl.c @@ -0,0 +1,1397 @@ +static const gfxd_macro_type_t macro_tbl[] = +{ + [gfxd_Invalid] = + { + .prefix = NULL, + .suffix = NULL, + .opcode = -1, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_Invalid, + }, + [gfxd_DPFillRectangle] = + { + .prefix = NULL, + .suffix = "DPFillRectangle", + .opcode = G_FILLRECT, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPFillRectangle, + }, + [gfxd_DPFullSync] = + { + .prefix = NULL, + .suffix = "DPFullSync", + .opcode = G_RDPFULLSYNC, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_DPFullSync, + }, + [gfxd_DPLoadSync] = + { + .prefix = NULL, + .suffix = "DPLoadSync", + .opcode = G_RDPLOADSYNC, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_DPLoadSync, + }, + [gfxd_DPTileSync] = + { + .prefix = NULL, + .suffix = "DPTileSync", + .opcode = G_RDPTILESYNC, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_DPTileSync, + }, + [gfxd_DPPipeSync] = + { + .prefix = NULL, + .suffix = "DPPipeSync", + .opcode = G_RDPPIPESYNC, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_DPPipeSync, + }, + [gfxd_DPLoadTLUT_pal16] = + { + .prefix = NULL, + .suffix = "DPLoadTLUT_pal16", + .opcode = G_SETTIMG, + .n_gfx = 6, + .n_arg = 2, + .combine_fn = c_DPLoadTLUT_pal16, + }, + [gfxd_DPLoadTLUT_pal256] = + { + .prefix = NULL, + .suffix = "DPLoadTLUT_pal256", + .opcode = G_SETTIMG, + .n_gfx = 6, + .n_arg = 1, + .combine_fn = c_DPLoadTLUT_pal256, + }, + [gfxd_DPLoadMultiBlockYuvS] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlockYuvS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 14, + .combine_fn = c_DPLoadMultiBlockYuvS, + .ext = 1, + }, + [gfxd_DPLoadMultiBlockYuv] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlockYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 14, + .combine_fn = c_DPLoadMultiBlockYuv, + .ext = 1, + }, + [gfxd_DPLoadMultiBlock_4bS] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlock_4bS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c_DPLoadMultiBlock_4bS, + }, + [gfxd_DPLoadMultiBlock_4b] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlock_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c_DPLoadMultiBlock_4b, + }, + [gfxd_DPLoadMultiBlockS] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlockS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 14, + .combine_fn = c_DPLoadMultiBlockS, + }, + [gfxd_DPLoadMultiBlock] = + { + .prefix = NULL, + .suffix = "DPLoadMultiBlock", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 14, + .combine_fn = c_DPLoadMultiBlock, + }, + [gfxd__DPLoadTextureBlockYuvS] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlockYuvS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c__DPLoadTextureBlockYuvS, + .ext = 1, + }, + [gfxd__DPLoadTextureBlockYuv] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlockYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c__DPLoadTextureBlockYuv, + .ext = 1, + }, + [gfxd__DPLoadTextureBlock_4bS] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlock_4bS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c__DPLoadTextureBlock_4bS, + .ext = 1, + }, + [gfxd__DPLoadTextureBlock_4b] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlock_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c__DPLoadTextureBlock_4b, + }, + [gfxd__DPLoadTextureBlockS] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlockS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c__DPLoadTextureBlockS, + .ext = 1, + }, + [gfxd__DPLoadTextureBlock] = + { + .prefix = "_", + .suffix = "DPLoadTextureBlock", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 13, + .combine_fn = c__DPLoadTextureBlock, + }, + [gfxd_DPLoadTextureBlockYuvS] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlockYuvS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c_DPLoadTextureBlockYuvS, + .ext = 1, + }, + [gfxd_DPLoadTextureBlockYuv] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlockYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c_DPLoadTextureBlockYuv, + .ext = 1, + }, + [gfxd_DPLoadTextureBlock_4bS] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlock_4bS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 11, + .combine_fn = c_DPLoadTextureBlock_4bS, + }, + [gfxd_DPLoadTextureBlock_4b] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlock_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 11, + .combine_fn = c_DPLoadTextureBlock_4b, + }, + [gfxd_DPLoadTextureBlockS] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlockS", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c_DPLoadTextureBlockS, + }, + [gfxd_DPLoadTextureBlock] = + { + .prefix = NULL, + .suffix = "DPLoadTextureBlock", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 12, + .combine_fn = c_DPLoadTextureBlock, + }, + [gfxd_DPLoadMultiTileYuv] = + { + .prefix = NULL, + .suffix = "DPLoadMultiTileYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 18, + .combine_fn = c_DPLoadMultiTileYuv, + .ext = 1, + }, + [gfxd_DPLoadMultiTile_4b] = + { + .prefix = NULL, + .suffix = "DPLoadMultiTile_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 17, + .combine_fn = c_DPLoadMultiTile_4b, + }, + [gfxd_DPLoadMultiTile] = + { + .prefix = NULL, + .suffix = "DPLoadMultiTile", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 18, + .combine_fn = c_DPLoadMultiTile, + }, + [gfxd__DPLoadTextureTileYuv] = + { + .prefix = "_", + .suffix = "DPLoadTextureTileYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 17, + .combine_fn = c__DPLoadTextureTileYuv, + .ext = 1, + }, + [gfxd__DPLoadTextureTile_4b] = + { + .prefix = "_", + .suffix = "DPLoadTextureTile_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 16, + .combine_fn = c__DPLoadTextureTile_4b, + .ext = 1, + }, + [gfxd__DPLoadTextureTile] = + { + .prefix = "_", + .suffix = "DPLoadTextureTile", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 17, + .combine_fn = c__DPLoadTextureTile, + .ext = 1, + }, + [gfxd_DPLoadTextureTileYuv] = + { + .prefix = NULL, + .suffix = "DPLoadTextureTileYuv", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 16, + .combine_fn = c_DPLoadTextureTileYuv, + .ext = 1, + }, + [gfxd_DPLoadTextureTile_4b] = + { + .prefix = NULL, + .suffix = "DPLoadTextureTile_4b", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 15, + .combine_fn = c_DPLoadTextureTile_4b, + }, + [gfxd_DPLoadTextureTile] = + { + .prefix = NULL, + .suffix = "DPLoadTextureTile", + .opcode = G_SETTIMG, + .n_gfx = 7, + .n_arg = 16, + .combine_fn = c_DPLoadTextureTile, + }, + [gfxd_DPLoadBlock] = + { + .prefix = NULL, + .suffix = "DPLoadBlock", + .opcode = G_LOADBLOCK, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_DPLoadBlock, + }, + [gfxd_DPNoOp] = + { + .prefix = NULL, + .suffix = "DPNoOp", + .opcode = G_NOOP, + .n_gfx = 1, + .n_arg = 0, + .alias = gfxd_DPNoOpTag, + }, + [gfxd_DPNoOpTag] = + { + .prefix = NULL, + .suffix = "DPNoOpTag", + .opcode = G_NOOP, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_DPNoOpTag, + }, + [gfxd_DPPipelineMode] = + { + .prefix = NULL, + .suffix = "DPPipelineMode", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetBlendColor] = + { + .prefix = NULL, + .suffix = "DPSetBlendColor", + .opcode = G_SETBLENDCOLOR, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPSetBlendColor, + }, + [gfxd_DPSetEnvColor] = + { + .prefix = NULL, + .suffix = "DPSetEnvColor", + .opcode = G_SETENVCOLOR, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPSetEnvColor, + }, + [gfxd_DPSetFillColor] = + { + .prefix = NULL, + .suffix = "DPSetFillColor", + .opcode = G_SETFILLCOLOR, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_DPSetFillColor, + }, + [gfxd_DPSetFogColor] = + { + .prefix = NULL, + .suffix = "DPSetFogColor", + .opcode = G_SETFOGCOLOR, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPSetFogColor, + }, + [gfxd_DPSetPrimColor] = + { + .prefix = NULL, + .suffix = "DPSetPrimColor", + .opcode = G_SETPRIMCOLOR, + .n_gfx = 1, + .n_arg = 6, + .disas_fn = d_DPSetPrimColor, + }, + [gfxd_DPSetColorImage] = + { + .prefix = NULL, + .suffix = "DPSetColorImage", + .opcode = G_SETCIMG, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPSetColorImage, + }, + [gfxd_DPSetDepthImage] = + { + .prefix = NULL, + .suffix = "DPSetDepthImage", + .opcode = G_SETZIMG, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_DPSetDepthImage, + }, + [gfxd_DPSetTextureImage] = + { + .prefix = NULL, + .suffix = "DPSetTextureImage", + .opcode = G_SETTIMG, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_DPSetTextureImage, + }, + [gfxd_DPSetAlphaCompare] = + { + .prefix = NULL, + .suffix = "DPSetAlphaCompare", + .opcode = G_SETOTHERMODE_L, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeLo, + }, + [gfxd_DPSetAlphaDither] = + { + .prefix = NULL, + .suffix = "DPSetAlphaDither", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetColorDither] = + { + .prefix = NULL, + .suffix = "DPSetColorDither", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetCombineMode] = + { + .prefix = NULL, + .suffix = "DPSetCombineMode", + .opcode = G_SETCOMBINE, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_DPSetCombineLERP, + }, + [gfxd_DPSetCombineLERP] = + { + .prefix = NULL, + .suffix = "DPSetCombineLERP", + .opcode = G_SETCOMBINE, + .n_gfx = 1, + .n_arg = 16, + .disas_fn = d_DPSetCombineLERP, + }, + [gfxd_DPSetConvert] = + { + .prefix = NULL, + .suffix = "DPSetConvert", + .opcode = G_SETCONVERT, + .n_gfx = 1, + .n_arg = 6, + .disas_fn = d_DPSetConvert, + }, + [gfxd_DPSetTextureConvert] = + { + .prefix = NULL, + .suffix = "DPSetTextureConvert", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetCycleType] = + { + .prefix = NULL, + .suffix = "DPSetCycleType", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetDepthSource] = + { + .prefix = NULL, + .suffix = "DPSetDepthSource", + .opcode = G_SETOTHERMODE_L, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeLo, + }, + [gfxd_DPSetCombineKey] = + { + .prefix = NULL, + .suffix = "DPSetCombineKey", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetKeyGB] = + { + .prefix = NULL, + .suffix = "DPSetKeyGB", + .opcode = G_SETKEYGB, + .n_gfx = 1, + .n_arg = 6, + .disas_fn = d_DPSetKeyGB, + }, + [gfxd_DPSetKeyR] = + { + .prefix = NULL, + .suffix = "DPSetKeyR", + .opcode = G_SETKEYR, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_DPSetKeyR, + }, + [gfxd_DPSetPrimDepth] = + { + .prefix = NULL, + .suffix = "DPSetPrimDepth", + .opcode = G_SETPRIMDEPTH, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_DPSetPrimDepth, + }, + [gfxd_DPSetRenderMode] = + { + .prefix = NULL, + .suffix = "DPSetRenderMode", + .opcode = G_SETOTHERMODE_L, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_SPSetOtherModeLo, + }, + [gfxd_DPSetScissor] = + { + .prefix = NULL, + .suffix = "DPSetScissor", + .opcode = G_SETSCISSOR, + .n_gfx = 1, + .n_arg = 5, + .alias = gfxd_DPSetScissorFrac, + }, + [gfxd_DPSetScissorFrac] = + { + .prefix = NULL, + .suffix = "DPSetScissorFrac", + .opcode = G_SETSCISSOR, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_DPSetScissorFrac, + }, + [gfxd_DPSetTextureDetail] = + { + .prefix = NULL, + .suffix = "DPSetTextureDetail", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetTextureFilter] = + { + .prefix = NULL, + .suffix = "DPSetTextureFilter", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetTextureLOD] = + { + .prefix = NULL, + .suffix = "DPSetTextureLOD", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetTextureLUT] = + { + .prefix = NULL, + .suffix = "DPSetTextureLUT", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetTexturePersp] = + { + .prefix = NULL, + .suffix = "DPSetTexturePersp", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPSetOtherModeHi, + }, + [gfxd_DPSetTile] = + { + .prefix = NULL, + .suffix = "DPSetTile", + .opcode = G_SETTILE, + .n_gfx = 1, + .n_arg = 12, + .disas_fn = d_DPSetTile, + }, + [gfxd_DPSetTileSize] = + { + .prefix = NULL, + .suffix = "DPSetTileSize", + .opcode = G_SETTILESIZE, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_DPSetTileSize, + }, + [gfxd_SP1Triangle] = + { + .prefix = NULL, + .suffix = "SP1Triangle", + .opcode = G_TRI1, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_SP1Triangle, + }, +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_SP2Triangles] = + { + .prefix = NULL, + .suffix = "SP2Triangles", + .opcode = G_TRI2, + .n_gfx = 1, + .n_arg = 8, + .disas_fn = d_SP2Triangles, + }, +#endif +#if defined(F3DEX_GBI) + [gfxd_SP1Quadrangle] = + { + .prefix = NULL, + .suffix = "SP1Quadrangle", + .opcode = G_TRI2, + .n_gfx = 1, + .n_arg = 5, + .alias = gfxd_SP2Triangles, + }, +#elif defined(F3DEX_GBI_2) + [gfxd_SP1Quadrangle] = + { + .prefix = NULL, + .suffix = "SP1Quadrangle", + .opcode = G_QUAD, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_SP1Quadrangle, + }, +#endif +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_SPBranchLessZraw] = + { + .prefix = NULL, + .suffix = "SPBranchLessZraw", + .opcode = G_RDPHALF_1, + .n_gfx = 2, + .n_arg = 3, + .combine_fn = c_SPBranchLessZraw, + }, +#endif + [gfxd_SPBranchList] = + { + .prefix = NULL, + .suffix = "SPBranchList", + .opcode = G_DL, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_DisplayList, + }, + [gfxd_SPClipRatio] = + { + .prefix = NULL, + .suffix = "SPClipRatio", + .opcode = G_MOVEWORD, + .n_gfx = 4, + .n_arg = 1, + .combine_fn = c_SPClipRatio, + }, + [gfxd_SPCullDisplayList] = + { + .prefix = NULL, + .suffix = "SPCullDisplayList", + .opcode = G_CULLDL, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_SPCullDisplayList, + }, + [gfxd_SPDisplayList] = + { + .prefix = NULL, + .suffix = "SPDisplayList", + .opcode = G_DL, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_DisplayList, + }, + [gfxd_SPEndDisplayList] = + { + .prefix = NULL, + .suffix = "SPEndDisplayList", + .opcode = G_ENDDL, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_SPEndDisplayList, + }, + [gfxd_SPFogFactor] = + { + .prefix = NULL, + .suffix = "SPFogFactor", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_SPFogPosition, + }, + [gfxd_SPFogPosition] = + { + .prefix = NULL, + .suffix = "SPFogPosition", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_MoveWd, + }, +#if defined(F3D_GBI) || defined(F3DEX_GBI) + [gfxd_SPForceMatrix] = + { + .prefix = NULL, + .suffix = "SPForceMatrix", + .opcode = G_MOVEMEM, + .n_gfx = 4, + .n_arg = 1, + .combine_fn = c_SPForceMatrix, + }, + [gfxd_SPSetGeometryMode] = + { + .prefix = NULL, + .suffix = "SPSetGeometryMode", + .opcode = G_SETGEOMETRYMODE, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_SPSetGeometryMode, + }, + [gfxd_SPClearGeometryMode] = + { + .prefix = NULL, + .suffix = "SPClearGeometryMode", + .opcode = G_CLEARGEOMETRYMODE, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_SPClearGeometryMode, + }, + [gfxd_SPLoadGeometryMode] = + { + .prefix = NULL, + .suffix = "SPLoadGeometryMode", + .opcode = G_CLEARGEOMETRYMODE, + .n_gfx = 2, + .n_arg = 1, + .combine_fn = c_SPLoadGeometryMode, + }, +#elif defined(F3DEX_GBI_2) + [gfxd_SPForceMatrix] = + { + .prefix = NULL, + .suffix = "SPForceMatrix", + .opcode = G_MOVEMEM, + .n_gfx = 2, + .n_arg = 1, + .combine_fn = c_SPForceMatrix, + }, + [gfxd_SPSetGeometryMode] = + { + .prefix = NULL, + .suffix = "SPSetGeometryMode", + .opcode = G_GEOMETRYMODE, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPGeometryMode, + }, + [gfxd_SPClearGeometryMode] = + { + .prefix = NULL, + .suffix = "SPClearGeometryMode", + .opcode = G_GEOMETRYMODE, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPGeometryMode, + }, + [gfxd_SPLoadGeometryMode] = + { + .prefix = NULL, + .suffix = "SPLoadGeometryMode", + .opcode = G_GEOMETRYMODE, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPGeometryMode, + }, +#endif +#if defined(F3D_GBI) || defined(F3DEX_GBI) + [gfxd_SPInsertMatrix] = + { + .prefix = NULL, + .suffix = "SPInsertMatrix", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_MoveWd, + }, +#endif + [gfxd_SPLine3D] = + { + .prefix = NULL, + .suffix = "SPLine3D", + .opcode = G_LINE3D, + .n_gfx = 1, + .n_arg = 3, + .alias = gfxd_SPLineW3D, + }, + [gfxd_SPLineW3D] = + { + .prefix = NULL, + .suffix = "SPLineW3D", + .opcode = G_LINE3D, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_SPLineW3D, + }, +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_SPLoadUcode] = + { + .prefix = NULL, + .suffix = "SPLoadUcode", + .opcode = G_RDPHALF_1, + .n_gfx = 2, + .n_arg = 2, + .combine_fn = c_SPLoadUcode, + }, +#endif + [gfxd_SPLookAtX] = + { + .prefix = NULL, + .suffix = "SPLookAtX", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_MoveMem, + }, + [gfxd_SPLookAtY] = + { + .prefix = NULL, + .suffix = "SPLookAtY", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_MoveMem, + }, + [gfxd_SPLookAt] = + { + .prefix = NULL, + .suffix = "SPLookAt", + .opcode = G_MOVEMEM, + .n_gfx = 2, + .n_arg = 1, + .combine_fn = c_SPLookAt, + }, + [gfxd_SPMatrix] = + { + .prefix = NULL, + .suffix = "SPMatrix", + .opcode = G_MTX, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_SPMatrix, + }, +#if defined(F3D_GBI) || (defined(F3D_BETA) && defined(F3DEX_GBI)) + [gfxd_SPModifyVertex] = + { + .prefix = NULL, + .suffix = "SPModifyVertex", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 3, + .alias = gfxd_MoveWd, + }, +#elif defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_SPModifyVertex] = + { + .prefix = NULL, + .suffix = "SPModifyVertex", + .opcode = G_MODIFYVTX, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_SPModifyVertex, + }, +#endif +#if defined(F3D_BETA) && (defined(F3D_GBI) || defined(F3DEX_GBI)) + [gfxd_SPPerspNormalize] = + { + .prefix = NULL, + .suffix = "SPPerspNormalize", + .opcode = G_PERSPNORM, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_SPPerspNormalize, + }, +#else + [gfxd_SPPerspNormalize] = + { + .prefix = NULL, + .suffix = "SPPerspNormalize", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_MoveWd, + }, +#endif +#if defined(F3D_GBI) || defined(F3DEX_GBI) + [gfxd_SPPopMatrix] = + { + .prefix = NULL, + .suffix = "SPPopMatrix", + .opcode = G_POPMTX, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_SPPopMatrix, + }, +#elif defined(F3DEX_GBI_2) + [gfxd_SPPopMatrix] = + { + .prefix = NULL, + .suffix = "SPPopMatrix", + .opcode = G_POPMTX, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_SPPopMatrixN, + }, + [gfxd_SPPopMatrixN] = + { + .prefix = NULL, + .suffix = "SPPopMatrixN", + .opcode = G_POPMTX, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_SPPopMatrixN, + }, +#endif + [gfxd_SPSegment] = + { + .prefix = NULL, + .suffix = "SPSegment", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_MoveWd, + }, + [gfxd_SPSetLights1] = + { + .prefix = NULL, + .suffix = "SPSetLights1", + .opcode = G_MOVEWORD, + .n_gfx = 3, + .n_arg = 1, + .combine_fn = c_SPSetLights1, + }, + [gfxd_SPSetLights2] = + { + .prefix = NULL, + .suffix = "SPSetLights2", + .opcode = G_MOVEWORD, + .n_gfx = 4, + .n_arg = 1, + .combine_fn = c_SPSetLights2, + }, + [gfxd_SPSetLights3] = + { + .prefix = NULL, + .suffix = "SPSetLights3", + .opcode = G_MOVEWORD, + .n_gfx = 5, + .n_arg = 1, + .combine_fn = c_SPSetLights3, + }, + [gfxd_SPSetLights4] = + { + .prefix = NULL, + .suffix = "SPSetLights4", + .opcode = G_MOVEWORD, + .n_gfx = 6, + .n_arg = 1, + .combine_fn = c_SPSetLights4, + }, + [gfxd_SPSetLights5] = + { + .prefix = NULL, + .suffix = "SPSetLights5", + .opcode = G_MOVEWORD, + .n_gfx = 7, + .n_arg = 1, + .combine_fn = c_SPSetLights5, + }, + [gfxd_SPSetLights6] = + { + .prefix = NULL, + .suffix = "SPSetLights6", + .opcode = G_MOVEWORD, + .n_gfx = 8, + .n_arg = 1, + .combine_fn = c_SPSetLights6, + }, + [gfxd_SPSetLights7] = + { + .prefix = NULL, + .suffix = "SPSetLights7", + .opcode = G_MOVEWORD, + .n_gfx = 9, + .n_arg = 1, + .combine_fn = c_SPSetLights7, + }, + [gfxd_SPNumLights] = + { + .prefix = NULL, + .suffix = "SPNumLights", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_MoveWd, + }, + [gfxd_SPLight] = + { + .prefix = NULL, + .suffix = "SPLight", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 2, + .alias = gfxd_MoveMem, + }, + [gfxd_SPLightColor] = + { + .prefix = NULL, + .suffix = "SPLightColor", + .opcode = G_MOVEWORD, + .n_gfx = 2, + .n_arg = 2, + .combine_fn = c_SPLightColor, + }, + [gfxd_SPTexture] = + { + .prefix = NULL, + .suffix = "SPTexture", + .opcode = G_TEXTURE, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_SPTexture, + }, + [gfxd_SPTextureRectangle] = + { + .prefix = NULL, + .suffix = "SPTextureRectangle", + .opcode = G_TEXRECT, + .n_gfx = 3, + .n_arg = 9, + .combine_fn = c_SPTextureRectangle, + }, + [gfxd_SPTextureRectangleFlip] = + { + .prefix = NULL, + .suffix = "SPTextureRectangleFlip", + .opcode = G_TEXRECTFLIP, + .n_gfx = 3, + .n_arg = 9, + .combine_fn = c_SPTextureRectangleFlip, + }, + [gfxd_SPVertex] = + { + .prefix = NULL, + .suffix = "SPVertex", + .opcode = G_VTX, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_SPVertex, + }, + [gfxd_SPViewport] = + { + .prefix = NULL, + .suffix = "SPViewport", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 1, + .alias = gfxd_MoveMem, + }, + [gfxd_DPLoadTLUTCmd] = + { + .prefix = NULL, + .suffix = "DPLoadTLUTCmd", + .opcode = G_LOADTLUT, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_DPLoadTLUTCmd, + }, + [gfxd_DPLoadTLUT] = + { + .prefix = NULL, + .suffix = "DPLoadTLUT", + .opcode = G_SETTIMG, + .n_gfx = 6, + .n_arg = 3, + .combine_fn = c_DPLoadTLUT, + }, +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_BranchZ] = + { + .prefix = NULL, + .suffix = "BranchZ", + .opcode = G_BRANCH_Z, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_BranchZ, + .ext = 1, + }, +#endif + [gfxd_DisplayList] = + { + .prefix = NULL, + .suffix = "DisplayList", + .opcode = G_DL, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_DisplayList, + .ext = 1, + }, + [gfxd_DPHalf1] = + { + .prefix = NULL, + .suffix = "DPHalf1", + .opcode = G_RDPHALF_1, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_DPHalf1, + .ext = 1, + }, + [gfxd_DPHalf2] = + { + .prefix = NULL, + .suffix = "DPHalf2", + .opcode = G_RDPHALF_2, + .n_gfx = 1, + .n_arg = 1, + .disas_fn = d_DPHalf2, + .ext = 1, + }, + [gfxd_DPWord] = + { + .prefix = NULL, + .suffix = "DPWord", + .opcode = G_RDPHALF_1, + .n_gfx = 2, + .n_arg = 2, + .combine_fn = c_DPWord, + }, + [gfxd_DPLoadTile] = + { + .prefix = NULL, + .suffix = "DPLoadTile", + .opcode = G_LOADTILE, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_DPLoadTile, + }, +#if defined(F3DEX_GBI_2) + [gfxd_SPGeometryMode] = + { + .prefix = NULL, + .suffix = "SPGeometryMode", + .opcode = G_GEOMETRYMODE, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_SPGeometryMode, + }, +#endif + [gfxd_SPSetOtherMode] = + { + .prefix = NULL, + .suffix = "SPSetOtherMode", + .opcode = -1, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_SPSetOtherMode, + }, + [gfxd_SPSetOtherModeLo] = + { + .prefix = NULL, + .suffix = "SPSetOtherModeLo", + .opcode = G_SETOTHERMODE_L, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_SPSetOtherModeLo, + .ext = 1, + }, + [gfxd_SPSetOtherModeHi] = + { + .prefix = NULL, + .suffix = "SPSetOtherModeHi", + .opcode = G_SETOTHERMODE_H, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_SPSetOtherModeHi, + .ext = 1, + }, + [gfxd_DPSetOtherMode] = + { + .prefix = NULL, + .suffix = "DPSetOtherMode", + .opcode = G_RDPSETOTHERMODE, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_DPSetOtherMode, + }, + [gfxd_MoveWd] = + { + .prefix = NULL, + .suffix = "MoveWd", + .opcode = G_MOVEWORD, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_MoveWd, + }, +#if defined(F3D_GBI) || defined(F3DEX_GBI) + [gfxd_MoveMem] = + { + .prefix = NULL, + .suffix = "MoveMem", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 3, + .disas_fn = d_MoveMem, + .ext = 1, + }, +#elif defined(F3DEX_GBI_2) + [gfxd_MoveMem] = + { + .prefix = NULL, + .suffix = "MoveMem", + .opcode = G_MOVEMEM, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_MoveMem, + .ext = 1, + }, +#endif +#if defined(F3DEX_GBI_2) + [gfxd_SPDma_io] = + { + .prefix = NULL, + .suffix = "SPDma_io", + .opcode = G_DMA_IO, + .n_gfx = 1, + .n_arg = 4, + .disas_fn = d_SPDma_io, + }, + [gfxd_SPDmaRead] = + { + .prefix = NULL, + .suffix = "SPDmaRead", + .opcode = G_DMA_IO, + .n_gfx = 1, + .n_arg = 3, + .alias = gfxd_SPDma_io, + }, + [gfxd_SPDmaWrite] = + { + .prefix = NULL, + .suffix = "SPDmaWrite", + .opcode = G_DMA_IO, + .n_gfx = 1, + .n_arg = 3, + .alias = gfxd_SPDma_io, + }, +#endif +#if defined(F3DEX_GBI) || defined(F3DEX_GBI_2) + [gfxd_LoadUcode] = + { + .prefix = NULL, + .suffix = "LoadUcode", + .opcode = G_LOAD_UCODE, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_LoadUcode, + }, + [gfxd_SPLoadUcodeEx] = + { + .prefix = NULL, + .suffix = "SPLoadUcodeEx", + .opcode = G_RDPHALF_1, + .n_gfx = 2, + .n_arg = 3, + .combine_fn = c_SPLoadUcodeEx, + }, +#endif + [gfxd_TexRect] = + { + .prefix = NULL, + .suffix = "TexRect", + .opcode = G_TEXRECT, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_TexRect, + .ext = 1, + }, + [gfxd_TexRectFlip] = + { + .prefix = NULL, + .suffix = "TexRectFlip", + .opcode = G_TEXRECTFLIP, + .n_gfx = 1, + .n_arg = 5, + .disas_fn = d_TexRectFlip, + .ext = 1, + }, + [gfxd_SPNoOp] = + { + .prefix = NULL, + .suffix = "SPNoOp", + .opcode = G_SPNOOP, + .n_gfx = 1, + .n_arg = 0, + .disas_fn = d_SPNoOp, + }, +#if defined(F3DEX_GBI_2) + [gfxd_Special3] = + { + .prefix = NULL, + .suffix = "Special3", + .opcode = G_SPECIAL_3, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_Special3, + .ext = 1, + }, + [gfxd_Special2] = + { + .prefix = NULL, + .suffix = "Special2", + .opcode = G_SPECIAL_2, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_Special2, + .ext = 1, + }, + [gfxd_Special1] = + { + .prefix = NULL, + .suffix = "Special1", + .opcode = G_SPECIAL_1, + .n_gfx = 1, + .n_arg = 2, + .disas_fn = d_Special1, + .ext = 1, + }, +#endif +}; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3b95cfdba..6d534f30a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,29 +16,17 @@ endif() configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/install_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/install_config.h @ONLY) -set(Source_Files__TopLevel - ${CMAKE_CURRENT_SOURCE_DIR}/Context.h - ${CMAKE_CURRENT_SOURCE_DIR}/Context.cpp - ${CMAKE_CURRENT_BINARY_DIR}/install_config.h -) +file(GLOB Source_Files__TopLevel RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h" "*.cpp") source_group("" FILES ${Source_Files__TopLevel}) target_sources(libultraship PRIVATE ${Source_Files__TopLevel}) #=================== Audio =================== -set(Source_Files__Audio - ${CMAKE_CURRENT_SOURCE_DIR}/audio/Audio.h - ${CMAKE_CURRENT_SOURCE_DIR}/audio/Audio.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/audio/AudioPlayer.h - ${CMAKE_CURRENT_SOURCE_DIR}/audio/AudioPlayer.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/audio/SDLAudioPlayer.h - ${CMAKE_CURRENT_SOURCE_DIR}/audio/SDLAudioPlayer.cpp -) +file(GLOB Source_Files__Audio RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "audio/*.h" "audio/*.cpp") -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - list(APPEND Source_Files__Audio ${CMAKE_CURRENT_SOURCE_DIR}/audio/WasapiAudioPlayer.h) - list(APPEND Source_Files__Audio ${CMAKE_CURRENT_SOURCE_DIR}/audio/WasapiAudioPlayer.cpp) +if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") + list(FILTER Source_Files__Audio EXCLUDE REGEX "audio/WasapiAudioPlayer.*") endif() source_group("audio" FILES ${Source_Files__Audio}) @@ -46,112 +34,15 @@ target_sources(libultraship PRIVATE ${Source_Files__Audio}) #=================== Controller =================== -set(Source_Files__Controller - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldeck/ControlDeck.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldeck/ControlDeck.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldeck/ControlPort.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldeck/ControlPort.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/ControlDevice.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/ControlDevice.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerButton.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerButton.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/Controller.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/Controller.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerGyro.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerGyro.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerLED.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerLED.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerRumble.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerRumble.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerStick.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/ControllerStick.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerButtonMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerGyroMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerGyroMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerInputMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerInputMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerLEDMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerLEDMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerRumbleMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/ControllerRumbleMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/AxisDirectionMappingFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/AxisDirectionMappingFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/GyroMappingFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/GyroMappingFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/LEDMappingFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/LEDMappingFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/RumbleMappingFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/factories/RumbleMappingFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/ControllerDisconnectedWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/ControllerDisconnectedWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/ControllerReorderingWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/ControllerReorderingWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndex.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexMappingManager.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexMappingManager.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToPhysicalDeviceIndexMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToPhysicalDeviceIndexMapping.h -) +file(GLOB_RECURSE Source_Files__Controller RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "controller/*.h" "controller/*.cpp") if (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") - list(APPEND Source_Files__Controller - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUAxisDirectionToAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUAxisDirectionToAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToAnyMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToAnyMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUButtonToButtonMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUGyroMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUGyroMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiUMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiURumbleMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/wiiu/WiiURumbleMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToWiiUDeviceIndexMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToWiiUDeviceIndexMapping.h - ) -endif() - -if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") - list(APPEND Source_Files__Controller - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAnyMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAnyMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAnyMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAnyMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToAnyMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToAnyMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToAxisDirectionMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToAxisDirectionMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLGyroMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLGyroMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLLEDMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLLEDMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLRumbleMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/controldevice/controller/mapping/sdl/SDLRumbleMapping.h - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToSDLDeviceIndexMapping.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/controller/deviceindex/LUSDeviceIndexToSDLDeviceIndexMapping.h - ) + list(FILTER Source_Files__Controller EXCLUDE REGEX "controller/controldevice/controller/mapping/keyboard/*") + list(FILTER Source_Files__Controller EXCLUDE REGEX "controller/controldevice/controller/mapping/sdl/*") + list(FILTER Source_Files__Controller EXCLUDE REGEX "controller/deviceindex/LUSDeviceIndexToSDLDeviceIndexMapping.*") +else() + list(FILTER Source_Files__Controller EXCLUDE REGEX "controller/controldevice/controller/mapping/wiiu/*") + list(FILTER Source_Files__Controller EXCLUDE REGEX "controller/deviceindex/LUSDeviceIndexToWiiUDeviceIndexMapping.*") endif() source_group("controller" FILES ${Source_Files__Controller}) @@ -159,12 +50,7 @@ target_sources(libultraship PRIVATE ${Source_Files__Controller}) #=================== Config =================== -set(Source_Files__Config - ${CMAKE_CURRENT_SOURCE_DIR}/config/ConsoleVariable.h - ${CMAKE_CURRENT_SOURCE_DIR}/config/ConsoleVariable.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/config/Config.h - ${CMAKE_CURRENT_SOURCE_DIR}/config/Config.cpp -) +file(GLOB Source_Files__Config RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "config/*.h" "config/*.cpp") source_group("config" FILES ${Source_Files__Config}) target_sources(libultraship PRIVATE ${Source_Files__Config}) @@ -173,143 +59,53 @@ target_sources(libultraship PRIVATE ${Source_Files__Config}) source_group("public") -set(Source_Files__Public__Libultra - ${CMAKE_CURRENT_SOURCE_DIR}/public/libultra/os.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/libultra/os.cpp -) +file(GLOB Source_Files__Public__Libultra RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "public/libultra/*.h" "public/libultra/*.cpp") source_group("public/libultra" FILES ${Source_Files__Public__Libultra}) -set(Source_Files__Public__Bridge - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/resourcebridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/resourcebridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/windowbridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/windowbridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/audiobridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/audiobridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/gfxbridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/gfxbridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/gfxdebuggerbridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/gfxdebuggerbridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/controllerbridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/controllerbridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/consolevariablebridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/consolevariablebridge.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/crashhandlerbridge.h - ${CMAKE_CURRENT_SOURCE_DIR}/public/bridge/crashhandlerbridge.cpp -) +file(GLOB Source_Files__Public__Bridge RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "public/bridge/*.h" "public/bridge/*.cpp") source_group("public/bridge" FILES ${Source_Files__Public__Bridge}) target_sources(libultraship PRIVATE ${Source_Files__Public__Libultra} ${Source_Files__Public__Bridge}) #=================== Debug =================== -set(Source_Files__Debug - ${CMAKE_CURRENT_SOURCE_DIR}/debug/CrashHandler.h - ${CMAKE_CURRENT_SOURCE_DIR}/debug/CrashHandler.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/debug/Console.h - ${CMAKE_CURRENT_SOURCE_DIR}/debug/Console.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/debug/GfxDebugger.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/debug/GfxDebugger.h -) +file(GLOB Source_Files__Debug RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "debug/*.h" "debug/*.cpp") source_group("debug" FILES ${Source_Files__Debug}) target_sources(libultraship PRIVATE ${Source_Files__Debug}) #=================== Log =================== -set(Source_Files__Log - ${CMAKE_CURRENT_SOURCE_DIR}/log/luslog.h - ${CMAKE_CURRENT_SOURCE_DIR}/log/luslog.cpp -) +file(GLOB Source_Files__Log RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "log/*.h" "log/*.cpp") source_group("log" FILES ${Source_Files__Log}) target_sources(libultraship PRIVATE ${Source_Files__Log} ${Source_Files__Log__SPDLog}) #=================== Window =================== -set(Source_Files__Window - ${CMAKE_CURRENT_SOURCE_DIR}/window/Window.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/Window.cpp -) + +file(GLOB Source_Files__Window RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "window/*.h" "window/*.cpp") source_group("window" FILES ${Source_Files__Window}) target_sources(libultraship PRIVATE ${Source_Files__Window}) #=================== Gui =================== -set(Source_Files__Window__Gui - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/ConsoleWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/ConsoleWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/Gui.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/Gui.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/InputEditorWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/InputEditorWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GameOverlay.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GameOverlay.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/Fonts.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/IconsFontAwesome4.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/StatsWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/StatsWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiElement.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiElement.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiMenuBar.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GuiMenuBar.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GfxDebuggerWindow.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/GfxDebuggerWindow.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/Font.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/Font.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/FontFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/FontFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/GuiTexture.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/GuiTexture.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/GuiTextureFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/window/gui/resource/GuiTextureFactory.cpp -) +file(GLOB_RECURSE Source_Files__Window__Gui RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "window/gui/*.h" "window/gui/*.cpp") source_group("window/gui" FILES ${Source_Files__Window__Gui}) target_sources(libultraship PRIVATE ${Source_Files__Window__Gui}) -if (GFX_DEBUG_DISASSEMBLER) - set(Header_Files__Libraries__libgfxd - "../../ZAPDTR/lib/libgfxd/gbi.h" - "../../ZAPDTR/lib/libgfxd/gfxd.h" - "../../ZAPDTR/lib/libgfxd/priv.h" - ) - source_group("Header Files\\Libraries\\libgfxd" FILES ${Header_Files__Libraries__libgfxd}) - - set(Source_Files__Libraries__libgfxd - "../../ZAPDTR/lib/libgfxd/gfxd.c" - "../../ZAPDTR/lib/libgfxd/uc.c" - "../../ZAPDTR/lib/libgfxd/uc_f3d.c" - "../../ZAPDTR/lib/libgfxd/uc_f3db.c" - "../../ZAPDTR/lib/libgfxd/uc_f3dex.c" - "../../ZAPDTR/lib/libgfxd/uc_f3dex2.c" - "../../ZAPDTR/lib/libgfxd/uc_f3dexb.c" - ) - source_group("Source Files\\Libraries\\libgfxd" FILES ${Source_Files__Libraries__libgfxd}) - - target_sources(libultraship PRIVATE ${Header_Files__Libraries__libgfxd} ${Source_Files__Libraries__libgfxd}) -endif() - #=================== Utils =================== -set(Source_Files__Utils - ${CMAKE_CURRENT_SOURCE_DIR}/utils/stox.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/stox.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/utils/Utils.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/Utils.cpp -) +file(GLOB Source_Files__Utils RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "utils/*.h" "utils/*.cpp") if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - list(APPEND Source_Files__Utils - ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm - ) - + list(APPEND Source_Files__Utils ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm PROPERTIES COMPILE_FLAGS -fno-objc-arc) +else() + list(REMOVE_ITEM Header_Files__include ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.h) endif() source_group("utils" FILES ${Source_Files__Utils}) @@ -317,17 +113,7 @@ target_sources(libultraship PRIVATE ${Source_Files__Utils}) #=================== BinaryTools ================== -set(Source_Files__Utils__BinaryTools - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/BinaryReader.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/BinaryReader.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/BinaryWriter.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/BinaryWriter.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/endianness.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/MemoryStream.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/MemoryStream.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/Stream.h - ${CMAKE_CURRENT_SOURCE_DIR}/utils/binarytools/Stream.cpp -) +file(GLOB Source_Files__Utils__BinaryTools RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "utils/binarytools/*.h" "utils/binarytools/*.cpp") source_group("utils/binarytools" FILES ${Source_Files__Utils__BinaryTools}) target_sources(libultraship PRIVATE ${Source_Files__Utils__BinaryTools}) @@ -357,139 +143,63 @@ target_sources(libultraship PRIVATE ${Source_Files__Port}) #=================== Resource =================== -set(Source_Files__Resource - ${CMAKE_CURRENT_SOURCE_DIR}/resource/File.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/Resource.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceType.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/Resource.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceManager.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceManager.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceLoader.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceLoader.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceFactoryBinary.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceFactoryBinary.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceFactoryXML.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/ResourceFactoryXML.cpp -) +file(GLOB Source_Files__Resource RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "resource/*.h" "resource/*.cpp") source_group("resource" FILES ${Source_Files__Resource}) -set(Source_Files__Resource__Types - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Array.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Array.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Blob.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Blob.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/DisplayList.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/DisplayList.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Matrix.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Matrix.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Texture.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Texture.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Vertex.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Vertex.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Json.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/type/Json.h -) +file(GLOB Source_Files__Resource__Types RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "resource/type/*.h" "resource/type/*.cpp") source_group("resource/type" FILES ${Source_Files__Resource__Types}) -set(Source_Files__Resource__Factories - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/ArrayFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/ArrayFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/BlobFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/BlobFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/DisplayListFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/DisplayListFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/MatrixFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/MatrixFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/TextureFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/TextureFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/VertexFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/VertexFactory.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/JsonFactory.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/factory/JsonFactory.h -) +file(GLOB Source_Files__Resource__Factories RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "resource/factory/*.h" "resource/factory/*.cpp") source_group("resource/factory" FILES ${Source_Files__Resource__Factories}) -set(Source_Files__Resource__Archive - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/Archive.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/Archive.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/OtrArchive.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/OtrArchive.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/O2rArchive.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/O2rArchive.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/ArchiveManager.h - ${CMAKE_CURRENT_SOURCE_DIR}/resource/archive/ArchiveManager.cpp -) +file(GLOB Source_Files__Resource__Archive RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "resource/archive/*.h" "resource/archive/*.cpp") source_group("resource/archive" FILES ${Source_Files__Resource__Archive}) target_sources(libultraship PRIVATE ${Source_Files__Resource} ${Source_Files__Resource__Types} ${Source_Files__Resource__Factories} ${Source_Files__Resource__Archive}) #=================== Graphic =================== -set(Source_Files__Graphic - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_cc.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_cc.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_pc.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_pc.cpp -) +file(GLOB Source_Files__Graphic RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "graphic/Fast3D/*.h" "graphic/Fast3D/*.cpp" "graphic/Fast3D/*.c") -if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") - list(APPEND Source_Files__Graphic - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_opengl.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_opengl.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_sdl.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_sdl2.cpp - ) +if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_dxgi*") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_direct3d*") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/dxsdk/*") endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - list(APPEND Source_Files__Graphic - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_dxgi.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_dxgi.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d11.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d11.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d12.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d12.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d_common.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_direct3d_common.cpp - ) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - list(APPEND Source_Files__Graphic - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_metal.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_metal.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_metal_shader.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_metal_shader.h - ) -elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") - list(APPEND Source_Files__Graphic - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_wiiu.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_wiiu.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_gx2.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gfx_gx2.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gx2_shader_gen.h - ${CMAKE_CURRENT_SOURCE_DIR}/graphic/Fast3D/gx2_shader_gen.c - ) +if (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_metal*") +endif() + +if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_wiiu*") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gx2*") +else() + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_opengl*") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_sdl*") endif() source_group("graphic" FILES ${Source_Files__Graphic}) target_sources(libultraship PRIVATE ${Source_Files__Graphic}) -#=================== STB =================== - -set(Source_Files__Lib__stb - "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_image.h" - "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_image_write.h" - "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_impl.c" -) -source_group("extern/stb" FILES ${Source_Files__Lib__stb}) -target_sources(libultraship PRIVATE ${Source_Files__Lib__stb}) - #=================== metal-cpp =================== if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") target_include_directories(libultraship PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../extern/metal-cpp) endif() +#=================== STB =================== +# hack: no idea why wii u doesn't want to link this when we build it +# as a separate static lib +if (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") + set(Source_Files__Lib__stb + "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_image.h" + "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_image_write.h" + "${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb/stb_impl.c" + ) + source_group("extern/stb" FILES ${Source_Files__Lib__stb}) + target_sources(libultraship PRIVATE ${Source_Files__Lib__stb}) +endif() #=================== Packages & Includes =================== @@ -516,6 +226,16 @@ target_link_libraries(libultraship PUBLIC ZAPDUtils ImGui tinyxml2 nlohmann_json::nlohmann_json ) +# hack cont.: wii u just includes these files, everyone +# else handles linking it just fine +if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") + target_link_libraries(libultraship PRIVATE stb) +endif() + +if (GFX_DEBUG_DISASSEMBLER) + target_link_libraries(libultraship PRIVATE libgfxd) +endif() + find_package(libzip REQUIRED) target_link_libraries(libultraship PRIVATE libzip::zip) From 85f6de497f6d375390cc3b4ba55eae5ef9c1b153 Mon Sep 17 00:00:00 2001 From: briaguya <70942617+briaguya-ai@users.noreply.github.com> Date: Thu, 25 Apr 2024 11:57:33 -0400 Subject: [PATCH 12/41] nlohmann from package manager (#511) --- .github/workflows/build-validation.yml | 4 +- .github/workflows/tidy-format-validation.yml | 2 +- CMakeLists.txt | 2 +- extern/CMakeLists.txt | 7 - extern/nlohmann-json/.clang-format | 84 - extern/nlohmann-json/.clang-tidy | 56 - extern/nlohmann-json/.github/CODEOWNERS | 6 - .../nlohmann-json/.github/CODE_OF_CONDUCT.md | 46 - extern/nlohmann-json/.github/CONTRIBUTING.md | 71 - extern/nlohmann-json/.github/FUNDING.yml | 2 - .../.github/ISSUE_TEMPLATE/bug.yaml | 93 - .../.github/ISSUE_TEMPLATE/config.yml | 5 - .../.github/PULL_REQUEST_TEMPLATE.md | 19 - extern/nlohmann-json/.github/SECURITY.md | 5 - extern/nlohmann-json/.github/config.yml | 19 - .../.github/external_ci/.drone.yml | 22 - .../.github/external_ci/appveyor.yml | 91 - extern/nlohmann-json/.github/labeler.yml | 38 - extern/nlohmann-json/.github/stale.yml | 17 - .../.github/workflows/codeql-analysis.yml | 37 - .../.github/workflows/labeler.yml | 18 - .../nlohmann-json/.github/workflows/macos.yml | 66 - .../workflows/publish_documentation.yml | 32 - .../.github/workflows/ubuntu.yml | 162 - .../.github/workflows/windows.yml | 151 - extern/nlohmann-json/.gitignore | 41 - extern/nlohmann-json/.lgtm.yml | 4 - extern/nlohmann-json/.reuse/README.md | 7 - extern/nlohmann-json/.reuse/dep5 | 36 - .../.reuse/templates/json.jinja2 | 11 - .../.reuse/templates/json_support.jinja2 | 11 - extern/nlohmann-json/CITATION.cff | 14 - extern/nlohmann-json/CMakeLists.txt | 209 - extern/nlohmann-json/ChangeLog.md | 2943 -- extern/nlohmann-json/LICENSE.MIT | 21 - extern/nlohmann-json/LICENSES/Apache-2.0.txt | 73 - .../nlohmann-json/LICENSES/BSD-3-Clause.txt | 11 - .../nlohmann-json/LICENSES/GPL-3.0-only.txt | 232 - extern/nlohmann-json/LICENSES/MIT.txt | 9 - extern/nlohmann-json/Makefile | 282 - extern/nlohmann-json/README.md | 1846 -- extern/nlohmann-json/cmake/ci.cmake | 982 - extern/nlohmann-json/cmake/config.cmake.in | 15 - .../cmake/download_test_data.cmake | 56 - .../cmake/nlohmann_jsonConfigVersion.cmake.in | 20 - extern/nlohmann-json/cmake/pkg-config.pc.in | 4 - extern/nlohmann-json/cmake/test.cmake | 273 - extern/nlohmann-json/docs/Makefile | 45 - extern/nlohmann-json/docs/README.md | 20 - extern/nlohmann-json/docs/avatars.png | Bin 1700008 -> 0 bytes extern/nlohmann-json/docs/docset/Info.plist | 20 - extern/nlohmann-json/docs/docset/Makefile | 87 - extern/nlohmann-json/docs/docset/README.md | 19 - extern/nlohmann-json/docs/docset/docSet.sql | 233 - extern/nlohmann-json/docs/docset/docset.json | 10 - extern/nlohmann-json/docs/docset/icon.png | Bin 700 -> 0 bytes extern/nlohmann-json/docs/docset/icon@2x.png | Bin 1362 -> 0 bytes extern/nlohmann-json/docs/examples/README.cpp | 39 - .../nlohmann-json/docs/examples/README.output | 27 - .../docs/examples/accept__string.cpp | 26 - .../docs/examples/accept__string.output | 1 - extern/nlohmann-json/docs/examples/array.cpp | 19 - .../nlohmann-json/docs/examples/array.output | 4 - .../nlohmann-json/docs/examples/array_t.cpp | 10 - .../docs/examples/array_t.output | 1 - .../docs/examples/at__json_pointer.cpp | 104 - .../docs/examples/at__json_pointer.output | 12 - .../docs/examples/at__json_pointer_const.cpp | 80 - .../examples/at__json_pointer_const.output | 9 - .../docs/examples/at__keytype.c++17.cpp | 50 - .../docs/examples/at__keytype.c++17.output | 4 - .../docs/examples/at__keytype_const.c++17.cpp | 44 - .../examples/at__keytype_const.c++17.output | 3 - .../docs/examples/at__object_t_key_type.cpp | 48 - .../examples/at__object_t_key_type.output | 4 - .../examples/at__object_t_key_type_const.cpp | 42 - .../at__object_t_key_type_const.output | 3 - .../docs/examples/at__size_type.cpp | 43 - .../docs/examples/at__size_type.output | 4 - .../docs/examples/at__size_type_const.cpp | 37 - .../docs/examples/at__size_type_const.output | 3 - extern/nlohmann-json/docs/examples/back.cpp | 38 - .../nlohmann-json/docs/examples/back.output | 7 - .../examples/basic_json__CompatibleType.cpp | 218 - .../basic_json__CompatibleType.output | 39 - .../examples/basic_json__InputIt_InputIt.cpp | 32 - .../basic_json__InputIt_InputIt.output | 4 - .../docs/examples/basic_json__basic_json.cpp | 17 - .../examples/basic_json__basic_json.output | 2 - .../examples/basic_json__copyassignment.cpp | 18 - .../basic_json__copyassignment.output | 2 - .../docs/examples/basic_json__list_init_t.cpp | 21 - .../examples/basic_json__list_init_t.output | 5 - .../examples/basic_json__moveconstructor.cpp | 17 - .../basic_json__moveconstructor.output | 2 - .../docs/examples/basic_json__nullptr_t.cpp | 16 - .../examples/basic_json__nullptr_t.output | 2 - .../basic_json__size_type_basic_json.cpp | 18 - .../basic_json__size_type_basic_json.output | 3 - .../docs/examples/basic_json__value_t.cpp | 25 - .../docs/examples/basic_json__value_t.output | 7 - extern/nlohmann-json/docs/examples/begin.cpp | 16 - .../nlohmann-json/docs/examples/begin.output | 1 - extern/nlohmann-json/docs/examples/binary.cpp | 16 - .../nlohmann-json/docs/examples/binary.output | 1 - .../nlohmann-json/docs/examples/binary_t.cpp | 10 - .../docs/examples/binary_t.output | 1 - .../nlohmann-json/docs/examples/boolean_t.cpp | 10 - .../docs/examples/boolean_t.output | 1 - ...h_subtype__byte_container_with_subtype.cpp | 23 - ...ubtype__byte_container_with_subtype.output | 3 - ..._container_with_subtype__clear_subtype.cpp | 21 - ...ntainer_with_subtype__clear_subtype.output | 2 - ...te_container_with_subtype__has_subtype.cpp | 19 - ...container_with_subtype__has_subtype.output | 2 - ...te_container_with_subtype__set_subtype.cpp | 22 - ...container_with_subtype__set_subtype.output | 2 - .../byte_container_with_subtype__subtype.cpp | 22 - ...yte_container_with_subtype__subtype.output | 2 - extern/nlohmann-json/docs/examples/cbegin.cpp | 16 - .../nlohmann-json/docs/examples/cbegin.output | 1 - .../docs/examples/cbor_tag_handler_t.cpp | 28 - .../docs/examples/cbor_tag_handler_t.output | 3 - extern/nlohmann-json/docs/examples/cend.cpp | 19 - .../nlohmann-json/docs/examples/cend.output | 1 - extern/nlohmann-json/docs/examples/clear.cpp | 34 - .../nlohmann-json/docs/examples/clear.output | 7 - .../docs/examples/contains__json_pointer.cpp | 43 - .../examples/contains__json_pointer.output | 7 - .../docs/examples/contains__keytype.c++17.cpp | 20 - .../examples/contains__keytype.c++17.output | 3 - .../examples/contains__object_t_key_type.cpp | 18 - .../contains__object_t_key_type.output | 3 - .../docs/examples/count__keytype.c++17.cpp | 20 - .../docs/examples/count__keytype.c++17.output | 2 - .../examples/count__object_t_key_type.cpp | 18 - .../examples/count__object_t_key_type.output | 2 - .../nlohmann-json/docs/examples/crbegin.cpp | 16 - .../docs/examples/crbegin.output | 1 - extern/nlohmann-json/docs/examples/crend.cpp | 19 - .../nlohmann-json/docs/examples/crend.output | 1 - .../examples/default_object_comparator_t.cpp | 11 - .../default_object_comparator_t.output | 2 - .../docs/examples/diagnostics_extended.cpp | 22 - .../docs/examples/diagnostics_extended.output | 1 - .../docs/examples/diagnostics_standard.cpp | 20 - .../docs/examples/diagnostics_standard.output | 1 - extern/nlohmann-json/docs/examples/diff.cpp | 37 - .../nlohmann-json/docs/examples/diff.output | 25 - extern/nlohmann-json/docs/examples/dump.cpp | 48 - .../nlohmann-json/docs/examples/dump.output | 55 - .../nlohmann-json/docs/examples/emplace.cpp | 31 - .../docs/examples/emplace.output | 6 - .../docs/examples/emplace_back.cpp | 24 - .../docs/examples/emplace_back.output | 4 - extern/nlohmann-json/docs/examples/empty.cpp | 30 - .../nlohmann-json/docs/examples/empty.output | 9 - extern/nlohmann-json/docs/examples/end.cpp | 19 - extern/nlohmann-json/docs/examples/end.output | 1 - .../docs/examples/erase__IteratorType.cpp | 31 - .../docs/examples/erase__IteratorType.output | 6 - .../erase__IteratorType_IteratorType.cpp | 31 - .../erase__IteratorType_IteratorType.output | 6 - .../docs/examples/erase__keytype.c++17.cpp | 20 - .../docs/examples/erase__keytype.c++17.output | 2 - .../examples/erase__object_t_key_type.cpp | 18 - .../examples/erase__object_t_key_type.output | 2 - .../docs/examples/erase__size_type.cpp | 16 - .../docs/examples/erase__size_type.output | 1 - .../docs/examples/error_handler_t.cpp | 24 - .../docs/examples/error_handler_t.output | 3 - .../nlohmann-json/docs/examples/exception.cpp | 20 - .../docs/examples/exception.output | 2 - .../docs/examples/find__keytype.c++17.cpp | 22 - .../docs/examples/find__keytype.c++17.output | 3 - .../docs/examples/find__object_t_key_type.cpp | 20 - .../examples/find__object_t_key_type.output | 3 - .../nlohmann-json/docs/examples/flatten.cpp | 32 - .../docs/examples/flatten.output | 12 - .../docs/examples/from_bjdata.cpp | 20 - .../docs/examples/from_bjdata.output | 4 - .../nlohmann-json/docs/examples/from_bson.cpp | 21 - .../docs/examples/from_bson.output | 4 - .../nlohmann-json/docs/examples/from_cbor.cpp | 20 - .../docs/examples/from_cbor.output | 4 - .../from_json__default_constructible.cpp | 37 - .../from_json__default_constructible.output | 1 - .../from_json__non_default_constructible.cpp | 53 - ...rom_json__non_default_constructible.output | 1 - .../docs/examples/from_msgpack.cpp | 20 - .../docs/examples/from_msgpack.output | 4 - .../docs/examples/from_ubjson.cpp | 20 - .../docs/examples/from_ubjson.output | 4 - extern/nlohmann-json/docs/examples/front.cpp | 29 - .../nlohmann-json/docs/examples/front.output | 6 - .../docs/examples/get__PointerType.cpp | 21 - .../docs/examples/get__PointerType.output | 2 - .../docs/examples/get__ValueType_const.cpp | 50 - .../docs/examples/get__ValueType_const.output | 11 - .../docs/examples/get_allocator.cpp | 18 - .../docs/examples/get_allocator.output | 1 - .../docs/examples/get_binary.cpp | 16 - .../docs/examples/get_binary.output | 1 - .../nlohmann-json/docs/examples/get_ptr.cpp | 21 - .../docs/examples/get_ptr.output | 2 - .../nlohmann-json/docs/examples/get_ref.cpp | 27 - .../docs/examples/get_ref.output | 2 - extern/nlohmann-json/docs/examples/get_to.cpp | 60 - .../nlohmann-json/docs/examples/get_to.output | 11 - extern/nlohmann-json/docs/examples/insert.cpp | 17 - .../nlohmann-json/docs/examples/insert.output | 2 - .../docs/examples/insert__count.cpp | 17 - .../docs/examples/insert__count.output | 2 - .../docs/examples/insert__ilist.cpp | 17 - .../docs/examples/insert__ilist.output | 2 - .../docs/examples/insert__range.cpp | 20 - .../docs/examples/insert__range.output | 2 - .../docs/examples/insert__range_object.cpp | 21 - .../docs/examples/insert__range_object.output | 3 - .../docs/examples/invalid_iterator.cpp | 21 - .../docs/examples/invalid_iterator.output | 2 - .../nlohmann-json/docs/examples/is_array.cpp | 30 - .../docs/examples/is_array.output | 9 - .../nlohmann-json/docs/examples/is_binary.cpp | 30 - .../docs/examples/is_binary.output | 9 - .../docs/examples/is_boolean.cpp | 30 - .../docs/examples/is_boolean.output | 9 - .../docs/examples/is_discarded.cpp | 30 - .../docs/examples/is_discarded.output | 9 - .../nlohmann-json/docs/examples/is_null.cpp | 30 - .../docs/examples/is_null.output | 9 - .../nlohmann-json/docs/examples/is_number.cpp | 30 - .../docs/examples/is_number.output | 9 - .../docs/examples/is_number_float.cpp | 30 - .../docs/examples/is_number_float.output | 9 - .../docs/examples/is_number_integer.cpp | 30 - .../docs/examples/is_number_integer.output | 9 - .../docs/examples/is_number_unsigned.cpp | 30 - .../docs/examples/is_number_unsigned.output | 9 - .../nlohmann-json/docs/examples/is_object.cpp | 30 - .../docs/examples/is_object.output | 9 - .../docs/examples/is_primitive.cpp | 30 - .../docs/examples/is_primitive.output | 9 - .../nlohmann-json/docs/examples/is_string.cpp | 30 - .../docs/examples/is_string.output | 9 - .../docs/examples/is_structured.cpp | 30 - .../docs/examples/is_structured.output | 9 - extern/nlohmann-json/docs/examples/items.cpp | 23 - .../nlohmann-json/docs/examples/items.output | 7 - .../docs/examples/json_lines.cpp | 22 - .../docs/examples/json_lines.output | 4 - .../docs/examples/json_pointer.cpp | 47 - .../docs/examples/json_pointer.output | 3 - .../docs/examples/json_pointer__back.cpp | 15 - .../docs/examples/json_pointer__back.output | 2 - .../docs/examples/json_pointer__empty.cpp | 20 - .../docs/examples/json_pointer__empty.output | 4 - .../json_pointer__operator__equal.cpp | 19 - .../json_pointer__operator__equal.output | 4 - ...on_pointer__operator__equal_stringtype.cpp | 33 - ...pointer__operator__equal_stringtype.output | 4 - .../json_pointer__operator__notequal.cpp | 19 - .../json_pointer__operator__notequal.output | 4 - ...pointer__operator__notequal_stringtype.cpp | 32 - ...nter__operator__notequal_stringtype.output | 4 - .../examples/json_pointer__operator_add.cpp | 23 - .../json_pointer__operator_add.output | 4 - .../json_pointer__operator_add_binary.cpp | 19 - .../json_pointer__operator_add_binary.output | 3 - .../json_pointer__operator_string_t.cpp | 19 - .../json_pointer__operator_string_t.output | 2 - .../examples/json_pointer__parent_pointer.cpp | 18 - .../json_pointer__parent_pointer.output | 3 - .../docs/examples/json_pointer__pop_back.cpp | 21 - .../examples/json_pointer__pop_back.output | 4 - .../docs/examples/json_pointer__push_back.cpp | 21 - .../examples/json_pointer__push_back.output | 4 - .../docs/examples/json_pointer__string_t.cpp | 13 - .../examples/json_pointer__string_t.output | 2 - .../docs/examples/json_pointer__to_string.cpp | 34 - .../examples/json_pointer__to_string.output | 12 - .../nlohmann-json/docs/examples/max_size.cpp | 25 - .../docs/examples/max_size.output | 7 - .../docs/examples/merge_patch.cpp | 41 - .../docs/examples/merge_patch.output | 11 - extern/nlohmann-json/docs/examples/meta.cpp | 11 - .../nlohmann-json/docs/examples/meta.output | 17 - ...lohmann_define_type_intrusive_explicit.cpp | 60 - ...mann_define_type_intrusive_explicit.output | 2 - .../nlohmann_define_type_intrusive_macro.cpp | 48 - ...lohmann_define_type_intrusive_macro.output | 2 - ...e_type_intrusive_with_default_explicit.cpp | 55 - ...ype_intrusive_with_default_explicit.output | 2 - ...fine_type_intrusive_with_default_macro.cpp | 42 - ...e_type_intrusive_with_default_macro.output | 2 - ...ann_define_type_non_intrusive_explicit.cpp | 53 - ..._define_type_non_intrusive_explicit.output | 2 - ...ohmann_define_type_non_intrusive_macro.cpp | 41 - ...ann_define_type_non_intrusive_macro.output | 2 - ...pe_non_intrusive_with_default_explicit.cpp | 53 - ...non_intrusive_with_default_explicit.output | 2 - ..._type_non_intrusive_with_default_macro.cpp | 40 - ...pe_non_intrusive_with_default_macro.output | 2 - .../docs/examples/nlohmann_json_namespace.cpp | 14 - .../examples/nlohmann_json_namespace.output | 1 - .../nlohmann_json_namespace_begin.c++17.cpp | 33 - ...nlohmann_json_namespace_begin.c++17.output | 1 - .../nlohmann_json_namespace_no_version.cpp | 13 - .../nlohmann_json_namespace_no_version.output | 1 - .../examples/nlohmann_json_serialize_enum.cpp | 59 - .../nlohmann_json_serialize_enum.output | 3 - .../nlohmann_json_serialize_enum_2.cpp | 33 - .../nlohmann_json_serialize_enum_2.output | 3 - .../docs/examples/nlohmann_json_version.cpp | 12 - .../examples/nlohmann_json_version.output | 1 - .../docs/examples/number_float_t.cpp | 10 - .../docs/examples/number_float_t.output | 1 - .../docs/examples/number_integer_t.cpp | 10 - .../docs/examples/number_integer_t.output | 1 - .../docs/examples/number_unsigned_t.cpp | 10 - .../docs/examples/number_unsigned_t.output | 1 - extern/nlohmann-json/docs/examples/object.cpp | 28 - .../nlohmann-json/docs/examples/object.output | 4 - .../docs/examples/object_comparator_t.cpp | 11 - .../docs/examples/object_comparator_t.output | 2 - .../nlohmann-json/docs/examples/object_t.cpp | 10 - .../docs/examples/object_t.output | 1 - .../docs/examples/operator__ValueType.cpp | 60 - .../docs/examples/operator__ValueType.output | 12 - .../docs/examples/operator__equal.cpp | 24 - .../docs/examples/operator__equal.output | 4 - .../examples/operator__equal__nullptr_t.cpp | 22 - .../operator__equal__nullptr_t.output | 5 - .../operator__equal__specializations.cpp | 16 - .../operator__equal__specializations.output | 2 - .../docs/examples/operator__greater.cpp | 24 - .../docs/examples/operator__greater.output | 4 - .../docs/examples/operator__greaterequal.cpp | 24 - .../examples/operator__greaterequal.output | 4 - .../docs/examples/operator__less.cpp | 24 - .../docs/examples/operator__less.output | 4 - .../docs/examples/operator__lessequal.cpp | 24 - .../docs/examples/operator__lessequal.output | 4 - .../docs/examples/operator__notequal.cpp | 24 - .../docs/examples/operator__notequal.output | 4 - .../operator__notequal__nullptr_t.cpp | 22 - .../operator__notequal__nullptr_t.output | 5 - .../docs/examples/operator__value_t.cpp | 38 - .../docs/examples/operator__value_t.output | 8 - .../examples/operator_array__json_pointer.cpp | 49 - .../operator_array__json_pointer.output | 8 - .../operator_array__json_pointer_const.cpp | 25 - .../operator_array__json_pointer_const.output | 4 - .../operator_array__keytype.c++17.cpp | 34 - .../operator_array__keytype.c++17.output | 19 - .../operator_array__keytype_const.c++17.cpp | 18 - ...operator_array__keytype_const.c++17.output | 1 - .../operator_array__object_t_key_type.cpp | 32 - .../operator_array__object_t_key_type.output | 19 - ...perator_array__object_t_key_type_const.cpp | 16 - ...ator_array__object_t_key_type_const.output | 1 - .../examples/operator_array__size_type.cpp | 25 - .../examples/operator_array__size_type.output | 3 - .../operator_array__size_type_const.cpp | 13 - .../operator_array__size_type_const.output | 1 - .../docs/examples/operator_deserialize.cpp | 26 - .../docs/examples/operator_deserialize.output | 13 - .../docs/examples/operator_literal_json.cpp | 13 - .../examples/operator_literal_json.output | 4 - .../operator_literal_json_pointer.cpp | 14 - .../operator_literal_json_pointer.output | 1 - .../examples/operator_ltlt__basic_json.cpp | 21 - .../examples/operator_ltlt__basic_json.output | 22 - .../examples/operator_ltlt__json_pointer.cpp | 13 - .../operator_ltlt__json_pointer.output | 1 - ...rator_spaceship__const_reference.c++20.cpp | 41 - ...or_spaceship__const_reference.c++20.output | 4 - .../operator_spaceship__scalartype.c++20.cpp | 41 - ...perator_spaceship__scalartype.c++20.output | 4 - .../docs/examples/ordered_json.cpp | 14 - .../docs/examples/ordered_json.output | 5 - .../docs/examples/ordered_map.cpp | 43 - .../docs/examples/ordered_map.output | 4 - .../docs/examples/other_error.cpp | 30 - .../docs/examples/other_error.output | 2 - .../docs/examples/out_of_range.cpp | 20 - .../docs/examples/out_of_range.output | 2 - .../docs/examples/parse__allow_exceptions.cpp | 36 - .../examples/parse__allow_exceptions.output | 2 - .../parse__array__parser_callback_t.cpp | 30 - .../parse__array__parser_callback_t.output | 20 - ...contiguouscontainer__parser_callback_t.cpp | 15 - ...tiguouscontainer__parser_callback_t.output | 6 - .../parse__istream__parser_callback_t.cpp | 58 - .../parse__istream__parser_callback_t.output | 34 - .../docs/examples/parse__iterator_pair.cpp | 15 - .../docs/examples/parse__iterator_pair.link | 1 - .../docs/examples/parse__iterator_pair.output | 6 - .../docs/examples/parse__pointers.cpp | 15 - .../docs/examples/parse__pointers.link | 1 - .../docs/examples/parse__pointers.output | 6 - .../parse__string__parser_callback_t.cpp | 49 - .../parse__string__parser_callback_t.output | 34 - .../docs/examples/parse_error.cpp | 20 - .../docs/examples/parse_error.output | 3 - extern/nlohmann-json/docs/examples/patch.cpp | 33 - .../nlohmann-json/docs/examples/patch.output | 11 - .../docs/examples/patch_inplace.cpp | 35 - .../docs/examples/patch_inplace.output | 13 - .../nlohmann-json/docs/examples/push_back.cpp | 25 - .../docs/examples/push_back.output | 4 - .../examples/push_back__initializer_list.cpp | 27 - .../push_back__initializer_list.output | 4 - .../examples/push_back__object_t__value.cpp | 25 - .../push_back__object_t__value.output | 4 - extern/nlohmann-json/docs/examples/rbegin.cpp | 16 - .../nlohmann-json/docs/examples/rbegin.output | 1 - extern/nlohmann-json/docs/examples/rend.cpp | 19 - .../nlohmann-json/docs/examples/rend.output | 1 - .../nlohmann-json/docs/examples/sax_parse.cpp | 131 - .../docs/examples/sax_parse.output | 37 - .../docs/examples/sax_parse__binary.cpp | 114 - .../docs/examples/sax_parse__binary.output | 3 - extern/nlohmann-json/docs/examples/size.cpp | 29 - .../nlohmann-json/docs/examples/size.output | 9 - .../nlohmann-json/docs/examples/std_hash.cpp | 19 - .../docs/examples/std_hash.output | 8 - .../nlohmann-json/docs/examples/std_swap.cpp | 19 - .../docs/examples/std_swap.output | 2 - .../nlohmann-json/docs/examples/string_t.cpp | 10 - .../docs/examples/string_t.output | 1 - .../docs/examples/swap__array_t.cpp | 20 - .../docs/examples/swap__array_t.output | 2 - .../docs/examples/swap__binary_t.cpp | 20 - .../docs/examples/swap__binary_t.output | 2 - .../docs/examples/swap__object_t.cpp | 20 - .../docs/examples/swap__object_t.output | 2 - .../docs/examples/swap__reference.cpp | 18 - .../docs/examples/swap__reference.output | 2 - .../docs/examples/swap__string_t.cpp | 20 - .../docs/examples/swap__string_t.output | 2 - .../nlohmann-json/docs/examples/to_bjdata.cpp | 64 - .../docs/examples/to_bjdata.output | 4 - .../nlohmann-json/docs/examples/to_bson.cpp | 22 - .../docs/examples/to_bson.output | 1 - .../nlohmann-json/docs/examples/to_cbor.cpp | 22 - .../docs/examples/to_cbor.output | 1 - .../nlohmann-json/docs/examples/to_json.cpp | 32 - .../docs/examples/to_json.output | 1 - .../docs/examples/to_msgpack.cpp | 22 - .../docs/examples/to_msgpack.output | 1 - .../nlohmann-json/docs/examples/to_string.cpp | 20 - .../docs/examples/to_string.output | 3 - .../nlohmann-json/docs/examples/to_ubjson.cpp | 64 - .../docs/examples/to_ubjson.output | 4 - extern/nlohmann-json/docs/examples/type.cpp | 28 - .../nlohmann-json/docs/examples/type.output | 8 - .../docs/examples/type_error.cpp | 20 - .../docs/examples/type_error.output | 2 - .../nlohmann-json/docs/examples/type_name.cpp | 27 - .../docs/examples/type_name.output | 8 - .../nlohmann-json/docs/examples/unflatten.cpp | 26 - .../docs/examples/unflatten.output | 18 - extern/nlohmann-json/docs/examples/update.cpp | 24 - .../nlohmann-json/docs/examples/update.output | 17 - .../docs/examples/update__range.cpp | 24 - .../docs/examples/update__range.output | 17 - .../docs/examples/value__json_ptr.cpp | 31 - .../docs/examples/value__json_ptr.output | 1 - .../docs/examples/value__keytype.c++17.cpp | 32 - .../docs/examples/value__keytype.c++17.output | 1 - .../examples/value__object_t_key_type.cpp | 30 - .../examples/value__object_t_key_type.output | 1 - extern/nlohmann-json/docs/json.gif | Bin 1644689 -> 0 bytes extern/nlohmann-json/docs/mkdocs/Makefile | 37 - .../docs/api/adl_serializer/from_json.md | 73 - .../mkdocs/docs/api/adl_serializer/index.md | 35 - .../mkdocs/docs/api/adl_serializer/to_json.md | 43 - .../docs/mkdocs/docs/api/basic_json/accept.md | 113 - .../docs/mkdocs/docs/api/basic_json/array.md | 60 - .../mkdocs/docs/api/basic_json/array_t.md | 68 - .../docs/mkdocs/docs/api/basic_json/at.md | 226 - .../docs/mkdocs/docs/api/basic_json/back.md | 65 - .../mkdocs/docs/api/basic_json/basic_json.md | 402 - .../docs/mkdocs/docs/api/basic_json/begin.md | 42 - .../docs/mkdocs/docs/api/basic_json/binary.md | 66 - .../mkdocs/docs/api/basic_json/binary_t.md | 89 - .../mkdocs/docs/api/basic_json/boolean_t.md | 42 - .../docs/mkdocs/docs/api/basic_json/cbegin.md | 41 - .../docs/api/basic_json/cbor_tag_handler_t.md | 42 - .../docs/mkdocs/docs/api/basic_json/cend.md | 41 - .../docs/mkdocs/docs/api/basic_json/clear.md | 58 - .../mkdocs/docs/api/basic_json/contains.md | 118 - .../docs/mkdocs/docs/api/basic_json/count.md | 78 - .../mkdocs/docs/api/basic_json/crbegin.md | 41 - .../docs/mkdocs/docs/api/basic_json/crend.md | 42 - .../basic_json/default_object_comparator_t.md | 35 - .../docs/mkdocs/docs/api/basic_json/diff.md | 62 - .../docs/mkdocs/docs/api/basic_json/dump.md | 79 - .../mkdocs/docs/api/basic_json/emplace.md | 56 - .../docs/api/basic_json/emplace_back.md | 54 - .../docs/mkdocs/docs/api/basic_json/empty.md | 66 - .../docs/mkdocs/docs/api/basic_json/end.md | 42 - .../docs/mkdocs/docs/api/basic_json/erase.md | 211 - .../docs/api/basic_json/error_handler_t.md | 42 - .../mkdocs/docs/api/basic_json/exception.md | 75 - .../docs/mkdocs/docs/api/basic_json/find.md | 86 - .../mkdocs/docs/api/basic_json/flatten.md | 50 - .../mkdocs/docs/api/basic_json/from_bjdata.md | 93 - .../mkdocs/docs/api/basic_json/from_bson.md | 110 - .../mkdocs/docs/api/basic_json/from_cbor.md | 117 - .../docs/api/basic_json/from_msgpack.md | 109 - .../mkdocs/docs/api/basic_json/from_ubjson.md | 106 - .../docs/mkdocs/docs/api/basic_json/front.md | 58 - .../docs/mkdocs/docs/api/basic_json/get.md | 136 - .../docs/api/basic_json/get_allocator.md | 31 - .../mkdocs/docs/api/basic_json/get_binary.md | 45 - .../mkdocs/docs/api/basic_json/get_ptr.md | 60 - .../mkdocs/docs/api/basic_json/get_ref.md | 64 - .../docs/mkdocs/docs/api/basic_json/get_to.md | 58 - .../docs/mkdocs/docs/api/basic_json/index.md | 321 - .../docs/api/basic_json/input_format_t.md | 52 - .../docs/mkdocs/docs/api/basic_json/insert.md | 179 - .../docs/api/basic_json/invalid_iterator.md | 67 - .../mkdocs/docs/api/basic_json/is_array.md | 39 - .../mkdocs/docs/api/basic_json/is_binary.md | 39 - .../mkdocs/docs/api/basic_json/is_boolean.md | 39 - .../docs/api/basic_json/is_discarded.md | 72 - .../mkdocs/docs/api/basic_json/is_null.md | 39 - .../mkdocs/docs/api/basic_json/is_number.md | 56 - .../docs/api/basic_json/is_number_float.md | 46 - .../docs/api/basic_json/is_number_integer.md | 47 - .../docs/api/basic_json/is_number_unsigned.md | 46 - .../mkdocs/docs/api/basic_json/is_object.md | 39 - .../docs/api/basic_json/is_primitive.md | 69 - .../mkdocs/docs/api/basic_json/is_string.md | 39 - .../docs/api/basic_json/is_structured.md | 63 - .../docs/mkdocs/docs/api/basic_json/items.md | 100 - .../docs/api/basic_json/json_serializer.md | 41 - .../mkdocs/docs/api/basic_json/max_size.md | 60 - .../mkdocs/docs/api/basic_json/merge_patch.md | 63 - .../docs/mkdocs/docs/api/basic_json/meta.md | 56 - .../docs/api/basic_json/number_float_t.md | 70 - .../docs/api/basic_json/number_integer_t.md | 76 - .../docs/api/basic_json/number_unsigned_t.md | 76 - .../docs/mkdocs/docs/api/basic_json/object.md | 63 - .../api/basic_json/object_comparator_t.md | 32 - .../mkdocs/docs/api/basic_json/object_t.md | 114 - .../mkdocs/docs/api/basic_json/operator+=.md | 110 - .../mkdocs/docs/api/basic_json/operator=.md | 43 - .../mkdocs/docs/api/basic_json/operator[].md | 241 - .../docs/api/basic_json/operator_ValueType.md | 82 - .../mkdocs/docs/api/basic_json/operator_eq.md | 168 - .../mkdocs/docs/api/basic_json/operator_ge.md | 86 - .../mkdocs/docs/api/basic_json/operator_gt.md | 86 - .../mkdocs/docs/api/basic_json/operator_le.md | 87 - .../mkdocs/docs/api/basic_json/operator_lt.md | 96 - .../mkdocs/docs/api/basic_json/operator_ne.md | 98 - .../docs/api/basic_json/operator_spaceship.md | 100 - .../docs/api/basic_json/operator_value_t.md | 54 - .../mkdocs/docs/api/basic_json/other_error.md | 67 - .../docs/api/basic_json/out_of_range.md | 68 - .../docs/mkdocs/docs/api/basic_json/parse.md | 214 - .../mkdocs/docs/api/basic_json/parse_error.md | 74 - .../docs/api/basic_json/parse_event_t.md | 29 - .../docs/api/basic_json/parser_callback_t.md | 73 - .../docs/mkdocs/docs/api/basic_json/patch.md | 73 - .../docs/api/basic_json/patch_inplace.md | 70 - .../mkdocs/docs/api/basic_json/push_back.md | 106 - .../docs/mkdocs/docs/api/basic_json/rbegin.md | 42 - .../docs/mkdocs/docs/api/basic_json/rend.md | 43 - .../mkdocs/docs/api/basic_json/sax_parse.md | 115 - .../docs/mkdocs/docs/api/basic_json/size.md | 57 - .../mkdocs/docs/api/basic_json/std_hash.md | 34 - .../mkdocs/docs/api/basic_json/std_swap.md | 51 - .../mkdocs/docs/api/basic_json/string_t.md | 66 - .../docs/mkdocs/docs/api/basic_json/swap.md | 157 - .../mkdocs/docs/api/basic_json/to_bjdata.md | 70 - .../mkdocs/docs/api/basic_json/to_bson.md | 59 - .../mkdocs/docs/api/basic_json/to_cbor.md | 61 - .../mkdocs/docs/api/basic_json/to_msgpack.md | 59 - .../mkdocs/docs/api/basic_json/to_string.md | 65 - .../mkdocs/docs/api/basic_json/to_ubjson.md | 70 - .../docs/mkdocs/docs/api/basic_json/type.md | 54 - .../mkdocs/docs/api/basic_json/type_error.md | 68 - .../mkdocs/docs/api/basic_json/type_name.md | 54 - .../mkdocs/docs/api/basic_json/unflatten.md | 61 - .../docs/mkdocs/docs/api/basic_json/update.md | 142 - .../docs/mkdocs/docs/api/basic_json/value.md | 159 - .../mkdocs/docs/api/basic_json/value_t.md | 81 - .../mkdocs/docs/api/basic_json/~basic_json.md | 21 - .../byte_container_with_subtype.md | 46 - .../clear_subtype.md | 36 - .../has_subtype.md | 39 - .../api/byte_container_with_subtype/index.md | 35 - .../set_subtype.md | 41 - .../byte_container_with_subtype/subtype.md | 42 - .../docs/mkdocs/docs/api/json.md | 28 - .../docs/mkdocs/docs/api/json_pointer/back.md | 40 - .../mkdocs/docs/api/json_pointer/empty.md | 39 - .../mkdocs/docs/api/json_pointer/index.md | 52 - .../docs/api/json_pointer/json_pointer.md | 41 - .../docs/api/json_pointer/operator_eq.md | 113 - .../docs/api/json_pointer/operator_ne.md | 109 - .../docs/api/json_pointer/operator_slash.md | 64 - .../docs/api/json_pointer/operator_slasheq.md | 61 - .../api/json_pointer/operator_string_t.md | 48 - .../docs/api/json_pointer/parent_pointer.md | 35 - .../mkdocs/docs/api/json_pointer/pop_back.md | 35 - .../mkdocs/docs/api/json_pointer/push_back.md | 39 - .../mkdocs/docs/api/json_pointer/string_t.md | 28 - .../mkdocs/docs/api/json_pointer/to_string.md | 40 - .../docs/mkdocs/docs/api/json_sax/binary.md | 40 - .../docs/mkdocs/docs/api/json_sax/boolean.md | 36 - .../mkdocs/docs/api/json_sax/end_array.md | 31 - .../mkdocs/docs/api/json_sax/end_object.md | 31 - .../docs/mkdocs/docs/api/json_sax/index.md | 44 - .../docs/mkdocs/docs/api/json_sax/key.md | 40 - .../docs/mkdocs/docs/api/json_sax/null.md | 31 - .../mkdocs/docs/api/json_sax/number_float.md | 39 - .../docs/api/json_sax/number_integer.md | 36 - .../docs/api/json_sax/number_unsigned.md | 36 - .../mkdocs/docs/api/json_sax/parse_error.md | 44 - .../mkdocs/docs/api/json_sax/start_array.md | 40 - .../mkdocs/docs/api/json_sax/start_object.md | 40 - .../docs/mkdocs/docs/api/json_sax/string.md | 40 - .../docs/mkdocs/docs/api/macros/index.md | 60 - .../mkdocs/docs/api/macros/json_assert.md | 84 - .../docs/api/macros/json_diagnostics.md | 76 - .../macros/json_disable_enum_serialization.md | 152 - .../mkdocs/docs/api/macros/json_has_cpp_11.md | 41 - .../docs/api/macros/json_has_filesystem.md | 43 - .../mkdocs/docs/api/macros/json_has_ranges.md | 31 - .../macros/json_has_three_way_comparison.md | 32 - .../docs/mkdocs/docs/api/macros/json_no_io.md | 35 - .../docs/api/macros/json_noexception.md | 45 - .../macros/json_skip_library_version_check.md | 37 - .../json_skip_unsupported_compiler_check.md | 33 - .../mkdocs/docs/api/macros/json_throw_user.md | 75 - .../docs/api/macros/json_use_global_udls.md | 98 - .../macros/json_use_implicit_conversions.md | 59 - ...n_use_legacy_discarded_value_comparison.md | 77 - .../macros/nlohmann_define_type_intrusive.md | 126 - .../nlohmann_define_type_non_intrusive.md | 127 - .../api/macros/nlohmann_json_namespace.md | 41 - .../macros/nlohmann_json_namespace_begin.md | 61 - .../nlohmann_json_namespace_no_version.md | 45 - .../macros/nlohmann_json_serialize_enum.md | 85 - .../api/macros/nlohmann_json_version_major.md | 40 - .../docs/mkdocs/docs/api/operator_gtgt.md | 64 - .../mkdocs/docs/api/operator_literal_json.md | 61 - .../docs/api/operator_literal_json_pointer.md | 64 - .../docs/mkdocs/docs/api/operator_ltlt.md | 87 - .../docs/mkdocs/docs/api/ordered_json.md | 32 - .../docs/mkdocs/docs/api/ordered_map.md | 77 - .../docs/mkdocs/docs/css/custom.css | 4 - .../mkdocs/docs/features/arbitrary_types.md | 274 - .../docs/mkdocs/docs/features/assertions.md | 131 - .../docs/features/binary_formats/bjdata.md | 194 - .../docs/features/binary_formats/bson.md | 96 - .../docs/features/binary_formats/cbor.md | 181 - .../docs/features/binary_formats/index.md | 52 - .../features/binary_formats/messagepack.md | 143 - .../docs/features/binary_formats/ubjson.md | 126 - .../mkdocs/docs/features/binary_values.md | 372 - .../docs/mkdocs/docs/features/comments.md | 83 - .../features/element_access/checked_access.md | 91 - .../features/element_access/default_value.md | 32 - .../docs/features/element_access/index.md | 9 - .../element_access/unchecked_access.md | 112 - .../mkdocs/docs/features/enum_conversion.md | 61 - .../docs/mkdocs/docs/features/iterators.md | 155 - .../docs/mkdocs/docs/features/json_patch.md | 47 - .../docs/mkdocs/docs/features/json_pointer.md | 126 - .../docs/mkdocs/docs/features/macros.md | 153 - .../docs/mkdocs/docs/features/merge_patch.md | 20 - .../docs/mkdocs/docs/features/namespace.md | 93 - .../docs/mkdocs/docs/features/object_order.md | 109 - .../mkdocs/docs/features/parsing/index.md | 13 - .../docs/features/parsing/json_lines.md | 49 - .../docs/features/parsing/parse_exceptions.md | 121 - .../docs/features/parsing/parser_callbacks.md | 83 - .../docs/features/parsing/sax_interface.md | 73 - .../docs/mkdocs/docs/features/types/index.md | 269 - .../docs/features/types/number_handling.md | 328 - .../docs/mkdocs/docs/home/code_of_conduct.md | 46 - .../docs/mkdocs/docs/home/design_goals.md | 17 - .../docs/mkdocs/docs/home/exceptions.md | 896 - .../docs/mkdocs/docs/home/faq.md | 180 - .../docs/mkdocs/docs/home/license.md | 21 - .../docs/mkdocs/docs/home/releases.md | 1225 - .../docs/mkdocs/docs/home/sponsors.md | 13 - .../mkdocs/docs/images/callback_events.png | Bin 46039 -> 0 bytes .../mkdocs/docs/images/json_syntax_number.png | Bin 37014 -> 0 bytes .../mkdocs/docs/images/range-begin-end.svg | 435 - .../mkdocs/docs/images/range-rbegin-rend.svg | 1232 - .../nlohmann-json/docs/mkdocs/docs/index.md | 3 - .../docs/mkdocs/docs/integration/cmake.md | 172 - .../docs/integration/conan/CMakeLists.txt | 9 - .../docs/integration/conan/Conanfile.txt | 5 - .../mkdocs/docs/integration/conan/example.cpp | 9 - .../docs/mkdocs/docs/integration/example.cpp | 10 - .../docs/mkdocs/docs/integration/index.md | 18 - .../docs/integration/package_managers.md | 194 - .../mkdocs/docs/integration/pkg-config.md | 13 - .../docs/integration/vcpkg/CMakeLists.txt | 7 - .../mkdocs/docs/integration/vcpkg/example.cpp | 9 - extern/nlohmann-json/docs/mkdocs/mkdocs.yml | 348 - .../docs/mkdocs/requirements.txt | 49 - .../docs/mkdocs/scripts/check_structure.py | 179 - extern/nlohmann-json/docs/usages/ios.png | Bin 208669 -> 0 bytes extern/nlohmann-json/docs/usages/macos.png | Bin 1305068 -> 0 bytes .../include/nlohmann/adl_serializer.hpp | 55 - .../nlohmann/byte_container_with_subtype.hpp | 103 - .../include/nlohmann/detail/abi_macros.hpp | 100 - .../nlohmann/detail/conversions/from_json.hpp | 497 - .../nlohmann/detail/conversions/to_chars.hpp | 1118 - .../nlohmann/detail/conversions/to_json.hpp | 446 - .../include/nlohmann/detail/exceptions.hpp | 255 - .../include/nlohmann/detail/hash.hpp | 129 - .../nlohmann/detail/input/binary_reader.hpp | 3010 -- .../nlohmann/detail/input/input_adapters.hpp | 494 - .../nlohmann/detail/input/json_sax.hpp | 728 - .../include/nlohmann/detail/input/lexer.hpp | 1632 - .../include/nlohmann/detail/input/parser.hpp | 507 - .../nlohmann/detail/input/position_t.hpp | 37 - .../detail/iterators/internal_iterator.hpp | 35 - .../nlohmann/detail/iterators/iter_impl.hpp | 751 - .../detail/iterators/iteration_proxy.hpp | 242 - .../detail/iterators/iterator_traits.hpp | 61 - .../iterators/json_reverse_iterator.hpp | 130 - .../detail/iterators/primitive_iterator.hpp | 132 - .../include/nlohmann/detail/json_pointer.hpp | 988 - .../include/nlohmann/detail/json_ref.hpp | 78 - .../include/nlohmann/detail/macro_scope.hpp | 468 - .../include/nlohmann/detail/macro_unscope.hpp | 44 - .../nlohmann/detail/meta/call_std/begin.hpp | 17 - .../nlohmann/detail/meta/call_std/end.hpp | 17 - .../nlohmann/detail/meta/cpp_future.hpp | 171 - .../include/nlohmann/detail/meta/detected.hpp | 70 - .../nlohmann/detail/meta/identity_tag.hpp | 21 - .../include/nlohmann/detail/meta/is_sax.hpp | 159 - .../include/nlohmann/detail/meta/std_fs.hpp | 29 - .../nlohmann/detail/meta/type_traits.hpp | 740 - .../include/nlohmann/detail/meta/void_t.hpp | 24 - .../nlohmann/detail/output/binary_writer.hpp | 1838 -- .../detail/output/output_adapters.hpp | 147 - .../nlohmann/detail/output/serializer.hpp | 988 - .../include/nlohmann/detail/string_concat.hpp | 146 - .../include/nlohmann/detail/string_escape.hpp | 72 - .../include/nlohmann/detail/value_t.hpp | 118 - .../nlohmann-json/include/nlohmann/json.hpp | 5214 ---- .../include/nlohmann/json_fwd.hpp | 74 - .../include/nlohmann/ordered_map.hpp | 359 - .../nlohmann/thirdparty/hedley/hedley.hpp | 2045 -- .../thirdparty/hedley/hedley_undef.hpp | 158 - extern/nlohmann-json/meson.build | 24 - extern/nlohmann-json/nlohmann_json.natvis | 276 - .../single_include/nlohmann/json.hpp | 24596 ---------------- .../single_include/nlohmann/json_fwd.hpp | 175 - extern/nlohmann-json/tests/CMakeLists.txt | 175 - extern/nlohmann-json/tests/Makefile | 32 - extern/nlohmann-json/tests/abi/CMakeLists.txt | 30 - .../tests/abi/config/CMakeLists.txt | 22 - .../nlohmann-json/tests/abi/config/config.hpp | 35 - .../nlohmann-json/tests/abi/config/custom.cpp | 33 - .../tests/abi/config/default.cpp | 41 - .../tests/abi/config/noversion.cpp | 40 - .../tests/abi/diag/CMakeLists.txt | 19 - extern/nlohmann-json/tests/abi/diag/diag.cpp | 29 - extern/nlohmann-json/tests/abi/diag/diag.hpp | 20 - .../nlohmann-json/tests/abi/diag/diag_off.cpp | 30 - .../nlohmann-json/tests/abi/diag/diag_on.cpp | 30 - .../abi/include/nlohmann/json_v3_10_5.hpp | 22091 -------------- .../tests/abi/inline_ns/CMakeLists.txt | 12 - .../tests/abi/inline_ns/use_current.cpp | 36 - .../tests/abi/inline_ns/use_v3_10_5.cpp | 22 - extern/nlohmann-json/tests/abi/main.cpp | 11 - .../tests/benchmarks/CMakeLists.txt | 34 - .../tests/benchmarks/src/benchmarks.cpp | 179 - .../cmake_add_subdirectory/CMakeLists.txt | 18 - .../project/CMakeLists.txt | 20 - .../cmake_add_subdirectory/project/main.cpp | 16 - .../tests/cmake_fetch_content/CMakeLists.txt | 20 - .../project/CMakeLists.txt | 20 - .../cmake_fetch_content/project/main.cpp | 16 - .../tests/cmake_fetch_content2/CMakeLists.txt | 20 - .../project/CMakeLists.txt | 15 - .../cmake_fetch_content2/project/main.cpp | 16 - .../tests/cmake_import/CMakeLists.txt | 19 - .../tests/cmake_import/project/CMakeLists.txt | 12 - .../tests/cmake_import/project/main.cpp | 16 - .../tests/cmake_import_minver/CMakeLists.txt | 19 - .../project/CMakeLists.txt | 8 - .../cmake_import_minver/project/main.cpp | 16 - .../CMakeLists.txt | 18 - .../project/Bar.cpp | 11 - .../project/Bar.hpp | 12 - .../project/CMakeLists.txt | 21 - .../project/Foo.cpp | 11 - .../project/Foo.hpp | 12 - .../project/main.cpp | 16 - .../tests/cuda_example/CMakeLists.txt | 10 - .../tests/cuda_example/json_cuda.cu | 19 - extern/nlohmann-json/tests/fuzzing.md | 81 - .../reports/2016-08-29-fuzz/exec_speed.png | Bin 28144 -> 0 bytes .../tests/reports/2016-08-29-fuzz/fuzz.tiff | Bin 235588 -> 0 bytes .../reports/2016-08-29-fuzz/high_freq.png | Bin 26251 -> 0 bytes .../tests/reports/2016-08-29-fuzz/index.html | 10 - .../reports/2016-08-29-fuzz/low_freq.png | Bin 11752 -> 0 bytes .../2016-09-09-nativejson_benchmark/README.md | 31 - .../conformance_Nlohmann (C++11).md | 670 - .../conformance_overall_Result.png | Bin 169617 -> 0 bytes ..._mac64_clang7.0_1._Parse_Memory_(byte).png | Bin 196128 -> 0 bytes ...0GHz_mac64_clang7.0_1._Parse_Time_(ms).png | Bin 149308 -> 0 bytes ..._mac64_clang7.0_2._Stringify_Time_(ms).png | Bin 139615 -> 0 bytes ...z_mac64_clang7.0_3._Prettify_Time_(ms).png | Bin 100027 -> 0 bytes ..._clang7.0_7._Code_size_FileSize_(byte).png | Bin 186055 -> 0 bytes .../reports/2016-10-02-fuzz/exec_speed.png | Bin 31420 -> 0 bytes .../tests/reports/2016-10-02-fuzz/fuzz.tiff | Bin 264782 -> 0 bytes .../reports/2016-10-02-fuzz/high_freq.png | Bin 23019 -> 0 bytes .../tests/reports/2016-10-02-fuzz/index.html | 10 - .../reports/2016-10-02-fuzz/low_freq.png | Bin 14234 -> 0 bytes .../tests/src/fuzzer-driver_afl.cpp | 39 - .../tests/src/fuzzer-parse_bjdata.cpp | 85 - .../tests/src/fuzzer-parse_bson.cpp | 74 - .../tests/src/fuzzer-parse_cbor.cpp | 69 - .../tests/src/fuzzer-parse_json.cpp | 70 - .../tests/src/fuzzer-parse_msgpack.cpp | 69 - .../tests/src/fuzzer-parse_ubjson.cpp | 85 - .../tests/src/make_test_data_available.hpp | 30 - extern/nlohmann-json/tests/src/test_utils.hpp | 33 - extern/nlohmann-json/tests/src/unit-32bit.cpp | 136 - .../tests/src/unit-algorithms.cpp | 297 - .../tests/src/unit-allocator.cpp | 254 - .../tests/src/unit-alt-string.cpp | 324 - .../tests/src/unit-assert_macro.cpp | 48 - .../tests/src/unit-binary_formats.cpp | 211 - .../nlohmann-json/tests/src/unit-bjdata.cpp | 3549 --- extern/nlohmann-json/tests/src/unit-bson.cpp | 1298 - .../src/unit-byte_container_with_subtype.cpp | 77 - .../nlohmann-json/tests/src/unit-capacity.cpp | 543 - extern/nlohmann-json/tests/src/unit-cbor.cpp | 2667 -- .../tests/src/unit-class_const_iterator.cpp | 393 - .../tests/src/unit-class_iterator.cpp | 468 - .../tests/src/unit-class_lexer.cpp | 226 - .../tests/src/unit-class_parser.cpp | 1691 -- .../tests/src/unit-comparison.cpp | 595 - .../nlohmann-json/tests/src/unit-concepts.cpp | 150 - .../tests/src/unit-constructor1.cpp | 1580 - .../tests/src/unit-constructor2.cpp | 186 - .../tests/src/unit-convenience.cpp | 205 - .../tests/src/unit-conversions.cpp | 1572 - .../tests/src/unit-deserialization.cpp | 1189 - .../tests/src/unit-diagnostics.cpp | 246 - .../tests/src/unit-disabled_exceptions.cpp | 52 - .../tests/src/unit-element_access1.cpp | 881 - .../tests/src/unit-element_access2.cpp | 1794 -- extern/nlohmann-json/tests/src/unit-hash.cpp | 113 - .../tests/src/unit-inspection.cpp | 459 - extern/nlohmann-json/tests/src/unit-items.cpp | 1433 - .../tests/src/unit-iterators1.cpp | 1630 - .../tests/src/unit-iterators2.cpp | 972 - .../tests/src/unit-json_patch.cpp | 1321 - .../tests/src/unit-json_pointer.cpp | 788 - .../tests/src/unit-large_json.cpp | 29 - .../tests/src/unit-merge_patch.cpp | 244 - extern/nlohmann-json/tests/src/unit-meta.cpp | 36 - .../tests/src/unit-modifiers.cpp | 953 - .../nlohmann-json/tests/src/unit-msgpack.cpp | 1837 -- .../nlohmann-json/tests/src/unit-noexcept.cpp | 82 - .../tests/src/unit-ordered_json.cpp | 72 - .../tests/src/unit-ordered_map.cpp | 311 - .../tests/src/unit-pointer_access.cpp | 479 - .../nlohmann-json/tests/src/unit-readme.cpp | 304 - .../tests/src/unit-reference_access.cpp | 247 - .../tests/src/unit-regression1.cpp | 1513 - .../tests/src/unit-regression2.cpp | 928 - .../tests/src/unit-serialization.cpp | 297 - .../tests/src/unit-testsuites.cpp | 1391 - .../nlohmann-json/tests/src/unit-to_chars.cpp | 516 - .../tests/src/unit-type_traits.cpp | 56 - .../nlohmann-json/tests/src/unit-ubjson.cpp | 2517 -- extern/nlohmann-json/tests/src/unit-udl.cpp | 57 - extern/nlohmann-json/tests/src/unit-udt.cpp | 864 - .../tests/src/unit-udt_macro.cpp | 414 - .../nlohmann-json/tests/src/unit-unicode1.cpp | 620 - .../nlohmann-json/tests/src/unit-unicode2.cpp | 610 - .../nlohmann-json/tests/src/unit-unicode3.cpp | 324 - .../nlohmann-json/tests/src/unit-unicode4.cpp | 324 - .../nlohmann-json/tests/src/unit-unicode5.cpp | 324 - .../tests/src/unit-user_defined_input.cpp | 130 - .../tests/src/unit-windows_h.cpp | 21 - .../nlohmann-json/tests/src/unit-wstring.cpp | 99 - extern/nlohmann-json/tests/src/unit.cpp | 10 - .../tests/thirdparty/Fuzzer/CMakeLists.txt | 45 - .../tests/thirdparty/Fuzzer/FuzzerCorpus.h | 217 - .../thirdparty/Fuzzer/FuzzerCrossOver.cpp | 52 - .../tests/thirdparty/Fuzzer/FuzzerDefs.h | 89 - .../thirdparty/Fuzzer/FuzzerDictionary.h | 124 - .../tests/thirdparty/Fuzzer/FuzzerDriver.cpp | 545 - .../thirdparty/Fuzzer/FuzzerExtFunctions.def | 50 - .../thirdparty/Fuzzer/FuzzerExtFunctions.h | 35 - .../Fuzzer/FuzzerExtFunctionsDlsym.cpp | 52 - .../Fuzzer/FuzzerExtFunctionsWeak.cpp | 53 - .../Fuzzer/FuzzerExtFunctionsWeakAlias.cpp | 56 - .../tests/thirdparty/Fuzzer/FuzzerFlags.def | 115 - .../tests/thirdparty/Fuzzer/FuzzerIO.cpp | 117 - .../tests/thirdparty/Fuzzer/FuzzerIO.h | 64 - .../tests/thirdparty/Fuzzer/FuzzerIOPosix.cpp | 88 - .../thirdparty/Fuzzer/FuzzerIOWindows.cpp | 282 - .../tests/thirdparty/Fuzzer/FuzzerInterface.h | 67 - .../tests/thirdparty/Fuzzer/FuzzerInternal.h | 182 - .../tests/thirdparty/Fuzzer/FuzzerLoop.cpp | 792 - .../tests/thirdparty/Fuzzer/FuzzerMain.cpp | 21 - .../tests/thirdparty/Fuzzer/FuzzerMerge.cpp | 261 - .../tests/thirdparty/Fuzzer/FuzzerMerge.h | 70 - .../tests/thirdparty/Fuzzer/FuzzerMutate.cpp | 527 - .../tests/thirdparty/Fuzzer/FuzzerMutate.h | 145 - .../tests/thirdparty/Fuzzer/FuzzerOptions.h | 68 - .../tests/thirdparty/Fuzzer/FuzzerRandom.h | 36 - .../tests/thirdparty/Fuzzer/FuzzerSHA1.cpp | 222 - .../tests/thirdparty/Fuzzer/FuzzerSHA1.h | 33 - .../tests/thirdparty/Fuzzer/FuzzerTracePC.cpp | 339 - .../tests/thirdparty/Fuzzer/FuzzerTracePC.h | 158 - .../thirdparty/Fuzzer/FuzzerTraceState.cpp | 325 - .../tests/thirdparty/Fuzzer/FuzzerUtil.cpp | 218 - .../tests/thirdparty/Fuzzer/FuzzerUtil.h | 72 - .../thirdparty/Fuzzer/FuzzerUtilDarwin.cpp | 152 - .../thirdparty/Fuzzer/FuzzerUtilLinux.cpp | 24 - .../thirdparty/Fuzzer/FuzzerUtilPosix.cpp | 117 - .../thirdparty/Fuzzer/FuzzerUtilWindows.cpp | 182 - .../thirdparty/Fuzzer/FuzzerValueBitMap.h | 87 - .../tests/thirdparty/Fuzzer/README.txt | 2 - .../thirdparty/Fuzzer/afl/afl_driver.cpp | 295 - .../tests/thirdparty/Fuzzer/build.sh | 10 - .../tests/thirdparty/Fuzzer/cxx.dict | 122 - .../standalone/StandaloneFuzzTargetMain.c | 41 - .../thirdparty/Fuzzer/test/AFLDriverTest.cpp | 22 - .../Fuzzer/test/AbsNegAndConstant64Test.cpp | 23 - .../Fuzzer/test/AbsNegAndConstantTest.cpp | 23 - .../Fuzzer/test/AccumulateAllocationsTest.cpp | 17 - .../Fuzzer/test/BufferOverflowOnInput.cpp | 23 - .../thirdparty/Fuzzer/test/CMakeLists.txt | 217 - .../Fuzzer/test/CallerCalleeTest.cpp | 59 - .../thirdparty/Fuzzer/test/CounterTest.cpp | 18 - .../Fuzzer/test/CustomCrossOverTest.cpp | 63 - .../Fuzzer/test/CustomMutatorTest.cpp | 38 - .../tests/thirdparty/Fuzzer/test/DSO1.cpp | 12 - .../tests/thirdparty/Fuzzer/test/DSO2.cpp | 12 - .../thirdparty/Fuzzer/test/DSOTestExtra.cpp | 11 - .../thirdparty/Fuzzer/test/DSOTestMain.cpp | 31 - .../tests/thirdparty/Fuzzer/test/DivTest.cpp | 20 - .../thirdparty/Fuzzer/test/EmptyTest.cpp | 11 - .../test/FourIndependentBranchesTest.cpp | 22 - .../Fuzzer/test/FullCoverageSetTest.cpp | 24 - .../thirdparty/Fuzzer/test/FuzzerUnittest.cpp | 738 - .../thirdparty/Fuzzer/test/InitializeTest.cpp | 28 - .../tests/thirdparty/Fuzzer/test/LeakTest.cpp | 17 - .../Fuzzer/test/LeakTimeoutTest.cpp | 17 - .../tests/thirdparty/Fuzzer/test/LoadTest.cpp | 22 - .../thirdparty/Fuzzer/test/MemcmpTest.cpp | 31 - .../Fuzzer/test/NthRunCrashTest.cpp | 18 - .../Fuzzer/test/NullDerefOnEmptyTest.cpp | 19 - .../thirdparty/Fuzzer/test/NullDerefTest.cpp | 26 - .../Fuzzer/test/OneHugeAllocTest.cpp | 28 - .../test/OutOfMemorySingleLargeMallocTest.cpp | 27 - .../Fuzzer/test/OutOfMemoryTest.cpp | 31 - .../Fuzzer/test/RepeatedBytesTest.cpp | 29 - .../thirdparty/Fuzzer/test/RepeatedMemcmp.cpp | 22 - .../Fuzzer/test/ShrinkControlFlowTest.cpp | 28 - .../Fuzzer/test/ShrinkValueProfileTest.cpp | 22 - .../Fuzzer/test/SignedIntOverflowTest.cpp | 28 - .../thirdparty/Fuzzer/test/SimpleCmpTest.cpp | 46 - .../Fuzzer/test/SimpleDictionaryTest.cpp | 29 - .../thirdparty/Fuzzer/test/SimpleHashTest.cpp | 40 - .../thirdparty/Fuzzer/test/SimpleTest.cpp | 27 - .../Fuzzer/test/SimpleThreadedTest.cpp | 25 - .../Fuzzer/test/SingleMemcmpTest.cpp | 17 - .../Fuzzer/test/SingleStrcmpTest.cpp | 17 - .../Fuzzer/test/SingleStrncmpTest.cpp | 17 - .../thirdparty/Fuzzer/test/SpamyTest.cpp | 21 - .../thirdparty/Fuzzer/test/StrcmpTest.cpp | 32 - .../thirdparty/Fuzzer/test/StrncmpOOBTest.cpp | 21 - .../thirdparty/Fuzzer/test/StrncmpTest.cpp | 28 - .../thirdparty/Fuzzer/test/StrstrTest.cpp | 28 - .../thirdparty/Fuzzer/test/SwapCmpTest.cpp | 34 - .../thirdparty/Fuzzer/test/Switch2Test.cpp | 35 - .../thirdparty/Fuzzer/test/SwitchTest.cpp | 58 - .../Fuzzer/test/ThreadedLeakTest.cpp | 18 - .../thirdparty/Fuzzer/test/ThreadedTest.cpp | 26 - .../Fuzzer/test/TimeoutEmptyTest.cpp | 14 - .../thirdparty/Fuzzer/test/TimeoutTest.cpp | 26 - .../Fuzzer/test/TraceMallocTest.cpp | 27 - .../Fuzzer/test/UninstrumentedTest.cpp | 11 - .../Fuzzer/test/afl-driver-extra-stats.test | 28 - .../Fuzzer/test/afl-driver-stderr.test | 10 - .../thirdparty/Fuzzer/test/caller-callee.test | 2 - .../thirdparty/Fuzzer/test/coverage.test | 19 - .../tests/thirdparty/Fuzzer/test/dict1.txt | 4 - .../thirdparty/Fuzzer/test/dump_coverage.test | 16 - .../Fuzzer/test/fuzzer-customcrossover.test | 10 - .../Fuzzer/test/fuzzer-custommutator.test | 4 - .../thirdparty/Fuzzer/test/fuzzer-dict.test | 6 - .../thirdparty/Fuzzer/test/fuzzer-dirs.test | 15 - .../thirdparty/Fuzzer/test/fuzzer-fdmask.test | 30 - .../Fuzzer/test/fuzzer-finalstats.test | 11 - .../thirdparty/Fuzzer/test/fuzzer-flags.test | 10 - .../thirdparty/Fuzzer/test/fuzzer-jobs.test | 29 - .../thirdparty/Fuzzer/test/fuzzer-leak.test | 35 - .../Fuzzer/test/fuzzer-oom-with-profile.test | 6 - .../thirdparty/Fuzzer/test/fuzzer-oom.test | 11 - .../Fuzzer/test/fuzzer-printcovpcs.test | 8 - .../thirdparty/Fuzzer/test/fuzzer-runs.test | 8 - .../thirdparty/Fuzzer/test/fuzzer-seed.test | 3 - .../thirdparty/Fuzzer/test/fuzzer-segv.test | 5 - .../Fuzzer/test/fuzzer-singleinputs.test | 16 - .../Fuzzer/test/fuzzer-threaded.test | 7 - .../Fuzzer/test/fuzzer-timeout.test | 19 - .../Fuzzer/test/fuzzer-traces-hooks.test | 25 - .../thirdparty/Fuzzer/test/fuzzer-ubsan.test | 4 - .../tests/thirdparty/Fuzzer/test/fuzzer.test | 57 - .../tests/thirdparty/Fuzzer/test/hi.txt | 1 - .../tests/thirdparty/Fuzzer/test/lit.cfg | 29 - .../thirdparty/Fuzzer/test/lit.site.cfg.in | 4 - .../tests/thirdparty/Fuzzer/test/merge.test | 46 - .../Fuzzer/test/minimize_crash.test | 6 - .../Fuzzer/test/no-coverage/CMakeLists.txt | 29 - .../Fuzzer/test/repeated-bytes.test | 2 - .../tests/thirdparty/Fuzzer/test/shrink.test | 7 - .../thirdparty/Fuzzer/test/simple-cmp.test | 2 - .../thirdparty/Fuzzer/test/standalone.test | 4 - .../thirdparty/Fuzzer/test/swap-cmp.test | 2 - .../thirdparty/Fuzzer/test/trace-malloc.test | 10 - .../Fuzzer/test/ubsan/CMakeLists.txt | 15 - .../tests/thirdparty/Fuzzer/test/ulimit.test | 2 - .../Fuzzer/test/uninstrumented/CMakeLists.txt | 16 - .../tests/thirdparty/Fuzzer/test/unit/lit.cfg | 7 - .../Fuzzer/test/unit/lit.site.cfg.in | 2 - .../Fuzzer/test/value-profile-cmp.test | 2 - .../Fuzzer/test/value-profile-cmp2.test | 2 - .../Fuzzer/test/value-profile-cmp3.test | 2 - .../Fuzzer/test/value-profile-cmp4.test | 2 - .../Fuzzer/test/value-profile-div.test | 3 - .../Fuzzer/test/value-profile-load.test | 3 - .../Fuzzer/test/value-profile-mem.test | 2 - .../Fuzzer/test/value-profile-set.test | 3 - .../Fuzzer/test/value-profile-strcmp.test | 2 - .../Fuzzer/test/value-profile-strncmp.test | 2 - .../Fuzzer/test/value-profile-switch.test | 3 - .../tests/thirdparty/doctest/doctest.h | 6580 ----- .../doctest/doctest_compatibility.h | 37 - .../tests/thirdparty/fifo_map/fifo_map.hpp | 530 - .../tests/thirdparty/imapdl/filterbr.py | 109 - .../nlohmann-json/tools/amalgamate/CHANGES.md | 10 - .../nlohmann-json/tools/amalgamate/README.md | 66 - .../tools/amalgamate/amalgamate.py | 299 - .../tools/amalgamate/config_json.json | 8 - .../tools/amalgamate/config_json_fwd.json | 8 - extern/nlohmann-json/tools/cpplint/README.rst | 79 - extern/nlohmann-json/tools/cpplint/cpplint.py | 6909 ----- extern/nlohmann-json/tools/cpplint/update.sh | 4 - .../tools/gdb_pretty_printer/README.md | 78 - .../tools/gdb_pretty_printer/nlohmann-json.py | 32 - .../tools/generate_natvis/README.md | 10 - .../tools/generate_natvis/generate_natvis.py | 41 - .../generate_natvis/nlohmann_json.natvis.j2 | 38 - .../tools/macro_builder/main.cpp | 43 - .../tools/serve_header/README.md | 91 - .../nlohmann-json/tools/serve_header/demo.png | Bin 557446 -> 0 bytes .../tools/serve_header/requirements.txt | 2 - .../tools/serve_header/serve_header.py | 410 - .../serve_header/serve_header.yml.example | 15 - extern/nlohmann-json/wsjcpp.yml | 26 - src/CMakeLists.txt | 5 +- src/window/gui/GfxDebuggerWindow.cpp | 1 + 1076 files changed, 9 insertions(+), 179239 deletions(-) delete mode 100644 extern/nlohmann-json/.clang-format delete mode 100644 extern/nlohmann-json/.clang-tidy delete mode 100644 extern/nlohmann-json/.github/CODEOWNERS delete mode 100644 extern/nlohmann-json/.github/CODE_OF_CONDUCT.md delete mode 100644 extern/nlohmann-json/.github/CONTRIBUTING.md delete mode 100644 extern/nlohmann-json/.github/FUNDING.yml delete mode 100644 extern/nlohmann-json/.github/ISSUE_TEMPLATE/bug.yaml delete mode 100644 extern/nlohmann-json/.github/ISSUE_TEMPLATE/config.yml delete mode 100644 extern/nlohmann-json/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 extern/nlohmann-json/.github/SECURITY.md delete mode 100644 extern/nlohmann-json/.github/config.yml delete mode 100644 extern/nlohmann-json/.github/external_ci/.drone.yml delete mode 100644 extern/nlohmann-json/.github/external_ci/appveyor.yml delete mode 100644 extern/nlohmann-json/.github/labeler.yml delete mode 100644 extern/nlohmann-json/.github/stale.yml delete mode 100644 extern/nlohmann-json/.github/workflows/codeql-analysis.yml delete mode 100644 extern/nlohmann-json/.github/workflows/labeler.yml delete mode 100644 extern/nlohmann-json/.github/workflows/macos.yml delete mode 100644 extern/nlohmann-json/.github/workflows/publish_documentation.yml delete mode 100644 extern/nlohmann-json/.github/workflows/ubuntu.yml delete mode 100644 extern/nlohmann-json/.github/workflows/windows.yml delete mode 100644 extern/nlohmann-json/.gitignore delete mode 100644 extern/nlohmann-json/.lgtm.yml delete mode 100644 extern/nlohmann-json/.reuse/README.md delete mode 100644 extern/nlohmann-json/.reuse/dep5 delete mode 100644 extern/nlohmann-json/.reuse/templates/json.jinja2 delete mode 100644 extern/nlohmann-json/.reuse/templates/json_support.jinja2 delete mode 100644 extern/nlohmann-json/CITATION.cff delete mode 100644 extern/nlohmann-json/CMakeLists.txt delete mode 100644 extern/nlohmann-json/ChangeLog.md delete mode 100644 extern/nlohmann-json/LICENSE.MIT delete mode 100644 extern/nlohmann-json/LICENSES/Apache-2.0.txt delete mode 100644 extern/nlohmann-json/LICENSES/BSD-3-Clause.txt delete mode 100644 extern/nlohmann-json/LICENSES/GPL-3.0-only.txt delete mode 100644 extern/nlohmann-json/LICENSES/MIT.txt delete mode 100644 extern/nlohmann-json/Makefile delete mode 100644 extern/nlohmann-json/README.md delete mode 100644 extern/nlohmann-json/cmake/ci.cmake delete mode 100644 extern/nlohmann-json/cmake/config.cmake.in delete mode 100644 extern/nlohmann-json/cmake/download_test_data.cmake delete mode 100644 extern/nlohmann-json/cmake/nlohmann_jsonConfigVersion.cmake.in delete mode 100644 extern/nlohmann-json/cmake/pkg-config.pc.in delete mode 100644 extern/nlohmann-json/cmake/test.cmake delete mode 100644 extern/nlohmann-json/docs/Makefile delete mode 100644 extern/nlohmann-json/docs/README.md delete mode 100644 extern/nlohmann-json/docs/avatars.png delete mode 100644 extern/nlohmann-json/docs/docset/Info.plist delete mode 100644 extern/nlohmann-json/docs/docset/Makefile delete mode 100644 extern/nlohmann-json/docs/docset/README.md delete mode 100644 extern/nlohmann-json/docs/docset/docSet.sql delete mode 100644 extern/nlohmann-json/docs/docset/docset.json delete mode 100644 extern/nlohmann-json/docs/docset/icon.png delete mode 100644 extern/nlohmann-json/docs/docset/icon@2x.png delete mode 100644 extern/nlohmann-json/docs/examples/README.cpp delete mode 100644 extern/nlohmann-json/docs/examples/README.output delete mode 100644 extern/nlohmann-json/docs/examples/accept__string.cpp delete mode 100644 extern/nlohmann-json/docs/examples/accept__string.output delete mode 100644 extern/nlohmann-json/docs/examples/array.cpp delete mode 100644 extern/nlohmann-json/docs/examples/array.output delete mode 100644 extern/nlohmann-json/docs/examples/array_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/array_t.output delete mode 100644 extern/nlohmann-json/docs/examples/at__json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/at__json_pointer_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__json_pointer_const.output delete mode 100644 extern/nlohmann-json/docs/examples/at__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/at__keytype_const.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__keytype_const.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/at__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/at__object_t_key_type_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__object_t_key_type_const.output delete mode 100644 extern/nlohmann-json/docs/examples/at__size_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__size_type.output delete mode 100644 extern/nlohmann-json/docs/examples/at__size_type_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/at__size_type_const.output delete mode 100644 extern/nlohmann-json/docs/examples/back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/back.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__CompatibleType.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__CompatibleType.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__InputIt_InputIt.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__InputIt_InputIt.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__basic_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__basic_json.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__copyassignment.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__copyassignment.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__list_init_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__list_init_t.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__moveconstructor.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__moveconstructor.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__nullptr_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__nullptr_t.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__size_type_basic_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__size_type_basic_json.output delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__value_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/basic_json__value_t.output delete mode 100644 extern/nlohmann-json/docs/examples/begin.cpp delete mode 100644 extern/nlohmann-json/docs/examples/begin.output delete mode 100644 extern/nlohmann-json/docs/examples/binary.cpp delete mode 100644 extern/nlohmann-json/docs/examples/binary.output delete mode 100644 extern/nlohmann-json/docs/examples/binary_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/binary_t.output delete mode 100644 extern/nlohmann-json/docs/examples/boolean_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/boolean_t.output delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__byte_container_with_subtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__byte_container_with_subtype.output delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__clear_subtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__clear_subtype.output delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__has_subtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__has_subtype.output delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__set_subtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__set_subtype.output delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__subtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/byte_container_with_subtype__subtype.output delete mode 100644 extern/nlohmann-json/docs/examples/cbegin.cpp delete mode 100644 extern/nlohmann-json/docs/examples/cbegin.output delete mode 100644 extern/nlohmann-json/docs/examples/cbor_tag_handler_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/cbor_tag_handler_t.output delete mode 100644 extern/nlohmann-json/docs/examples/cend.cpp delete mode 100644 extern/nlohmann-json/docs/examples/cend.output delete mode 100644 extern/nlohmann-json/docs/examples/clear.cpp delete mode 100644 extern/nlohmann-json/docs/examples/clear.output delete mode 100644 extern/nlohmann-json/docs/examples/contains__json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/contains__json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/contains__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/contains__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/contains__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/contains__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/count__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/count__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/count__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/count__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/crbegin.cpp delete mode 100644 extern/nlohmann-json/docs/examples/crbegin.output delete mode 100644 extern/nlohmann-json/docs/examples/crend.cpp delete mode 100644 extern/nlohmann-json/docs/examples/crend.output delete mode 100644 extern/nlohmann-json/docs/examples/default_object_comparator_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/default_object_comparator_t.output delete mode 100644 extern/nlohmann-json/docs/examples/diagnostics_extended.cpp delete mode 100644 extern/nlohmann-json/docs/examples/diagnostics_extended.output delete mode 100644 extern/nlohmann-json/docs/examples/diagnostics_standard.cpp delete mode 100644 extern/nlohmann-json/docs/examples/diagnostics_standard.output delete mode 100644 extern/nlohmann-json/docs/examples/diff.cpp delete mode 100644 extern/nlohmann-json/docs/examples/diff.output delete mode 100644 extern/nlohmann-json/docs/examples/dump.cpp delete mode 100644 extern/nlohmann-json/docs/examples/dump.output delete mode 100644 extern/nlohmann-json/docs/examples/emplace.cpp delete mode 100644 extern/nlohmann-json/docs/examples/emplace.output delete mode 100644 extern/nlohmann-json/docs/examples/emplace_back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/emplace_back.output delete mode 100644 extern/nlohmann-json/docs/examples/empty.cpp delete mode 100644 extern/nlohmann-json/docs/examples/empty.output delete mode 100644 extern/nlohmann-json/docs/examples/end.cpp delete mode 100644 extern/nlohmann-json/docs/examples/end.output delete mode 100644 extern/nlohmann-json/docs/examples/erase__IteratorType.cpp delete mode 100644 extern/nlohmann-json/docs/examples/erase__IteratorType.output delete mode 100644 extern/nlohmann-json/docs/examples/erase__IteratorType_IteratorType.cpp delete mode 100644 extern/nlohmann-json/docs/examples/erase__IteratorType_IteratorType.output delete mode 100644 extern/nlohmann-json/docs/examples/erase__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/erase__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/erase__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/erase__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/erase__size_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/erase__size_type.output delete mode 100644 extern/nlohmann-json/docs/examples/error_handler_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/error_handler_t.output delete mode 100644 extern/nlohmann-json/docs/examples/exception.cpp delete mode 100644 extern/nlohmann-json/docs/examples/exception.output delete mode 100644 extern/nlohmann-json/docs/examples/find__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/find__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/find__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/find__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/flatten.cpp delete mode 100644 extern/nlohmann-json/docs/examples/flatten.output delete mode 100644 extern/nlohmann-json/docs/examples/from_bjdata.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_bjdata.output delete mode 100644 extern/nlohmann-json/docs/examples/from_bson.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_bson.output delete mode 100644 extern/nlohmann-json/docs/examples/from_cbor.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_cbor.output delete mode 100644 extern/nlohmann-json/docs/examples/from_json__default_constructible.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_json__default_constructible.output delete mode 100644 extern/nlohmann-json/docs/examples/from_json__non_default_constructible.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_json__non_default_constructible.output delete mode 100644 extern/nlohmann-json/docs/examples/from_msgpack.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_msgpack.output delete mode 100644 extern/nlohmann-json/docs/examples/from_ubjson.cpp delete mode 100644 extern/nlohmann-json/docs/examples/from_ubjson.output delete mode 100644 extern/nlohmann-json/docs/examples/front.cpp delete mode 100644 extern/nlohmann-json/docs/examples/front.output delete mode 100644 extern/nlohmann-json/docs/examples/get__PointerType.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get__PointerType.output delete mode 100644 extern/nlohmann-json/docs/examples/get__ValueType_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get__ValueType_const.output delete mode 100644 extern/nlohmann-json/docs/examples/get_allocator.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get_allocator.output delete mode 100644 extern/nlohmann-json/docs/examples/get_binary.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get_binary.output delete mode 100644 extern/nlohmann-json/docs/examples/get_ptr.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get_ptr.output delete mode 100644 extern/nlohmann-json/docs/examples/get_ref.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get_ref.output delete mode 100644 extern/nlohmann-json/docs/examples/get_to.cpp delete mode 100644 extern/nlohmann-json/docs/examples/get_to.output delete mode 100644 extern/nlohmann-json/docs/examples/insert.cpp delete mode 100644 extern/nlohmann-json/docs/examples/insert.output delete mode 100644 extern/nlohmann-json/docs/examples/insert__count.cpp delete mode 100644 extern/nlohmann-json/docs/examples/insert__count.output delete mode 100644 extern/nlohmann-json/docs/examples/insert__ilist.cpp delete mode 100644 extern/nlohmann-json/docs/examples/insert__ilist.output delete mode 100644 extern/nlohmann-json/docs/examples/insert__range.cpp delete mode 100644 extern/nlohmann-json/docs/examples/insert__range.output delete mode 100644 extern/nlohmann-json/docs/examples/insert__range_object.cpp delete mode 100644 extern/nlohmann-json/docs/examples/insert__range_object.output delete mode 100644 extern/nlohmann-json/docs/examples/invalid_iterator.cpp delete mode 100644 extern/nlohmann-json/docs/examples/invalid_iterator.output delete mode 100644 extern/nlohmann-json/docs/examples/is_array.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_array.output delete mode 100644 extern/nlohmann-json/docs/examples/is_binary.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_binary.output delete mode 100644 extern/nlohmann-json/docs/examples/is_boolean.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_boolean.output delete mode 100644 extern/nlohmann-json/docs/examples/is_discarded.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_discarded.output delete mode 100644 extern/nlohmann-json/docs/examples/is_null.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_null.output delete mode 100644 extern/nlohmann-json/docs/examples/is_number.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_number.output delete mode 100644 extern/nlohmann-json/docs/examples/is_number_float.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_number_float.output delete mode 100644 extern/nlohmann-json/docs/examples/is_number_integer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_number_integer.output delete mode 100644 extern/nlohmann-json/docs/examples/is_number_unsigned.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_number_unsigned.output delete mode 100644 extern/nlohmann-json/docs/examples/is_object.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_object.output delete mode 100644 extern/nlohmann-json/docs/examples/is_primitive.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_primitive.output delete mode 100644 extern/nlohmann-json/docs/examples/is_string.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_string.output delete mode 100644 extern/nlohmann-json/docs/examples/is_structured.cpp delete mode 100644 extern/nlohmann-json/docs/examples/is_structured.output delete mode 100644 extern/nlohmann-json/docs/examples/items.cpp delete mode 100644 extern/nlohmann-json/docs/examples/items.output delete mode 100644 extern/nlohmann-json/docs/examples/json_lines.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_lines.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__back.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__empty.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__empty.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__equal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__equal.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__equal_stringtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__equal_stringtype.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__notequal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__notequal.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__notequal_stringtype.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator__notequal_stringtype.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_add.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_add.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_add_binary.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_add_binary.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_string_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__operator_string_t.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__parent_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__parent_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__pop_back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__pop_back.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__push_back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__push_back.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__string_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__string_t.output delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__to_string.cpp delete mode 100644 extern/nlohmann-json/docs/examples/json_pointer__to_string.output delete mode 100644 extern/nlohmann-json/docs/examples/max_size.cpp delete mode 100644 extern/nlohmann-json/docs/examples/max_size.output delete mode 100644 extern/nlohmann-json/docs/examples/merge_patch.cpp delete mode 100644 extern/nlohmann-json/docs/examples/merge_patch.output delete mode 100644 extern/nlohmann-json/docs/examples/meta.cpp delete mode 100644 extern/nlohmann-json/docs/examples/meta.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_explicit.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_explicit.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_macro.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_macro.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_with_default_explicit.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_with_default_explicit.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_with_default_macro.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_intrusive_with_default_macro.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_explicit.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_explicit.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_macro.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_macro.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_with_default_explicit.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_with_default_explicit.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_with_default_macro.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_define_type_non_intrusive_with_default_macro.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace_begin.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace_begin.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace_no_version.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_namespace_no_version.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_serialize_enum.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_serialize_enum.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_serialize_enum_2.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_serialize_enum_2.output delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_version.cpp delete mode 100644 extern/nlohmann-json/docs/examples/nlohmann_json_version.output delete mode 100644 extern/nlohmann-json/docs/examples/number_float_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/number_float_t.output delete mode 100644 extern/nlohmann-json/docs/examples/number_integer_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/number_integer_t.output delete mode 100644 extern/nlohmann-json/docs/examples/number_unsigned_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/number_unsigned_t.output delete mode 100644 extern/nlohmann-json/docs/examples/object.cpp delete mode 100644 extern/nlohmann-json/docs/examples/object.output delete mode 100644 extern/nlohmann-json/docs/examples/object_comparator_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/object_comparator_t.output delete mode 100644 extern/nlohmann-json/docs/examples/object_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/object_t.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__ValueType.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__ValueType.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal__nullptr_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal__nullptr_t.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal__specializations.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__equal__specializations.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__greater.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__greater.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__greaterequal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__greaterequal.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__less.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__less.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__lessequal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__lessequal.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__notequal.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__notequal.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__notequal__nullptr_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__notequal__nullptr_t.output delete mode 100644 extern/nlohmann-json/docs/examples/operator__value_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator__value_t.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__json_pointer_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__json_pointer_const.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__keytype_const.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__keytype_const.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__object_t_key_type_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__object_t_key_type_const.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__size_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__size_type.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__size_type_const.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_array__size_type_const.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_deserialize.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_deserialize.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_literal_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_literal_json.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_literal_json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_literal_json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_ltlt__basic_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_ltlt__basic_json.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_ltlt__json_pointer.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_ltlt__json_pointer.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_spaceship__const_reference.c++20.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_spaceship__const_reference.c++20.output delete mode 100644 extern/nlohmann-json/docs/examples/operator_spaceship__scalartype.c++20.cpp delete mode 100644 extern/nlohmann-json/docs/examples/operator_spaceship__scalartype.c++20.output delete mode 100644 extern/nlohmann-json/docs/examples/ordered_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/ordered_json.output delete mode 100644 extern/nlohmann-json/docs/examples/ordered_map.cpp delete mode 100644 extern/nlohmann-json/docs/examples/ordered_map.output delete mode 100644 extern/nlohmann-json/docs/examples/other_error.cpp delete mode 100644 extern/nlohmann-json/docs/examples/other_error.output delete mode 100644 extern/nlohmann-json/docs/examples/out_of_range.cpp delete mode 100644 extern/nlohmann-json/docs/examples/out_of_range.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__allow_exceptions.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__allow_exceptions.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__array__parser_callback_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__array__parser_callback_t.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__contiguouscontainer__parser_callback_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__contiguouscontainer__parser_callback_t.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__istream__parser_callback_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__istream__parser_callback_t.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__iterator_pair.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__iterator_pair.link delete mode 100644 extern/nlohmann-json/docs/examples/parse__iterator_pair.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__pointers.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__pointers.link delete mode 100644 extern/nlohmann-json/docs/examples/parse__pointers.output delete mode 100644 extern/nlohmann-json/docs/examples/parse__string__parser_callback_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse__string__parser_callback_t.output delete mode 100644 extern/nlohmann-json/docs/examples/parse_error.cpp delete mode 100644 extern/nlohmann-json/docs/examples/parse_error.output delete mode 100644 extern/nlohmann-json/docs/examples/patch.cpp delete mode 100644 extern/nlohmann-json/docs/examples/patch.output delete mode 100644 extern/nlohmann-json/docs/examples/patch_inplace.cpp delete mode 100644 extern/nlohmann-json/docs/examples/patch_inplace.output delete mode 100644 extern/nlohmann-json/docs/examples/push_back.cpp delete mode 100644 extern/nlohmann-json/docs/examples/push_back.output delete mode 100644 extern/nlohmann-json/docs/examples/push_back__initializer_list.cpp delete mode 100644 extern/nlohmann-json/docs/examples/push_back__initializer_list.output delete mode 100644 extern/nlohmann-json/docs/examples/push_back__object_t__value.cpp delete mode 100644 extern/nlohmann-json/docs/examples/push_back__object_t__value.output delete mode 100644 extern/nlohmann-json/docs/examples/rbegin.cpp delete mode 100644 extern/nlohmann-json/docs/examples/rbegin.output delete mode 100644 extern/nlohmann-json/docs/examples/rend.cpp delete mode 100644 extern/nlohmann-json/docs/examples/rend.output delete mode 100644 extern/nlohmann-json/docs/examples/sax_parse.cpp delete mode 100644 extern/nlohmann-json/docs/examples/sax_parse.output delete mode 100644 extern/nlohmann-json/docs/examples/sax_parse__binary.cpp delete mode 100644 extern/nlohmann-json/docs/examples/sax_parse__binary.output delete mode 100644 extern/nlohmann-json/docs/examples/size.cpp delete mode 100644 extern/nlohmann-json/docs/examples/size.output delete mode 100644 extern/nlohmann-json/docs/examples/std_hash.cpp delete mode 100644 extern/nlohmann-json/docs/examples/std_hash.output delete mode 100644 extern/nlohmann-json/docs/examples/std_swap.cpp delete mode 100644 extern/nlohmann-json/docs/examples/std_swap.output delete mode 100644 extern/nlohmann-json/docs/examples/string_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/string_t.output delete mode 100644 extern/nlohmann-json/docs/examples/swap__array_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/swap__array_t.output delete mode 100644 extern/nlohmann-json/docs/examples/swap__binary_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/swap__binary_t.output delete mode 100644 extern/nlohmann-json/docs/examples/swap__object_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/swap__object_t.output delete mode 100644 extern/nlohmann-json/docs/examples/swap__reference.cpp delete mode 100644 extern/nlohmann-json/docs/examples/swap__reference.output delete mode 100644 extern/nlohmann-json/docs/examples/swap__string_t.cpp delete mode 100644 extern/nlohmann-json/docs/examples/swap__string_t.output delete mode 100644 extern/nlohmann-json/docs/examples/to_bjdata.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_bjdata.output delete mode 100644 extern/nlohmann-json/docs/examples/to_bson.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_bson.output delete mode 100644 extern/nlohmann-json/docs/examples/to_cbor.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_cbor.output delete mode 100644 extern/nlohmann-json/docs/examples/to_json.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_json.output delete mode 100644 extern/nlohmann-json/docs/examples/to_msgpack.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_msgpack.output delete mode 100644 extern/nlohmann-json/docs/examples/to_string.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_string.output delete mode 100644 extern/nlohmann-json/docs/examples/to_ubjson.cpp delete mode 100644 extern/nlohmann-json/docs/examples/to_ubjson.output delete mode 100644 extern/nlohmann-json/docs/examples/type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/type.output delete mode 100644 extern/nlohmann-json/docs/examples/type_error.cpp delete mode 100644 extern/nlohmann-json/docs/examples/type_error.output delete mode 100644 extern/nlohmann-json/docs/examples/type_name.cpp delete mode 100644 extern/nlohmann-json/docs/examples/type_name.output delete mode 100644 extern/nlohmann-json/docs/examples/unflatten.cpp delete mode 100644 extern/nlohmann-json/docs/examples/unflatten.output delete mode 100644 extern/nlohmann-json/docs/examples/update.cpp delete mode 100644 extern/nlohmann-json/docs/examples/update.output delete mode 100644 extern/nlohmann-json/docs/examples/update__range.cpp delete mode 100644 extern/nlohmann-json/docs/examples/update__range.output delete mode 100644 extern/nlohmann-json/docs/examples/value__json_ptr.cpp delete mode 100644 extern/nlohmann-json/docs/examples/value__json_ptr.output delete mode 100644 extern/nlohmann-json/docs/examples/value__keytype.c++17.cpp delete mode 100644 extern/nlohmann-json/docs/examples/value__keytype.c++17.output delete mode 100644 extern/nlohmann-json/docs/examples/value__object_t_key_type.cpp delete mode 100644 extern/nlohmann-json/docs/examples/value__object_t_key_type.output delete mode 100644 extern/nlohmann-json/docs/json.gif delete mode 100644 extern/nlohmann-json/docs/mkdocs/Makefile delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/adl_serializer/from_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/adl_serializer/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/adl_serializer/to_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/accept.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/array.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/array_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/at.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/basic_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/begin.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/binary.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/binary_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/boolean_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/cbegin.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/cbor_tag_handler_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/cend.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/clear.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/contains.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/count.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/crbegin.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/crend.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/default_object_comparator_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/diff.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/dump.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/emplace.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/emplace_back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/empty.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/end.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/erase.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/error_handler_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/exception.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/find.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/flatten.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/from_bjdata.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/from_bson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/from_cbor.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/from_msgpack.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/from_ubjson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/front.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get_allocator.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get_binary.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get_ptr.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get_ref.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/get_to.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/input_format_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/insert.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/invalid_iterator.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_array.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_binary.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_boolean.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_discarded.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_null.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_number.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_number_float.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_number_integer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_number_unsigned.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_object.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_primitive.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_string.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/is_structured.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/items.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/json_serializer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/max_size.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/merge_patch.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/meta.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/number_float_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/number_integer_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/number_unsigned_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/object.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/object_comparator_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/object_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator+=.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator=.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator[].md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_ValueType.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_eq.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_ge.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_gt.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_le.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_lt.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_ne.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_spaceship.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/operator_value_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/other_error.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/out_of_range.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/parse.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/parse_error.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/parse_event_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/parser_callback_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/patch.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/patch_inplace.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/push_back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/rbegin.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/rend.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/sax_parse.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/size.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/std_hash.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/std_swap.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/string_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/swap.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_bjdata.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_bson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_cbor.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_msgpack.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_string.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/to_ubjson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/type.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/type_error.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/type_name.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/unflatten.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/update.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/value.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/value_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/basic_json/~basic_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/byte_container_with_subtype.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/clear_subtype.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/has_subtype.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/set_subtype.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/byte_container_with_subtype/subtype.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/empty.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/json_pointer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/operator_eq.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/operator_ne.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/operator_slash.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/operator_slasheq.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/operator_string_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/parent_pointer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/pop_back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/push_back.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/string_t.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_pointer/to_string.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/binary.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/boolean.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/end_array.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/end_object.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/key.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/null.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/number_float.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/number_integer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/number_unsigned.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/parse_error.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/start_array.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/start_object.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/json_sax/string.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_assert.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_diagnostics.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_disable_enum_serialization.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_has_cpp_11.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_has_filesystem.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_has_ranges.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_has_three_way_comparison.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_no_io.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_noexception.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_skip_library_version_check.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_skip_unsupported_compiler_check.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_throw_user.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_use_global_udls.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_use_implicit_conversions.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/json_use_legacy_discarded_value_comparison.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_json_namespace.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_json_namespace_begin.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_json_namespace_no_version.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/macros/nlohmann_json_version_major.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/operator_gtgt.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/operator_literal_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/operator_literal_json_pointer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/operator_ltlt.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/ordered_json.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/api/ordered_map.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/css/custom.css delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/arbitrary_types.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/assertions.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/bjdata.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/bson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/cbor.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/messagepack.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_formats/ubjson.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/binary_values.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/comments.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/element_access/checked_access.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/element_access/default_value.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/element_access/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/element_access/unchecked_access.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/enum_conversion.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/iterators.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/json_patch.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/json_pointer.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/macros.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/merge_patch.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/namespace.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/object_order.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/parsing/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/parsing/json_lines.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/parsing/parse_exceptions.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/parsing/parser_callbacks.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/parsing/sax_interface.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/types/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/features/types/number_handling.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/code_of_conduct.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/design_goals.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/exceptions.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/faq.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/license.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/releases.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/home/sponsors.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/images/callback_events.png delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/images/json_syntax_number.png delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/images/range-begin-end.svg delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/images/range-rbegin-rend.svg delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/cmake.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/conan/CMakeLists.txt delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/conan/Conanfile.txt delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/conan/example.cpp delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/example.cpp delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/index.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/package_managers.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/pkg-config.md delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/vcpkg/CMakeLists.txt delete mode 100644 extern/nlohmann-json/docs/mkdocs/docs/integration/vcpkg/example.cpp delete mode 100644 extern/nlohmann-json/docs/mkdocs/mkdocs.yml delete mode 100644 extern/nlohmann-json/docs/mkdocs/requirements.txt delete mode 100755 extern/nlohmann-json/docs/mkdocs/scripts/check_structure.py delete mode 100755 extern/nlohmann-json/docs/usages/ios.png delete mode 100644 extern/nlohmann-json/docs/usages/macos.png delete mode 100644 extern/nlohmann-json/include/nlohmann/adl_serializer.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/byte_container_with_subtype.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/abi_macros.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/conversions/from_json.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/conversions/to_chars.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/conversions/to_json.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/exceptions.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/hash.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/binary_reader.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/input_adapters.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/json_sax.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/lexer.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/parser.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/input/position_t.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/internal_iterator.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/iter_impl.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/iteration_proxy.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/iterator_traits.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/json_reverse_iterator.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/iterators/primitive_iterator.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/json_pointer.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/json_ref.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/macro_scope.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/macro_unscope.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/call_std/begin.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/call_std/end.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/cpp_future.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/detected.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/identity_tag.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/is_sax.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/std_fs.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/type_traits.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/meta/void_t.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/output/binary_writer.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/output/output_adapters.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/output/serializer.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/string_concat.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/string_escape.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/detail/value_t.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/json.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/json_fwd.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/ordered_map.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/thirdparty/hedley/hedley.hpp delete mode 100644 extern/nlohmann-json/include/nlohmann/thirdparty/hedley/hedley_undef.hpp delete mode 100644 extern/nlohmann-json/meson.build delete mode 100644 extern/nlohmann-json/nlohmann_json.natvis delete mode 100644 extern/nlohmann-json/single_include/nlohmann/json.hpp delete mode 100644 extern/nlohmann-json/single_include/nlohmann/json_fwd.hpp delete mode 100644 extern/nlohmann-json/tests/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/Makefile delete mode 100644 extern/nlohmann-json/tests/abi/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/abi/config/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/abi/config/config.hpp delete mode 100644 extern/nlohmann-json/tests/abi/config/custom.cpp delete mode 100644 extern/nlohmann-json/tests/abi/config/default.cpp delete mode 100644 extern/nlohmann-json/tests/abi/config/noversion.cpp delete mode 100644 extern/nlohmann-json/tests/abi/diag/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/abi/diag/diag.cpp delete mode 100644 extern/nlohmann-json/tests/abi/diag/diag.hpp delete mode 100644 extern/nlohmann-json/tests/abi/diag/diag_off.cpp delete mode 100644 extern/nlohmann-json/tests/abi/diag/diag_on.cpp delete mode 100644 extern/nlohmann-json/tests/abi/include/nlohmann/json_v3_10_5.hpp delete mode 100644 extern/nlohmann-json/tests/abi/inline_ns/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/abi/inline_ns/use_current.cpp delete mode 100644 extern/nlohmann-json/tests/abi/inline_ns/use_v3_10_5.cpp delete mode 100644 extern/nlohmann-json/tests/abi/main.cpp delete mode 100644 extern/nlohmann-json/tests/benchmarks/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/benchmarks/src/benchmarks.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_add_subdirectory/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_add_subdirectory/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_add_subdirectory/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content2/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content2/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_fetch_content2/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_import/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_import/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_import/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_import_minver/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_import_minver/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_import_minver/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/Bar.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/Bar.hpp delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/Foo.cpp delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/Foo.hpp delete mode 100644 extern/nlohmann-json/tests/cmake_target_include_directories/project/main.cpp delete mode 100644 extern/nlohmann-json/tests/cuda_example/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/cuda_example/json_cuda.cu delete mode 100644 extern/nlohmann-json/tests/fuzzing.md delete mode 100644 extern/nlohmann-json/tests/reports/2016-08-29-fuzz/exec_speed.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-08-29-fuzz/fuzz.tiff delete mode 100644 extern/nlohmann-json/tests/reports/2016-08-29-fuzz/high_freq.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-08-29-fuzz/index.html delete mode 100644 extern/nlohmann-json/tests/reports/2016-08-29-fuzz/low_freq.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/README.md delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/conformance_Nlohmann (C++11).md delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/conformance_overall_Result.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/performance_Corei7-4980HQ@2.80GHz_mac64_clang7.0_1._Parse_Memory_(byte).png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/performance_Corei7-4980HQ@2.80GHz_mac64_clang7.0_1._Parse_Time_(ms).png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/performance_Corei7-4980HQ@2.80GHz_mac64_clang7.0_2._Stringify_Time_(ms).png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/performance_Corei7-4980HQ@2.80GHz_mac64_clang7.0_3._Prettify_Time_(ms).png delete mode 100644 extern/nlohmann-json/tests/reports/2016-09-09-nativejson_benchmark/performance_Corei7-4980HQ@2.80GHz_mac64_clang7.0_7._Code_size_FileSize_(byte).png delete mode 100644 extern/nlohmann-json/tests/reports/2016-10-02-fuzz/exec_speed.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-10-02-fuzz/fuzz.tiff delete mode 100644 extern/nlohmann-json/tests/reports/2016-10-02-fuzz/high_freq.png delete mode 100644 extern/nlohmann-json/tests/reports/2016-10-02-fuzz/index.html delete mode 100644 extern/nlohmann-json/tests/reports/2016-10-02-fuzz/low_freq.png delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-driver_afl.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_bjdata.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_bson.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_cbor.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_json.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_msgpack.cpp delete mode 100644 extern/nlohmann-json/tests/src/fuzzer-parse_ubjson.cpp delete mode 100644 extern/nlohmann-json/tests/src/make_test_data_available.hpp delete mode 100644 extern/nlohmann-json/tests/src/test_utils.hpp delete mode 100644 extern/nlohmann-json/tests/src/unit-32bit.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-algorithms.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-allocator.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-alt-string.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-assert_macro.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-binary_formats.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-bjdata.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-bson.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-byte_container_with_subtype.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-capacity.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-cbor.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-class_const_iterator.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-class_iterator.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-class_lexer.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-class_parser.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-comparison.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-concepts.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-constructor1.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-constructor2.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-convenience.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-conversions.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-deserialization.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-diagnostics.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-disabled_exceptions.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-element_access1.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-element_access2.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-hash.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-inspection.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-items.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-iterators1.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-iterators2.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-json_patch.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-json_pointer.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-large_json.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-merge_patch.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-meta.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-modifiers.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-msgpack.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-noexcept.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-ordered_json.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-ordered_map.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-pointer_access.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-readme.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-reference_access.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-regression1.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-regression2.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-serialization.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-testsuites.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-to_chars.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-type_traits.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-ubjson.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-udl.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-udt.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-udt_macro.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-unicode1.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-unicode2.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-unicode3.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-unicode4.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-unicode5.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-user_defined_input.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-windows_h.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit-wstring.cpp delete mode 100644 extern/nlohmann-json/tests/src/unit.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerCorpus.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerCrossOver.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerDefs.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerDictionary.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerDriver.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerExtFunctions.def delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerExtFunctions.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerExtFunctionsDlsym.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerExtFunctionsWeak.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerExtFunctionsWeakAlias.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerFlags.def delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerIO.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerIO.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerIOPosix.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerIOWindows.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerInterface.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerInternal.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerLoop.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerMain.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerMerge.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerMerge.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerMutate.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerMutate.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerOptions.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerRandom.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerSHA1.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerSHA1.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerTracePC.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerTracePC.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerTraceState.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtil.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtil.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtilDarwin.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtilLinux.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtilPosix.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerUtilWindows.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/FuzzerValueBitMap.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/README.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/afl/afl_driver.cpp delete mode 100755 extern/nlohmann-json/tests/thirdparty/Fuzzer/build.sh delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/cxx.dict delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/standalone/StandaloneFuzzTargetMain.c delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/AFLDriverTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/AbsNegAndConstant64Test.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/AbsNegAndConstantTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/AccumulateAllocationsTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/BufferOverflowOnInput.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/CallerCalleeTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/CounterTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/CustomCrossOverTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/CustomMutatorTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/DSO1.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/DSO2.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/DSOTestExtra.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/DSOTestMain.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/DivTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/EmptyTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/FourIndependentBranchesTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/FullCoverageSetTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/FuzzerUnittest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/InitializeTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/LeakTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/LeakTimeoutTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/LoadTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/MemcmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/NthRunCrashTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/NullDerefOnEmptyTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/NullDerefTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/OneHugeAllocTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/OutOfMemorySingleLargeMallocTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/OutOfMemoryTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/RepeatedBytesTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/RepeatedMemcmp.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ShrinkControlFlowTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ShrinkValueProfileTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SignedIntOverflowTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SimpleCmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SimpleDictionaryTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SimpleHashTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SimpleTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SimpleThreadedTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SingleMemcmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SingleStrcmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SingleStrncmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SpamyTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/StrcmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/StrncmpOOBTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/StrncmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/StrstrTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SwapCmpTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/Switch2Test.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/SwitchTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ThreadedLeakTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ThreadedTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/TimeoutEmptyTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/TimeoutTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/TraceMallocTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/UninstrumentedTest.cpp delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/afl-driver-extra-stats.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/afl-driver-stderr.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/caller-callee.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/coverage.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/dict1.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/dump_coverage.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-customcrossover.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-custommutator.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-dict.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-dirs.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-fdmask.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-finalstats.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-flags.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-jobs.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-leak.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-oom-with-profile.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-oom.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-printcovpcs.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-runs.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-seed.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-segv.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-singleinputs.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-threaded.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-timeout.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-traces-hooks.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer-ubsan.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/fuzzer.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/hi.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/lit.cfg delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/lit.site.cfg.in delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/merge.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/minimize_crash.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/no-coverage/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/repeated-bytes.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/shrink.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/simple-cmp.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/standalone.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/swap-cmp.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/trace-malloc.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ubsan/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/ulimit.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/uninstrumented/CMakeLists.txt delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/unit/lit.cfg delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/unit/lit.site.cfg.in delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-cmp.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-cmp2.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-cmp3.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-cmp4.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-div.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-load.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-mem.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-set.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-strcmp.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-strncmp.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/Fuzzer/test/value-profile-switch.test delete mode 100644 extern/nlohmann-json/tests/thirdparty/doctest/doctest.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/doctest/doctest_compatibility.h delete mode 100644 extern/nlohmann-json/tests/thirdparty/fifo_map/fifo_map.hpp delete mode 100755 extern/nlohmann-json/tests/thirdparty/imapdl/filterbr.py delete mode 100644 extern/nlohmann-json/tools/amalgamate/CHANGES.md delete mode 100644 extern/nlohmann-json/tools/amalgamate/README.md delete mode 100755 extern/nlohmann-json/tools/amalgamate/amalgamate.py delete mode 100644 extern/nlohmann-json/tools/amalgamate/config_json.json delete mode 100644 extern/nlohmann-json/tools/amalgamate/config_json_fwd.json delete mode 100644 extern/nlohmann-json/tools/cpplint/README.rst delete mode 100755 extern/nlohmann-json/tools/cpplint/cpplint.py delete mode 100755 extern/nlohmann-json/tools/cpplint/update.sh delete mode 100644 extern/nlohmann-json/tools/gdb_pretty_printer/README.md delete mode 100644 extern/nlohmann-json/tools/gdb_pretty_printer/nlohmann-json.py delete mode 100644 extern/nlohmann-json/tools/generate_natvis/README.md delete mode 100755 extern/nlohmann-json/tools/generate_natvis/generate_natvis.py delete mode 100644 extern/nlohmann-json/tools/generate_natvis/nlohmann_json.natvis.j2 delete mode 100644 extern/nlohmann-json/tools/macro_builder/main.cpp delete mode 100644 extern/nlohmann-json/tools/serve_header/README.md delete mode 100644 extern/nlohmann-json/tools/serve_header/demo.png delete mode 100644 extern/nlohmann-json/tools/serve_header/requirements.txt delete mode 100755 extern/nlohmann-json/tools/serve_header/serve_header.py delete mode 100644 extern/nlohmann-json/tools/serve_header/serve_header.yml.example delete mode 100644 extern/nlohmann-json/wsjcpp.yml diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 29efc0364..003927f08 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Install dependencies run: | - brew install sdl2 libpng glew ninja libzip + brew install sdl2 libpng glew ninja libzip nlohmann-json - uses: actions/checkout@v2 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 @@ -34,7 +34,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y libsdl2-dev libpng-dev libglew-dev libzip-dev zipcmp zipmerge ziptool ninja-build + sudo apt-get install -y libsdl2-dev libpng-dev libglew-dev libzip-dev zipcmp zipmerge ziptool ninja-build nlohmann-json3-dev - uses: actions/checkout@v2 - name: ccache uses: hendrikmuhs/ccache-action@v1.2 diff --git a/.github/workflows/tidy-format-validation.yml b/.github/workflows/tidy-format-validation.yml index 5311827ca..efd594605 100644 --- a/.github/workflows/tidy-format-validation.yml +++ b/.github/workflows/tidy-format-validation.yml @@ -10,7 +10,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y libsdl2-dev libpng-dev libglew-dev libzip-dev zipcmp zipmerge ziptool ninja-build clang-tidy clang-format-12 + sudo apt-get install -y libsdl2-dev libpng-dev libglew-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev ninja-build clang-tidy clang-format-12 - uses: actions/checkout@v3 with: fetch-depth: 2 diff --git a/CMakeLists.txt b/CMakeLists.txt index e15e58be4..26a9bc340 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND USE_AUTO_VCPKG) endif() vcpkg_bootstrap() - vcpkg_install_packages(zlib bzip2 sdl2 glew libzip) + vcpkg_install_packages(zlib bzip2 sdl2 glew libzip nlohmann-json) endif() add_subdirectory("extern") diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 5d709a54a..0d2ec53ac 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -169,13 +169,6 @@ if (GFX_DEBUG_DISASSEMBLER) target_include_directories(libgfxd PUBLIC ${LIBGFXD_DIR}) endif() -#=================== nlohmann-json =================== - -set(JSON_BuildTests OFF CACHE INTERNAL "") - -set(NLOHMANN_JSON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/nlohmann-json) -add_subdirectory(${NLOHMANN_JSON_DIR}) - #=================== StrHash64 =================== set(STRHASH64_DIR ${CMAKE_CURRENT_SOURCE_DIR}/StrHash64) diff --git a/extern/nlohmann-json/.clang-format b/extern/nlohmann-json/.clang-format deleted file mode 100644 index 5b9e3fd53..000000000 --- a/extern/nlohmann-json/.clang-format +++ /dev/null @@ -1,84 +0,0 @@ -#AccessModifierOffset: 2 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: false -#AlignConsecutiveBitFields: false -AlignConsecutiveDeclarations: false -AlignConsecutiveMacros: false -AlignEscapedNewlines: Right -#AlignOperands: AlignAfterOperator -AlignTrailingComments: true -AllowAllArgumentsOnNextLine: false -AllowAllConstructorInitializersOnNextLine: false -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -#AllowShortEnumsOnASingleLine: true -AllowShortFunctionsOnASingleLine: Empty -AllowShortIfStatementsOnASingleLine: Never -AllowShortLambdasOnASingleLine: Empty -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: Yes -BinPackArguments: false -BinPackParameters: false -#BitFieldColonSpacing: Both -BreakBeforeBraces: Custom # or Allman -BraceWrapping: - AfterCaseLabel: true - AfterClass: true - AfterControlStatement: Always - AfterEnum: true - AfterFunction: true - AfterNamespace: false - AfterStruct: true - AfterUnion: true - AfterExternBlock: false - BeforeCatch: true - BeforeElse: true - #BeforeLambdaBody: false - #BeforeWhile: false - SplitEmptyFunction: false - SplitEmptyRecord: false - SplitEmptyNamespace: false -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeComma -BreakStringLiterals: false -ColumnLimit: 0 -CompactNamespaces: false -ConstructorInitializerIndentWidth: 2 -Cpp11BracedListStyle: true -PointerAlignment: Left -FixNamespaceComments: true -IncludeBlocks: Preserve -#IndentCaseBlocks: false -IndentCaseLabels: true -IndentGotoLabels: false -IndentPPDirectives: BeforeHash -IndentWidth: 4 -KeepEmptyLinesAtTheStartOfBlocks: false -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ReflowComments: false -SortIncludes: true -SortUsingDeclarations: true -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: false -SpaceBeforeAssignmentOperators: true -SpaceBeforeCpp11BracedList: false -SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyBlock: false -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 2 -SpacesInAngles: false -SpacesInCStyleCastParentheses: false -SpacesInConditionalStatement: false -SpacesInContainerLiterals: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: c++11 -TabWidth: 4 -UseTab: Never diff --git a/extern/nlohmann-json/.clang-tidy b/extern/nlohmann-json/.clang-tidy deleted file mode 100644 index 4d4238a35..000000000 --- a/extern/nlohmann-json/.clang-tidy +++ /dev/null @@ -1,56 +0,0 @@ -Checks: '*, - -altera-id-dependent-backward-branch, - -altera-struct-pack-align, - -altera-unroll-loops, - -android-cloexec-fopen, - -bugprone-easily-swappable-parameters, - -cert-err58-cpp, - -concurrency-mt-unsafe, - -cppcoreguidelines-avoid-goto, - -cppcoreguidelines-avoid-magic-numbers, - -cppcoreguidelines-avoid-non-const-global-variables, - -cppcoreguidelines-macro-usage, - -cppcoreguidelines-pro-bounds-array-to-pointer-decay, - -cppcoreguidelines-pro-bounds-constant-array-index, - -cppcoreguidelines-pro-bounds-pointer-arithmetic, - -cppcoreguidelines-pro-type-reinterpret-cast, - -cppcoreguidelines-pro-type-union-access, - -cppcoreguidelines-virtual-class-destructor, - -fuchsia-default-arguments-calls, - -fuchsia-default-arguments-declarations, - -fuchsia-overloaded-operator, - -google-explicit-constructor, - -google-readability-function-size, - -google-runtime-int, - -google-runtime-references, - -hicpp-avoid-goto, - -hicpp-explicit-conversions, - -hicpp-function-size, - -hicpp-no-array-decay, - -hicpp-no-assembler, - -hicpp-signed-bitwise, - -hicpp-uppercase-literal-suffix, - -llvm-header-guard, - -llvm-include-order, - -llvmlibc-*, - -misc-no-recursion, - -misc-non-private-member-variables-in-classes, - -modernize-concat-nested-namespaces, - -modernize-use-nodiscard, - -modernize-use-trailing-return-type, - -readability-function-cognitive-complexity, - -readability-function-size, - -readability-identifier-length, - -readability-magic-numbers, - -readability-redundant-access-specifiers, - -readability-simplify-boolean-expr, - -readability-uppercase-literal-suffix' - -CheckOptions: - - key: hicpp-special-member-functions.AllowSoleDefaultDtor - value: 1 - -WarningsAsErrors: '*' - -#HeaderFilterRegex: '.*nlohmann.*' -HeaderFilterRegex: '.*hpp$' diff --git a/extern/nlohmann-json/.github/CODEOWNERS b/extern/nlohmann-json/.github/CODEOWNERS deleted file mode 100644 index 4d5ee0440..000000000 --- a/extern/nlohmann-json/.github/CODEOWNERS +++ /dev/null @@ -1,6 +0,0 @@ -# JSON for Modern C++ has been originally written by Niels Lohmann. -# Since 2013 over 140 contributors have helped to improve the library. -# This CODEOWNERS file is only to make sure that @nlohmann is requested -# for a code review in case of a pull request. - -* @nlohmann diff --git a/extern/nlohmann-json/.github/CODE_OF_CONDUCT.md b/extern/nlohmann-json/.github/CODE_OF_CONDUCT.md deleted file mode 100644 index 770b8173e..000000000 --- a/extern/nlohmann-json/.github/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/extern/nlohmann-json/.github/CONTRIBUTING.md b/extern/nlohmann-json/.github/CONTRIBUTING.md deleted file mode 100644 index 1529ab991..000000000 --- a/extern/nlohmann-json/.github/CONTRIBUTING.md +++ /dev/null @@ -1,71 +0,0 @@ -[![Issue Stats](http://issuestats.com/github/nlohmann/json/badge/pr?style=flat)](http://issuestats.com/github/nlohmann/json) [![Issue Stats](http://issuestats.com/github/nlohmann/json/badge/issue?style=flat)](http://issuestats.com/github/nlohmann/json) - -# How to contribute - -This project started as a little excuse to exercise some of the cool new C++11 features. Over time, people actually started to use the JSON library (yey!) and started to help improve it by proposing features, finding bugs, or even fixing my mistakes. I am really [thankful](https://github.com/nlohmann/json/blob/master/README.md#thanks) for this and try to keep track of all the helpers. - -To make it as easy as possible for you to contribute and for me to keep an overview, here are a few guidelines which should help us avoid all kinds of unnecessary work or disappointment. And of course, this document is subject to discussion, so please [create an issue](https://github.com/nlohmann/json/issues/new/choose) or a pull request if you find a way to improve it! - -## Private reports - -Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to . - -## Prerequisites - -Please [create an issue](https://github.com/nlohmann/json/issues/new/choose), assuming one does not already exist, and describe your concern. Note you need a [GitHub account](https://github.com/signup/free) for this. - -## Describe your issue - -Clearly describe the issue: - -- If it is a bug, please describe how to **reproduce** it. If possible, attach a complete example which demonstrates the error. Please also state what you **expected** to happen instead of the error. -- If you propose a change or addition, try to give an **example** how the improved code could look like or how to use it. -- If you found a compilation error, please tell us which **compiler** (version and operating system) you used and paste the (relevant part of) the error messages to the ticket. - -Please stick to the provided issue template ([bug report](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE/bug.yml) if possible. For questions, feature or support requests, please [open a discussion](https://github.com/nlohmann/json/discussions/new). - -## Files to change - -:exclamation: Before you make any changes, note the single-header files [`single_include/nlohmann/json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) and [`single_include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json_fwd.hpp) are **generated** from the source files in the [`include/nlohmann` directory](https://github.com/nlohmann/json/tree/develop/include/nlohmann). Please **do not** edit the files `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp` directly, but change the `include/nlohmann` sources and regenerate the files by executing `make amalgamate`. - -To make changes, you need to edit the following files: - -1. [`include/nlohmann/*`](https://github.com/nlohmann/json/tree/develop/include/nlohmann) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp`. - -2. [`tests/src/unit-*.cpp`](https://github.com/nlohmann/json/tree/develop/tests/src) - These files contain the [doctest](https://github.com/onqtam/doctest) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code. - - If you add or change a feature, please also add a unit test to this file. The unit tests can be compiled and executed with - - ```sh - $ mkdir build - $ cd build - $ cmake .. - $ cmake --build . - $ ctest - ``` - - The test cases are also executed with several different compilers on [Travis](https://travis-ci.org/nlohmann/json) once you open a pull request. - - -## Note - -- If you open a pull request, the code will be automatically tested with [Valgrind](http://valgrind.org)'s Memcheck tool to detect memory leaks. Please be aware that the execution with Valgrind _may_ in rare cases yield different behavior than running the code directly. This can result in failing unit tests which run successfully without Valgrind. -- There is a Makefile target `make pretty` which runs [Artistic Style](http://astyle.sourceforge.net) to fix indentation. If possible, run it before opening the pull request. Otherwise, we shall run it afterward. - -## Please don't - -- The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means. -- Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for these kind of bugs). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project. -- Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension. - - We shall not extend the library to **support comments**. There is quite some [controversy](https://www.reddit.com/r/programming/comments/4v6chu/why_json_doesnt_support_comments_douglas_crockford/) around this topic, and there were quite some [issues](https://github.com/nlohmann/json/issues/376) on this. We believe that JSON is fine without comments. - - We do not preserve the **insertion order of object elements**. The [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". To this end, this library does not preserve insertion order of name/value pairs. (In fact, keys will be traversed in alphabetical order as `std::map` with `std::less` is used by default.) Note this behavior conforms to the standard, and we shall not change it to any other order. If you do want to preserve the insertion order, you can specialize the object type with containers like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map). - -- Please do not open pull requests that address **multiple issues**. - -## Wanted - -The following areas really need contribution: - -- Extending the **continuous integration** toward more exotic compilers such as Android NDK, Intel's Compiler, or the bleeding-edge versions Clang. -- Improving the efficiency of the **JSON parser**. The current parser is implemented as a naive recursive descent parser with hand coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep the parser inside the `json.hpp` header, and I am not aware of approaches similar to [`re2c`](http://re2c.org) for parsing. -- Extending and updating existing **benchmarks** to include (the most recent version of) this library. Though efficiency is not everything, speed and memory consumption are very important characteristics for C++ developers, so having proper comparisons would be interesting. diff --git a/extern/nlohmann-json/.github/FUNDING.yml b/extern/nlohmann-json/.github/FUNDING.yml deleted file mode 100644 index a6c972e81..000000000 --- a/extern/nlohmann-json/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: nlohmann -custom: http://paypal.me/nlohmann diff --git a/extern/nlohmann-json/.github/ISSUE_TEMPLATE/bug.yaml b/extern/nlohmann-json/.github/ISSUE_TEMPLATE/bug.yaml deleted file mode 100644 index 571a1cc44..000000000 --- a/extern/nlohmann-json/.github/ISSUE_TEMPLATE/bug.yaml +++ /dev/null @@ -1,93 +0,0 @@ -name: Bug Report -description: Create a bug report -labels: - - 'kind: bug' -body: - - type: markdown - attributes: - value: > - Thanks for taking the time to fill out this bug report! - - Make sure you give it a short and specific **title** so that the report - is searchable and uniquely identifiable. - - Note that this form is for bug reports only. Please - [open a discussion](https://github.com/nlohmann/json/discussions/new) - for questions, feature requests, or support requests - - type: textarea - id: summary - attributes: - label: Description - description: > - Please provide an abstract description of the issue to the developers, - and why you consider it to be a bug. Please include any specific links - to the documentation, JSON specification, or code. - validations: - required: true - - type: textarea - id: reproduce - attributes: - label: Reproduction steps - description: > - How do you trigger the bug? Please walk us through step by step. Be as - specific as possible. - validations: - required: true - - type: textarea - id: results - attributes: - label: Expected vs. actual results - description: > - Please describe what you expected to happen after the steps above and - what actually happened. - validations: - required: true - - type: textarea - id: code - attributes: - label: Minimal code example - description: > - If possible, provide a small and self-contained example that triggers - the bug. Please understand that we cannot analyze and debug large code - bases. Please do not paste screenshots here. - render: Shell - - type: textarea - id: output - attributes: - label: Error messages - description: > - Please provide any kind of error output (compilation errors, exception - messages, stack traces, etc.) which can help to diagnose the error. - render: Shell - - type: input - id: compiler - attributes: - label: Compiler and operating system - description: > - On which operating systems and compilers have you observed the issue? - Include as many relevant details about the environment you experienced - the bug in. Make sure you use a - [supported compiler](https://github.com/nlohmann/json#supported-compilers). - validations: - required: true - - type: input - id: version - attributes: - label: Library version - description: > - Which version of the library did you use? If it is a released version, - please enter the version number (e.g., 3.11.2). Otherwise, please enter - the commit hash. If you got the library from another source as the - GitHub repository (e.g., via a package manager), please also state - this. - validations: - required: true - - type: checkboxes - id: validation - attributes: - label: Validation - description: > - Please check these additional steps: - options: - - label: The bug also occurs if the latest version from the [`develop`](https://github.com/nlohmann/json/tree/develop) branch is used. - - label: I can successfully [compile and run the unit tests](https://github.com/nlohmann/json#execute-unit-tests). diff --git a/extern/nlohmann-json/.github/ISSUE_TEMPLATE/config.yml b/extern/nlohmann-json/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 0e9663384..000000000 --- a/extern/nlohmann-json/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask a question - url: https://github.com/nlohmann/json/discussions - about: Ask questions and discuss with other community members diff --git a/extern/nlohmann-json/.github/PULL_REQUEST_TEMPLATE.md b/extern/nlohmann-json/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 56854fb7a..000000000 --- a/extern/nlohmann-json/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,19 +0,0 @@ -[Describe your pull request here. Please read the text below the line, and make sure you follow the checklist.] - -* * * - -## Pull request checklist - -Read the [Contribution Guidelines](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) for detailed information. - -- [ ] Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues). -- [ ] The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error. -- [ ] [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src). -- [ ] The source code is amalgamated; that is, after making changes to the sources in the `include/nlohmann` directory, run `make amalgamate` to create the single-header files `single_include/nlohmann/json.hpp` and `single_include/nlohmann/json_fwd.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change). - -## Please don't - -- The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means. -- Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for these kind of bugs). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project. -- Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension. -- Please do not open pull requests that address **multiple issues**. diff --git a/extern/nlohmann-json/.github/SECURITY.md b/extern/nlohmann-json/.github/SECURITY.md deleted file mode 100644 index 4d010ebda..000000000 --- a/extern/nlohmann-json/.github/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security Policy - -## Reporting a Vulnerability - -Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to . You can use [this key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69) for encryption. diff --git a/extern/nlohmann-json/.github/config.yml b/extern/nlohmann-json/.github/config.yml deleted file mode 100644 index 7a8f41e6d..000000000 --- a/extern/nlohmann-json/.github/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Configuration for sentiment-bot - https://github.com/behaviorbot/sentiment-bot - -# *Required* toxicity threshold between 0 and .99 with the higher numbers being the most toxic -# Anything higher than this threshold will be marked as toxic and commented on -sentimentBotToxicityThreshold: .7 - -# *Required* Comment to reply with -sentimentBotReplyComment: > - Please be sure to review the [code of conduct](https://github.com/nlohmann/json/blob/develop/CODE_OF_CONDUCT.md) and be respectful of other users. cc/ @nlohmann - - -# Configuration for request-info - https://github.com/behaviorbot/request-info - -# *Required* Comment to reply with -requestInfoReplyComment: > - We would appreciate it if you could provide us with more info about this issue or pull request! Please check the [issue template](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE.md) and the [pull request template](https://github.com/nlohmann/json/blob/develop/.github/PULL_REQUEST_TEMPLATE.md). - -# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given -requestInfoLabelToAdd: "state: needs more info" diff --git a/extern/nlohmann-json/.github/external_ci/.drone.yml b/extern/nlohmann-json/.github/external_ci/.drone.yml deleted file mode 100644 index 0d9e3d0be..000000000 --- a/extern/nlohmann-json/.github/external_ci/.drone.yml +++ /dev/null @@ -1,22 +0,0 @@ -kind: pipeline -name: test-on-arm64 - -platform: - arch: arm64 - -steps: -- name: build - image: gcc - commands: - - wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz - - tar xfz cmake-3.20.2.tar.gz - - cd cmake-3.20.2 - - ./configure - - make cmake ctest -j10 - - cd .. - - mkdir build - - cd build - - ../cmake-3.20.2/bin/cmake .. -DJSON_FastTests=ON - - make -j10 - - cd tests - - ../../cmake-3.20.2/bin/ctest -j10 diff --git a/extern/nlohmann-json/.github/external_ci/appveyor.yml b/extern/nlohmann-json/.github/external_ci/appveyor.yml deleted file mode 100644 index 126ed99b3..000000000 --- a/extern/nlohmann-json/.github/external_ci/appveyor.yml +++ /dev/null @@ -1,91 +0,0 @@ -version: '{build}' - -# only build PRs and commits to develop branch -# (see https://help.appveyor.com/discussions/questions/55079-two-builds-per-commit-to-pull-request) -branches: - only: - - develop - -only_commits: - files: - - .github/external_ci/appveyor.yml - - cmake/ - - include/ - - tests/ - - CMakeLists.txt - -environment: - matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - configuration: Debug - platform: x86 - CXX_FLAGS: "/W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 14 2015 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - configuration: Release - platform: x86 - CXX_FLAGS: "/W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 14 2015 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - configuration: Release - platform: x86 - name: with_win_header - CXX_FLAGS: "/W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 14 2015 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - configuration: Release - platform: x86 - CXX_FLAGS: "/permissive- /std:c++latest /utf-8 /W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 15 2017 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - configuration: Release - platform: x86 - CXX_FLAGS: "/W4 /WX" - CMAKE_OPTIONS: "-DJSON_ImplicitConversions=OFF" - GENERATOR: Visual Studio 16 2019 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - configuration: Release - platform: x64 - CXX_FLAGS: "/W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 14 2015 - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - configuration: Release - platform: x64 - CXX_FLAGS: "/permissive- /std:c++latest /Zc:__cplusplus /utf-8 /W4 /WX" - CMAKE_OPTIONS: "" - GENERATOR: Visual Studio 15 2017 - -init: - - cmake --version - - msbuild /version - -install: - - if "%platform%"=="x86" set GENERATOR_PLATFORM=Win32 - -before_build: - # for with_win_header build, inject the inclusion of Windows.h to the single-header library - - ps: if ($env:name -Eq "with_win_header") { $header_path = "single_include\nlohmann\json.hpp" } - - ps: if ($env:name -Eq "with_win_header") { "#include `n" + (Get-Content $header_path | Out-String) | Set-Content $header_path } - - cmake . -G "%GENERATOR%" -A "%GENERATOR_PLATFORM%" -DCMAKE_CXX_FLAGS="%CXX_FLAGS%" -DCMAKE_IGNORE_PATH="C:/Program Files/Git/usr/bin" -DJSON_BuildTests=On "%CMAKE_OPTIONS%" - -build_script: - - cmake --build . --config "%configuration%" --parallel 2 - -test_script: - - if "%configuration%"=="Release" ctest -C "%configuration%" --parallel 2 --output-on-failure - # On Debug builds, skip test-unicode_all - # as it is extremely slow to run and cause - # occasional timeouts on AppVeyor. - # More info: https://github.com/nlohmann/json/pull/1570 - - if "%configuration%"=="Debug" ctest --exclude-regex "test-unicode" -C "%configuration%" --parallel 2 --output-on-failure diff --git a/extern/nlohmann-json/.github/labeler.yml b/extern/nlohmann-json/.github/labeler.yml deleted file mode 100644 index 024d3e6da..000000000 --- a/extern/nlohmann-json/.github/labeler.yml +++ /dev/null @@ -1,38 +0,0 @@ -version: 1 - -labels: -- label: "documentation" - files: - - "README.md" - -- label: "documentation" - files: - - "docs/.*" - -- label: "tests" - files: - - "tests/.*" - -- label: "CMake" - files: - - ".*CMakeLists.txt" - -- label: "CMake" - files: - - "cmake/.*" - -- label: "CI" - files: - - "github/workflows/.*" - -- label: "CI" - files: - - "github/external_ci/.*" - -- label: "S" - size-below: 10 -- label: "M" - size-above: 9 - size-below: 100 -- label: "L" - size-above: 100 diff --git a/extern/nlohmann-json/.github/stale.yml b/extern/nlohmann-json/.github/stale.yml deleted file mode 100644 index d30c78be7..000000000 --- a/extern/nlohmann-json/.github/stale.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: "state: stale" -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/extern/nlohmann-json/.github/workflows/codeql-analysis.yml b/extern/nlohmann-json/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 7ba83ac1c..000000000 --- a/extern/nlohmann-json/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: "Code scanning - action" - -on: - push: - branches: - - develop - - master - - release/* - pull_request: - schedule: - - cron: '0 19 * * 1' - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref || github.run_id }} - cancel-in-progress: true - -jobs: - CodeQL-Build: - - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/extern/nlohmann-json/.github/workflows/labeler.yml b/extern/nlohmann-json/.github/workflows/labeler.yml deleted file mode 100644 index 66cb7eb34..000000000 --- a/extern/nlohmann-json/.github/workflows/labeler.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: "Pull Request Labeler" - -on: - pull_request_target: - types: [opened, synchronize] - -jobs: - label: - permissions: - contents: read - pull-requests: write - - runs-on: ubuntu-latest - - steps: - - uses: srvaroa/labeler@master - env: - GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/extern/nlohmann-json/.github/workflows/macos.yml b/extern/nlohmann-json/.github/workflows/macos.yml deleted file mode 100644 index 7eaedd73c..000000000 --- a/extern/nlohmann-json/.github/workflows/macos.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: macOS - -on: - push: - branches: - - develop - - master - - release/* - pull_request: - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref || github.run_id }} - cancel-in-progress: true - -jobs: - xcode_1: - runs-on: macos-11 - strategy: - matrix: - xcode: ['11.7', '12.4', '12.5.1', '13.0'] - env: - DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 --output-on-failure - - xcode_2: - runs-on: macos-12 - strategy: - matrix: - xcode: ['13.1', '13.2.1', '13.3.1', '13.4.1'] - env: - DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 --output-on-failure - - xcode_standards: - runs-on: macos-latest - strategy: - matrix: - standard: [11, 14, 17, 20] - env: - DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_TestStandards=${{ matrix.standard }} - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 --output-on-failure diff --git a/extern/nlohmann-json/.github/workflows/publish_documentation.yml b/extern/nlohmann-json/.github/workflows/publish_documentation.yml deleted file mode 100644 index 65c42a74e..000000000 --- a/extern/nlohmann-json/.github/workflows/publish_documentation.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Publish documentation - -# publish the documentation on every merge to develop branch -on: - push: - branches: - - develop - paths: - - docs/mkdocs/** - - docs/examples/** - workflow_dispatch: - -# we don't want to have concurrent jobs, and we don't want to cancel running jobs to avoid broken publications -concurrency: - group: documentation - cancel-in-progress: false - -jobs: - publish_documentation: - if: github.repository == 'nlohmann/json' - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v3 - - - name: Install and update PlantUML - run: sudo apt-get update ; sudo apt-get install -y plantuml - - - name: Install virtual environment - run: make install_venv -C docs/mkdocs - - - name: Publish documentation - run: make publish -C docs/mkdocs diff --git a/extern/nlohmann-json/.github/workflows/ubuntu.yml b/extern/nlohmann-json/.github/workflows/ubuntu.yml deleted file mode 100644 index eff653cc4..000000000 --- a/extern/nlohmann-json/.github/workflows/ubuntu.yml +++ /dev/null @@ -1,162 +0,0 @@ -name: Ubuntu - -on: - push: - branches: - - develop - - master - - release/* - pull_request: - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref || github.run_id }} - cancel-in-progress: true - -jobs: - ci_test_clang: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_clang - - ci_test_gcc: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_gcc - - ci_static_analysis: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - strategy: - matrix: - target: [ci_clang_tidy, ci_cppcheck, ci_test_valgrind, ci_test_clang_sanitizer, ci_test_amalgamation, ci_clang_analyze, ci_cpplint, ci_cmake_flags, ci_single_binaries, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata, ci_infer] - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ${{ matrix.target }} - - ci_test_single_header: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_single_header - - ci_cmake_options: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - strategy: - matrix: - target: [ci_test_diagnostics, ci_test_noexceptions, ci_test_noimplicitconversions, ci_test_legacycomparison, ci_test_noglobaludls] - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ${{ matrix.target }} - - ci_test_coverage: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_coverage - - name: Archive coverage report - uses: actions/upload-artifact@v3 - with: - name: code-coverage-report - path: ${{ github.workspace }}/build/html - - name: Publish report to Coveralls - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - path-to-lcov: ${{ github.workspace }}/build/json.info.filtered.noexcept - - ci_test_compilers: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - strategy: - matrix: - compiler: [g++-4.8, g++-4.9, g++-5, g++-6, g++-7, g++-8, g++-9, g++-10, g++-11, clang++-3.5, clang++-3.6, clang++-3.7, clang++-3.8, clang++-3.9, clang++-4.0, clang++-5.0, clang++-6.0, clang++-7, clang++-8, clang++-9, clang++-10, clang++-11, clang++-12, clang++-13, clang++-14] - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_compiler_${{ matrix.compiler }} - - ci_test_standards: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - strategy: - matrix: - standard: [11, 14, 17, 20] - compiler: [gcc, clang] - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_test_${{ matrix.compiler }}_cxx${{ matrix.standard }} - - ci_cuda_example: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.4.0 - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ci_cuda_example - - ci_icpc: - runs-on: ubuntu-latest - container: ghcr.io/nlohmann/json-ci:v2.2.0 - steps: - - uses: actions/checkout@v2 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: | - . /opt/intel/oneapi/setvars.sh - cmake --build build --target ci_icpc - - ci_reuse_compliance: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 - - name: Install REUSE tool - run: python -m pip install reuse - - name: Run REUSE lint - run: reuse lint - - ci_test_documentation: - runs-on: ubuntu-latest - strategy: - matrix: - target: [ci_test_examples, ci_test_api_documentation] - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -DJSON_CI=On - - name: Build - run: cmake --build build --target ${{ matrix.target }} diff --git a/extern/nlohmann-json/.github/workflows/windows.yml b/extern/nlohmann-json/.github/workflows/windows.yml deleted file mode 100644 index fb4b893d6..000000000 --- a/extern/nlohmann-json/.github/workflows/windows.yml +++ /dev/null @@ -1,151 +0,0 @@ -name: Windows - -on: - push: - branches: - - develop - - master - - release/* - pull_request: - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref || github.run_id }} - cancel-in-progress: true - -jobs: - mingw: - runs-on: windows-latest - strategy: - matrix: - architecture: [x64, x86] - - steps: - - uses: actions/checkout@v3 - - name: Download MinGW 8.1.0 - run: | - $headers = @{Authorization = 'Bearer ${{ secrets.GITHUB_TOKEN }}'} - $uri = 'https://nuget.pkg.github.com/falbrechtskirchinger/download/mingw/8.1.0/mingw.8.1.0.nupkg' - Invoke-WebRequest -Uri $uri -Headers $headers -OutFile mingw.8.1.0.nupkg - - name: Uninstall MinGW - continue-on-error: true - run: choco uninstall mingw - # Based on egor-tensin/setup-mingw - - name: Install MinGW 8.1.0 - run: | - choco install mingw.8.1.0.nupkg ${{ matrix.architecture == 'x86' && '--x86' || '' }} - $prefix = "${{ matrix.architecture == 'x64' && 'x86_64-w64-mingw32' || 'i686-w64-mingw32' }}" - $mingw = "${{ matrix.architecture == 'x64' && 'mingw64' || 'mingw32' }}" - $mingw_install = Join-Path C: ProgramData chocolatey lib mingw tools install - $mingw_root = Join-Path $mingw_install $mingw - $mingw_bin = Join-Path $mingw_root bin - $mingw_lib = Join-Path $mingw_root $prefix lib - echo $mingw_bin >> $env:GITHUB_PATH - Remove-Item (Join-Path $mingw_lib 'libpthread.dll.a') - Remove-Item (Join-Path $mingw_lib 'libwinpthread.dll.a') - #- name: Set up MinGW - # uses: egor-tensin/setup-mingw@v2 - # with: - # platform: ${{ matrix.architecture }} - - name: Run CMake - run: cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C Debug --output-on-failure - - msvc2019: - runs-on: windows-2019 - strategy: - matrix: - build_type: [Debug, Release] - architecture: [Win32, x64] - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX" - if: matrix.build_type == 'Release' - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX" - if: matrix.build_type == 'Debug' - - name: Build - run: cmake --build build --config ${{ matrix.build_type }} --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure - - msvc2019_latest: - runs-on: windows-2019 - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 16 2019" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX" - - name: Build - run: cmake --build build --config Release --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C Release --output-on-failure - - msvc2022: - runs-on: windows-2022 - strategy: - matrix: - build_type: [Debug, Release] - architecture: [Win32, x64] - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX" - if: matrix.build_type == 'Release' - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX" - if: matrix.build_type == 'Debug' - - name: Build - run: cmake --build build --config ${{ matrix.build_type }} --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure - - msvc2022_latest: - runs-on: windows-2022 - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 17 2022" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX" - - name: Build - run: cmake --build build --config Release --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C Release --output-on-failure - - clang: - runs-on: windows-2019 - strategy: - matrix: - version: [11, 12] - - steps: - - uses: actions/checkout@v3 - - name: Install Clang - run: curl -fsSL -o LLVM${{ matrix.version }}.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ matrix.version }}.0.0/LLVM-${{ matrix.version }}.0.0-win64.exe ; 7z x LLVM${{ matrix.version }}.exe -y -o"C:/Program Files/LLVM" - - name: Run CMake - run: cmake -S . -B build -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On - - name: Build - run: cmake --build build --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure - - clang-cl-11: - runs-on: windows-2019 - strategy: - matrix: - architecture: [Win32, x64] - - steps: - - uses: actions/checkout@v3 - - name: Run CMake - run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -T ClangCL -DJSON_BuildTests=On - - name: Build - run: cmake --build build --config Debug --parallel 10 - - name: Test - run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure diff --git a/extern/nlohmann-json/.gitignore b/extern/nlohmann-json/.gitignore deleted file mode 100644 index 30b62bfcf..000000000 --- a/extern/nlohmann-json/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -*.dSYM -*.o -*.gcno -*.gcda -.DS_Store - -.wsjcpp-logs/* -.wsjcpp/* - -/.idea -/cmake-build-* - -# Visual Studio / Visual Studio Code -/.vs/ -/.vscode/ -/out/ - -# clangd cache -/.cache/ - -# build directories (vscode-cmake-tools, user-defined, ...) -/build*/ - -# fuzzers -/tests/corpus_* -/tests/parse_*_fuzzer - -# documentation -/docs/docset/docSet.dsidx -/docs/docset/JSON_for_Modern_C++.docset/ -/docs/docset/JSON_for_Modern_C++.tgz -/docs/mkdocs/docs/__pycache__/ -/docs/mkdocs/docs/examples/ -/docs/mkdocs/docs/images/json.gif -/docs/mkdocs/site/ -/docs/mkdocs/venv/ - -# serve_header -/localhost.pem -/localhost-key.pem -/serve_header.yml diff --git a/extern/nlohmann-json/.lgtm.yml b/extern/nlohmann-json/.lgtm.yml deleted file mode 100644 index b62f9fb37..000000000 --- a/extern/nlohmann-json/.lgtm.yml +++ /dev/null @@ -1,4 +0,0 @@ -path_classifiers: - thirdparty: - - /tools/amalgamate - - /tools/cpplint diff --git a/extern/nlohmann-json/.reuse/README.md b/extern/nlohmann-json/.reuse/README.md deleted file mode 100644 index 29c2b67a1..000000000 --- a/extern/nlohmann-json/.reuse/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# REUSE Software - -This directory contains supporting files to make the project compliant with the REUSE specification. - -The root `Makefile` contains a target `reuse` that updates copyright headers and checks for compliance. - -See for more information. diff --git a/extern/nlohmann-json/.reuse/dep5 b/extern/nlohmann-json/.reuse/dep5 deleted file mode 100644 index 610b8764b..000000000 --- a/extern/nlohmann-json/.reuse/dep5 +++ /dev/null @@ -1,36 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: json -Upstream-Contact: Niels Lohmann -Source: https://github.com/nlohmann/json - -Files: * -Copyright: 2013-2022 Niels Lohmann -License: MIT - -Files: tests/thirdparty/doctest/* -Copyright: 2016-2021 Viktor Kirilov -License: MIT - -Files: tests/thirdparty/fifo_map/* -Copyright: 2015-2017 Niels Lohmann -License: MIT - -Files: tests/thirdparty/Fuzzer/* -Copyright: 2003-2022, LLVM Project. -License: Apache-2.0 - -Files: tests/thirdparty/imapdl/* -Copyright: 2017 Georg Sauthoff -License: GPL-3.0-only - -Files: tools/amalgamate/* -Copyright: 2012 Erik Edlund -License: BSD-3-Clause - -Files: tools/cpplint/* -Copyright: 2009 Google Inc. All rights reserved. -License: BSD-3-Clause - -Files: tools/gdb_pretty_printer -Copyright: 2020 Hannes Domani -License: MIT diff --git a/extern/nlohmann-json/.reuse/templates/json.jinja2 b/extern/nlohmann-json/.reuse/templates/json.jinja2 deleted file mode 100644 index 4abf481b7..000000000 --- a/extern/nlohmann-json/.reuse/templates/json.jinja2 +++ /dev/null @@ -1,11 +0,0 @@ - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.11.2 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -{% for copyright_line in copyright_lines %} -{{ copyright_line }} -{% endfor %} -{% for expression in spdx_expressions %} -SPDX-License-Identifier: {{ expression }} -{% endfor %} diff --git a/extern/nlohmann-json/.reuse/templates/json_support.jinja2 b/extern/nlohmann-json/.reuse/templates/json_support.jinja2 deleted file mode 100644 index 1fab99fab..000000000 --- a/extern/nlohmann-json/.reuse/templates/json_support.jinja2 +++ /dev/null @@ -1,11 +0,0 @@ - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ (supporting code) -| | |__ | | | | | | version 3.11.2 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -{% for copyright_line in copyright_lines %} -{{ copyright_line }} -{% endfor %} -{% for expression in spdx_expressions %} -SPDX-License-Identifier: {{ expression }} -{% endfor %} diff --git a/extern/nlohmann-json/CITATION.cff b/extern/nlohmann-json/CITATION.cff deleted file mode 100644 index cc9d7022d..000000000 --- a/extern/nlohmann-json/CITATION.cff +++ /dev/null @@ -1,14 +0,0 @@ -cff-version: 1.2.0 -message: "If you use this software, please cite it as below." -authors: - - family-names: Lohmann - given-names: Niels - orcid: https://orcid.org/0000-0001-9037-795X - email: mail@nlohmann.me - website: https://nlohmann.me -title: "JSON for Modern C++" -version: 3.11.2 -date-released: 2022-08-12 -license: MIT -repository-code: "https://github.com/nlohmann" -url: https://json.nlohmann.me diff --git a/extern/nlohmann-json/CMakeLists.txt b/extern/nlohmann-json/CMakeLists.txt deleted file mode 100644 index d88feb5c2..000000000 --- a/extern/nlohmann-json/CMakeLists.txt +++ /dev/null @@ -1,209 +0,0 @@ -cmake_minimum_required(VERSION 3.1) - -## -## PROJECT -## name and version -## -project(nlohmann_json VERSION 3.11.2 LANGUAGES CXX) - -## -## MAIN_PROJECT CHECK -## determine if nlohmann_json is built as a subproject (using add_subdirectory) or if it is the main project -## -set(MAIN_PROJECT OFF) -if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) - set(MAIN_PROJECT ON) -endif() - -## -## INCLUDE -## -## -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) -include(ExternalProject) - -## -## OPTIONS -## - -if (POLICY CMP0077) - # Allow CMake 3.13+ to override options when using FetchContent / add_subdirectory. - cmake_policy(SET CMP0077 NEW) -endif () - -# VERSION_GREATER_EQUAL is not available in CMake 3.1 -if(${MAIN_PROJECT} AND (${CMAKE_VERSION} VERSION_EQUAL 3.13 OR ${CMAKE_VERSION} VERSION_GREATER 3.13)) - set(JSON_BuildTests_INIT ON) -else() - set(JSON_BuildTests_INIT OFF) -endif() -option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ${JSON_BuildTests_INIT}) -option(JSON_CI "Enable CI build targets." OFF) -option(JSON_Diagnostics "Use extended diagnostic messages." OFF) -option(JSON_GlobalUDLs "Place use-defined string literals in the global namespace." ON) -option(JSON_ImplicitConversions "Enable implicit conversions." ON) -option(JSON_DisableEnumSerialization "Disable default integer enum serialization." OFF) -option(JSON_LegacyDiscardedValueComparison "Enable legacy discarded value comparison." OFF) -option(JSON_Install "Install CMake targets during install step." ${MAIN_PROJECT}) -option(JSON_MultipleHeaders "Use non-amalgamated version of the library." ON) -option(JSON_SystemInclude "Include as system headers (skip for clang-tidy)." OFF) - -if (JSON_CI) - include(ci) -endif () - -## -## CONFIGURATION -## -include(GNUInstallDirs) - -set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) -set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}" CACHE INTERNAL "") -set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") -set(NLOHMANN_JSON_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") -set(NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE "cmake/config.cmake.in") -set(NLOHMANN_JSON_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}") -set(NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}ConfigVersion.cmake") -set(NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Config.cmake") -set(NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Targets.cmake") -set(NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/pkgconfig") - -if (JSON_MultipleHeaders) - set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/include/") - message(STATUS "Using the multi-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}") -else() - set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/single_include/") - message(STATUS "Using the single-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}") -endif() - -if (NOT JSON_ImplicitConversions) - message(STATUS "Implicit conversions are disabled") -endif() - -if (JSON_DisableEnumSerialization) - message(STATUS "Enum integer serialization is disabled") -endif() - -if (JSON_LegacyDiscardedValueComparison) - message(STATUS "Legacy discarded value comparison enabled") -endif() - -if (JSON_Diagnostics) - message(STATUS "Diagnostics enabled") -endif() - -if (JSON_SystemInclude) - set(NLOHMANN_JSON_SYSTEM_INCLUDE "SYSTEM") -endif() - -## -## TARGET -## create target and add include path -## -add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE) -add_library(${PROJECT_NAME}::${NLOHMANN_JSON_TARGET_NAME} ALIAS ${NLOHMANN_JSON_TARGET_NAME}) -if (${CMAKE_VERSION} VERSION_LESS "3.8.0") - target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_range_for) -else() - target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_std_11) -endif() - -target_compile_definitions( - ${NLOHMANN_JSON_TARGET_NAME} - INTERFACE - $<$>:JSON_USE_GLOBAL_UDLS=0> - $<$>:JSON_USE_IMPLICIT_CONVERSIONS=0> - $<$:JSON_DISABLE_ENUM_SERIALIZATION=1> - $<$:JSON_DIAGNOSTICS=1> - $<$:JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON=1> -) - -target_include_directories( - ${NLOHMANN_JSON_TARGET_NAME} - ${NLOHMANN_JSON_SYSTEM_INCLUDE} INTERFACE - $ - $ -) - -## add debug view definition file for msvc (natvis) -if (MSVC) - set(NLOHMANN_ADD_NATVIS TRUE) - set(NLOHMANN_NATVIS_FILE "nlohmann_json.natvis") - target_sources( - ${NLOHMANN_JSON_TARGET_NAME} - INTERFACE - $ - $ - ) -endif() - -# Install a pkg-config file, so other tools can find this. -CONFIGURE_FILE( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkg-config.pc.in" - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" -) - -## -## TESTS -## create and configure the unit test target -## -if (JSON_BuildTests) - include(CTest) - enable_testing() - add_subdirectory(tests) -endif() - -## -## INSTALL -## install header files, generate and install cmake config files for find_package() -## -include(CMakePackageConfigHelpers) -# use a custom package version config file instead of -# write_basic_package_version_file to ensure that it's architecture-independent -# https://github.com/nlohmann/json/issues/1697 -configure_file( - "cmake/nlohmann_jsonConfigVersion.cmake.in" - ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} - @ONLY -) -configure_file( - ${NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE} - ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} - @ONLY -) - -if(JSON_Install) - install( - DIRECTORY ${NLOHMANN_JSON_INCLUDE_BUILD_DIR} - DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR} - ) - install( - FILES ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} - DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR} - ) - if (NLOHMANN_ADD_NATVIS) - install( - FILES ${NLOHMANN_NATVIS_FILE} - DESTINATION . - ) - endif() - export( - TARGETS ${NLOHMANN_JSON_TARGET_NAME} - NAMESPACE ${PROJECT_NAME}:: - FILE ${NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE} - ) - install( - TARGETS ${NLOHMANN_JSON_TARGET_NAME} - EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME} - INCLUDES DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR} - ) - install( - EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME} - NAMESPACE ${PROJECT_NAME}:: - DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR} - ) - install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" - DESTINATION ${NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR} - ) -endif() diff --git a/extern/nlohmann-json/ChangeLog.md b/extern/nlohmann-json/ChangeLog.md deleted file mode 100644 index 656d68bcf..000000000 --- a/extern/nlohmann-json/ChangeLog.md +++ /dev/null @@ -1,2943 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). - -## [3.11.2](https://github.com/nlohmann/json/releases/tag/3.11.2) (2022-08-12) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.11.1...3.11.2) - -- MSVC natvis visualizer does not work after introduction of inline ABI namespace [\#3696](https://github.com/nlohmann/json/issues/3696) -- The use of parenthesis gives compilation errors in some situations [\#3682](https://github.com/nlohmann/json/issues/3682) -- extern from/to\_json result in linker error [\#3657](https://github.com/nlohmann/json/issues/3657) -- json\_fwd.hpp no longer standalone [\#3656](https://github.com/nlohmann/json/issues/3656) -- regression: `.value` is compilation error. [\#3655](https://github.com/nlohmann/json/issues/3655) -- Regression: no match for 'operator!=' comparing json\_pointer and const char \*/string\_t [\#3654](https://github.com/nlohmann/json/issues/3654) -- Regression: call to member function 'value' is ambiguous [\#3652](https://github.com/nlohmann/json/issues/3652) -- macOS 10.15 Actions runner image deprecation [\#3612](https://github.com/nlohmann/json/issues/3612) - -- generate\_natvis.py: validate version number; cleanup [\#3698](https://github.com/nlohmann/json/pull/3698) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add Python script for generating Natvis file and update file for 3.11.2 [\#3697](https://github.com/nlohmann/json/pull/3697) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- fix typo in json\_pointer.md [\#3692](https://github.com/nlohmann/json/pull/3692) ([eltociear](https://github.com/eltociear)) -- Add amalgamated json-fwd.hpp to release [\#3687](https://github.com/nlohmann/json/pull/3687) ([nlohmann](https://github.com/nlohmann)) -- Documentation updates for 3.11.2 [\#3686](https://github.com/nlohmann/json/pull/3686) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Make json\_pointer usable as map key \(again\) [\#3685](https://github.com/nlohmann/json/pull/3685) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Deprecate json\_pointer/string\_t comparisons [\#3684](https://github.com/nlohmann/json/pull/3684) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Restructure inline namespace and allow version component to be disabled [\#3683](https://github.com/nlohmann/json/pull/3683) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Properly constrain non-string json\_pointer overloads [\#3681](https://github.com/nlohmann/json/pull/3681) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Amalgamate the forward declaration header [\#3679](https://github.com/nlohmann/json/pull/3679) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix 'const' qualifier on bool& has no effect [\#3678](https://github.com/nlohmann/json/pull/3678) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix whitespace in workflow files [\#3675](https://github.com/nlohmann/json/pull/3675) ([nlohmann](https://github.com/nlohmann)) -- Attempt to fix labeler permissions [\#3674](https://github.com/nlohmann/json/pull/3674) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Refine 'Publish documentation' workflow [\#3673](https://github.com/nlohmann/json/pull/3673) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Documentation change [\#3672](https://github.com/nlohmann/json/pull/3672) ([nlohmann](https://github.com/nlohmann)) -- Add labeler action [\#3671](https://github.com/nlohmann/json/pull/3671) ([nlohmann](https://github.com/nlohmann)) -- Complete contributor list [\#3670](https://github.com/nlohmann/json/pull/3670) ([nlohmann](https://github.com/nlohmann)) -- Add json\_pointer/string\_t equality comparison operators [\#3664](https://github.com/nlohmann/json/pull/3664) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Reimplement value\(\) access functions [\#3663](https://github.com/nlohmann/json/pull/3663) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Complete contributor list [\#3662](https://github.com/nlohmann/json/pull/3662) ([nlohmann](https://github.com/nlohmann)) -- Adjust naming of GitHub action jobs [\#3661](https://github.com/nlohmann/json/pull/3661) ([nlohmann](https://github.com/nlohmann)) -- Publish documentation on push to develop branch [\#3660](https://github.com/nlohmann/json/pull/3660) ([nlohmann](https://github.com/nlohmann)) -- Add Discord badge to README [\#3651](https://github.com/nlohmann/json/pull/3651) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Miscellaneous small fixes [\#3643](https://github.com/nlohmann/json/pull/3643) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Minor BJData fixes [\#3637](https://github.com/nlohmann/json/pull/3637) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Update CI [\#3626](https://github.com/nlohmann/json/pull/3626) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - -## [v3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1) (2022-08-01) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.11.0...v3.11.1) - -- Regression: no matching literal operator for call to 'operator""\_json' [\#3645](https://github.com/nlohmann/json/issues/3645) -- \_json operator""\(\) [\#3644](https://github.com/nlohmann/json/issues/3644) - -- Fix global UDLs [\#3646](https://github.com/nlohmann/json/pull/3646) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) - -## [v3.11.0](https://github.com/nlohmann/json/releases/tag/v3.11.0) (2022-08-01) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.5...v3.11.0) - -- ICPC: warning \#1098: the qualifier on this friend declaration is ignored [\#3632](https://github.com/nlohmann/json/issues/3632) -- Starting with 3.10.4, just adding `\#include json.hpp` causes compile error: `overload resolution selected deleted operator '=' [\#3620](https://github.com/nlohmann/json/issues/3620) -- xwidgets doesn't compile with version \>3.10.3 [\#3602](https://github.com/nlohmann/json/issues/3602) -- json\_pointer\_\_pop\_back.cpp example does not compile [\#3600](https://github.com/nlohmann/json/issues/3600) -- nlohmann::json::array 'push\_back' is ambiguous [\#3589](https://github.com/nlohmann/json/issues/3589) -- Multiple versions causing conflict [\#3588](https://github.com/nlohmann/json/issues/3588) -- ERROR: ThreadSanitizer: SEGV on unknown address [\#3584](https://github.com/nlohmann/json/issues/3584) -- unicode4 test consistently fails on RISC-V hardware [\#3579](https://github.com/nlohmann/json/issues/3579) -- sax\_parse\(iterator, json\_sax\_t \*\) string callback clobbers spaces [\#3574](https://github.com/nlohmann/json/issues/3574) -- Nlohmann JSON Parse crash with raylib-cpp [\#3570](https://github.com/nlohmann/json/issues/3570) -- ordered\_json doesn't accept keys of types other than string\_t \(e.g., string\_view\) [\#3558](https://github.com/nlohmann/json/issues/3558) -- turning an object into an array [\#3547](https://github.com/nlohmann/json/issues/3547) -- json:parse\_bjdata\_fuzzer: ASSERT: ref\_stack.back\(\)-\>is\_array\(\) [\#3541](https://github.com/nlohmann/json/issues/3541) -- Warning about potential null dereference in GCC 12.1 \(Fedora 36\) [\#3525](https://github.com/nlohmann/json/issues/3525) -- Enable 32bit unit test in CI [\#3524](https://github.com/nlohmann/json/issues/3524) -- Error when roundtripping BJData [\#3519](https://github.com/nlohmann/json/issues/3519) -- ASSERT error while parsing BJData [\#3513](https://github.com/nlohmann/json/issues/3513) -- An exception occurred when sending a string with double quotes [\#3504](https://github.com/nlohmann/json/issues/3504) -- Binary reader for BJData creates incorrect SAX events [\#3503](https://github.com/nlohmann/json/issues/3503) -- It can't support "nan", "inf", "-inf" for float type [\#3494](https://github.com/nlohmann/json/issues/3494) -- ASAN error while parsing BJData \(Heap-buffer-overflow READ 1\) [\#3492](https://github.com/nlohmann/json/issues/3492) -- UBSAN error while parsing BJData \(Null-dereference\) [\#3491](https://github.com/nlohmann/json/issues/3491) -- UBSAN error while parsing BJData \(Invalid-bool-value\) [\#3490](https://github.com/nlohmann/json/issues/3490) -- json:parse\_bjdata\_fuzzer reaches assertion [\#3475](https://github.com/nlohmann/json/issues/3475) -- Compilation with -fmodules-ts and use inside of a module [\#3472](https://github.com/nlohmann/json/issues/3472) -- json.exception.parse\_error.101 only occurs outside of IDE [\#3467](https://github.com/nlohmann/json/issues/3467) -- json:parse\_bjdata\_fuzzer reaches assertion [\#3461](https://github.com/nlohmann/json/issues/3461) -- NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE\_WITH\_DEFAULT can not parse { "key" : null} [\#3458](https://github.com/nlohmann/json/issues/3458) -- Unable to compile when using Microsoft's \_CRTDBG [\#3457](https://github.com/nlohmann/json/issues/3457) -- Compilation errors when including `` and using `--std=c++17` or above \(MinGW/Win10\) [\#3449](https://github.com/nlohmann/json/issues/3449) -- Weird things on for statement [\#3447](https://github.com/nlohmann/json/issues/3447) -- Parsing error when there is a json string within a Json [\#3445](https://github.com/nlohmann/json/issues/3445) -- ordered\_json vs json types comparison [\#3443](https://github.com/nlohmann/json/issues/3443) -- Error occurred when converting nlohmann::json to std::any [\#3428](https://github.com/nlohmann/json/issues/3428) -- I was forced to report an assertion error when copying an array of strings [\#3419](https://github.com/nlohmann/json/issues/3419) -- About Serialization Error invalid UTF-8 byte at index [\#3414](https://github.com/nlohmann/json/issues/3414) -- Comparison of NaN differs between json and float [\#3409](https://github.com/nlohmann/json/issues/3409) -- when i use it in C++ sserver,it it constantly show that fatal error: adl\_serializer.hpp: No such file or directory [\#3404](https://github.com/nlohmann/json/issues/3404) -- parse error [\#3403](https://github.com/nlohmann/json/issues/3403) -- CMake script MAIN\_PROJECT always OFF [\#3390](https://github.com/nlohmann/json/issues/3390) -- Parser unable to handle large floating point numbers [\#3389](https://github.com/nlohmann/json/issues/3389) -- Compilation error if json\_pointer is used with alternative string type [\#3388](https://github.com/nlohmann/json/issues/3388) -- Unit tests conversions & items fail to build \(Clang \<4.0/C++14 only\) [\#3384](https://github.com/nlohmann/json/issues/3384) -- Regression test for \#3070 is not being run and fails when enabled [\#3377](https://github.com/nlohmann/json/issues/3377) -- Refactor unit tests to use more convenient doctest assertion macros [\#3365](https://github.com/nlohmann/json/issues/3365) -- An json.h issue reported in a static code analyzer [\#3361](https://github.com/nlohmann/json/issues/3361) -- Mixing different JSON\_DIAGNOSTICS settings in separately compiled units leads to core [\#3360](https://github.com/nlohmann/json/issues/3360) -- json::out\_of\_range exception matches against lot of others while testing [\#3352](https://github.com/nlohmann/json/issues/3352) -- use mipsel-openwrt-linux-g++ -std=c++11 to compile, it has some errors "error: 'snprintf' is not a member of 'std'" [\#3349](https://github.com/nlohmann/json/issues/3349) -- Add proper issue templates [\#3348](https://github.com/nlohmann/json/issues/3348) -- switch from json to ordered\_json [\#3343](https://github.com/nlohmann/json/issues/3343) -- Json dump use to compilation errors [\#3339](https://github.com/nlohmann/json/issues/3339) -- Ambiguous conversion from nlohmann::basic\_json\<\> to custom class. [\#3333](https://github.com/nlohmann/json/issues/3333) -- Iterator doesn't satisfy std::incrementable because post-increment may change constness [\#3331](https://github.com/nlohmann/json/issues/3331) -- Inconsistent handling of floating point numbers after parse\(\) [\#3329](https://github.com/nlohmann/json/issues/3329) -- Documentation for `ordered_json` should show proper use of the `parse()` function. [\#3325](https://github.com/nlohmann/json/issues/3325) -- "type must be boolean, but is object" error thrown on non-boolean object [\#3319](https://github.com/nlohmann/json/issues/3319) -- Incomplete Type in request parms [\#3318](https://github.com/nlohmann/json/issues/3318) -- 小米 MIX4 MIUI13 bug [\#3316](https://github.com/nlohmann/json/issues/3316) -- json.exception.parse\_error.101 when parsing data received over a socket [\#3313](https://github.com/nlohmann/json/issues/3313) -- Parse to custom class from unordered\_json breaks on G++11.2.0 with C++20 [\#3312](https://github.com/nlohmann/json/issues/3312) -- try to assign dumped string to a class member varible [\#3300](https://github.com/nlohmann/json/issues/3300) -- includedir in pkgconfig is error if install\_headers\(\) has subdir argument. [\#3284](https://github.com/nlohmann/json/issues/3284) -- SHA-256 sum of json-3.10.5.tar.xz changes over time \(but not the content itself\) [\#3281](https://github.com/nlohmann/json/issues/3281) -- items\(\) method does not follow order of json message [\#3278](https://github.com/nlohmann/json/issues/3278) -- Perplexing template deduction failure serialising a 3rd party type using base class [\#3267](https://github.com/nlohmann/json/issues/3267) -- json.hpp 'isfinite' is not a member of 'std' also isinf; snprintf; stoull and to\_string members of std [\#3263](https://github.com/nlohmann/json/issues/3263) -- JSON build fails for C++ cmake [\#3256](https://github.com/nlohmann/json/issues/3256) -- Unexpected implicit conversion [\#3254](https://github.com/nlohmann/json/issues/3254) -- Add a function that checks for valid json in a C++ string [\#3245](https://github.com/nlohmann/json/issues/3245) -- Replace use of standard IO from error handling [\#3239](https://github.com/nlohmann/json/issues/3239) -- Use Catch for unit tests [\#3232](https://github.com/nlohmann/json/issues/3232) -- Exception thrown during initialization causes a memory leak [\#3215](https://github.com/nlohmann/json/issues/3215) -- Tests failing when compiling with c++20 [\#3207](https://github.com/nlohmann/json/issues/3207) -- ambiguous regression [\#3204](https://github.com/nlohmann/json/issues/3204) -- Deserialization: if class is\_constructible from std::string wrong from\_json overload is being selected, compilation failed [\#3171](https://github.com/nlohmann/json/issues/3171) -- 'clang++ ./json.hpp' with no usage: Compiler syntax problem in clang 3.7.0 \(tizen :/ \) [\#3153](https://github.com/nlohmann/json/issues/3153) -- build failure on upcoming gcc-12: test/src/unit-regression1.cpp:392:22: error: ambiguous overload for 'operator=' [\#3138](https://github.com/nlohmann/json/issues/3138) -- Applying JSON patch creates parent object [\#3134](https://github.com/nlohmann/json/issues/3134) -- Iterators cannot be used with range-v3 [\#3130](https://github.com/nlohmann/json/issues/3130) -- std::shared\_ptr\ == nlohmann::json compiles, which seem undesirable [\#3026](https://github.com/nlohmann/json/issues/3026) -- Error in test\download\_test\_data.vcxproj custom build step when compiling with Visual Studio 2019 16.7.7 msbuild on Windows 10 [\#2593](https://github.com/nlohmann/json/issues/2593) -- Consider putting the user-defined literals in a namespace [\#1682](https://github.com/nlohmann/json/issues/1682) -- Using versioned namespaces [\#1539](https://github.com/nlohmann/json/issues/1539) -- How can I use std::string\_view as the json\_key to "operator \[\]" ? [\#1529](https://github.com/nlohmann/json/issues/1529) -- serialize std::variant\<...\> [\#1261](https://github.com/nlohmann/json/issues/1261) - -- Prepare 3.11.0 release [\#3635](https://github.com/nlohmann/json/pull/3635) ([nlohmann](https://github.com/nlohmann)) -- Fix warning [\#3634](https://github.com/nlohmann/json/pull/3634) ([nlohmann](https://github.com/nlohmann)) -- Add license header to new files [\#3633](https://github.com/nlohmann/json/pull/3633) ([nlohmann](https://github.com/nlohmann)) -- Add a unit test including windows.h [\#3631](https://github.com/nlohmann/json/pull/3631) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fixed latest build error in msvc platform [\#3630](https://github.com/nlohmann/json/pull/3630) ([KsaNL](https://github.com/KsaNL)) -- Add regression tests for \#3204 and \#3333 [\#3629](https://github.com/nlohmann/json/pull/3629) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix patch::add creating nonexistent parents [\#3628](https://github.com/nlohmann/json/pull/3628) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Adjust JSON Pointer examples [\#3622](https://github.com/nlohmann/json/pull/3622) ([nlohmann](https://github.com/nlohmann)) -- Disable exceptions on ICPC [\#3621](https://github.com/nlohmann/json/pull/3621) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- build: install .pc and .cmake files to share/ [\#3619](https://github.com/nlohmann/json/pull/3619) ([Tachi107](https://github.com/Tachi107)) -- Fix MinGW CI failures [\#3618](https://github.com/nlohmann/json/pull/3618) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix Unicode test timeout \(for real this time!\) [\#3614](https://github.com/nlohmann/json/pull/3614) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Use 'concurrency' in GitHub workflows [\#3610](https://github.com/nlohmann/json/pull/3610) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Use swap\(\) by ADL [\#3609](https://github.com/nlohmann/json/pull/3609) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Move UDLs out of the global namespace [\#3605](https://github.com/nlohmann/json/pull/3605) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Re-add value\_type detection to distinguish string types [\#3604](https://github.com/nlohmann/json/pull/3604) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add operator\<\<\(json\_pointer\) [\#3601](https://github.com/nlohmann/json/pull/3601) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add documentation for comparing json and ordered\_json [\#3599](https://github.com/nlohmann/json/pull/3599) ([nlohmann](https://github.com/nlohmann)) -- Clean up after \#3581 [\#3596](https://github.com/nlohmann/json/pull/3596) ([nlohmann](https://github.com/nlohmann)) -- Add assertion if nullptr is passed to parse function [\#3593](https://github.com/nlohmann/json/pull/3593) ([nlohmann](https://github.com/nlohmann)) -- Minor documentation fixes [\#3592](https://github.com/nlohmann/json/pull/3592) ([nlohmann](https://github.com/nlohmann)) -- Add versioned, ABI-tagged inline namespace and namespace macros [\#3590](https://github.com/nlohmann/json/pull/3590) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add badge for https://repology.org/project/nlohmann-json/versions [\#3586](https://github.com/nlohmann/json/pull/3586) ([nlohmann](https://github.com/nlohmann)) -- Add error message if test suite cannot be found [\#3585](https://github.com/nlohmann/json/pull/3585) ([nlohmann](https://github.com/nlohmann)) -- add patch\_inplace function [\#3581](https://github.com/nlohmann/json/pull/3581) ([wolfv](https://github.com/wolfv)) -- Enable overriding test properties and set Unicode test timeouts [\#3580](https://github.com/nlohmann/json/pull/3580) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Ignore output directory [\#3572](https://github.com/nlohmann/json/pull/3572) ([NN---](https://github.com/NN---)) -- Optimize output vector adapter write [\#3569](https://github.com/nlohmann/json/pull/3569) ([romainreignier](https://github.com/romainreignier)) -- Add overloads for more key types to ordered\_map and fix ordered\_map::erase\(first, last\) with first == last [\#3564](https://github.com/nlohmann/json/pull/3564) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Make certain usage patterns more prominent in the README [\#3557](https://github.com/nlohmann/json/pull/3557) ([jez](https://github.com/jez)) -- CI: fix "JSON\_MultipleHeaders" option spelling [\#3555](https://github.com/nlohmann/json/pull/3555) ([karzhenkov](https://github.com/karzhenkov)) -- More documentation updates for 3.11.0 [\#3553](https://github.com/nlohmann/json/pull/3553) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Use DOCTEST\_\* compiler macros and suppress pragmas warning [\#3550](https://github.com/nlohmann/json/pull/3550) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add unit test to make sure iterator\_input\_adapter advances iterators correctly [\#3548](https://github.com/nlohmann/json/pull/3548) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Use REUSE framework [\#3546](https://github.com/nlohmann/json/pull/3546) ([nlohmann](https://github.com/nlohmann)) -- Use `std::iterator_traits` to extract `iterator_category` [\#3544](https://github.com/nlohmann/json/pull/3544) ([Mike-Leo-Smith](https://github.com/Mike-Leo-Smith)) -- BJData dimension length can not be string\_t::npos, fix \#3541 [\#3543](https://github.com/nlohmann/json/pull/3543) ([fangq](https://github.com/fangq)) -- Allow disabling default enum conversions [\#3536](https://github.com/nlohmann/json/pull/3536) ([zxey](https://github.com/zxey)) -- Add to\_json\(\) for std::vector\::reference [\#3534](https://github.com/nlohmann/json/pull/3534) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- CI: Enable 32bit unit test \(3\) [\#3532](https://github.com/nlohmann/json/pull/3532) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Use new CI image [\#3528](https://github.com/nlohmann/json/pull/3528) ([nlohmann](https://github.com/nlohmann)) -- Fix ndarray dimension signedness, fix ndarray length overflow \(2\); add 32bit unit test [\#3523](https://github.com/nlohmann/json/pull/3523) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Small documentation fixes [\#3520](https://github.com/nlohmann/json/pull/3520) ([nlohmann](https://github.com/nlohmann)) -- Add assertion to converting constructor [\#3517](https://github.com/nlohmann/json/pull/3517) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- CI: Remove -Wstrict-overflow [\#3516](https://github.com/nlohmann/json/pull/3516) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix nlohmann/json\#3513, explain is\_ndarray flag [\#3514](https://github.com/nlohmann/json/pull/3514) ([fangq](https://github.com/fangq)) -- Prevent ndarray size vector from recursive use, fix nlohmann/json\#3503 [\#3505](https://github.com/nlohmann/json/pull/3505) ([fangq](https://github.com/fangq)) -- prevent ndarray dimension vector from recusive array, nlohmann/json\#3500 [\#3502](https://github.com/nlohmann/json/pull/3502) ([fangq](https://github.com/fangq)) -- Discard optimized containers with negative counts in UBJSON/BJData \(\#3491,\#3492,\#3490\) [\#3500](https://github.com/nlohmann/json/pull/3500) ([fangq](https://github.com/fangq)) -- Update json.hpp [\#3499](https://github.com/nlohmann/json/pull/3499) ([ivanovmp](https://github.com/ivanovmp)) -- Add assertion for invariant in SAX-DOM parser [\#3498](https://github.com/nlohmann/json/pull/3498) ([nlohmann](https://github.com/nlohmann)) -- Add more macOS builders [\#3485](https://github.com/nlohmann/json/pull/3485) ([nlohmann](https://github.com/nlohmann)) -- change bjdata ndarray flag to detect negative size, as part of \#3475 [\#3479](https://github.com/nlohmann/json/pull/3479) ([fangq](https://github.com/fangq)) -- Document fuzzer usage [\#3478](https://github.com/nlohmann/json/pull/3478) ([nlohmann](https://github.com/nlohmann)) -- Add build step for ICPC \(with fixes\) [\#3465](https://github.com/nlohmann/json/pull/3465) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Complete documentation for 3.11.0 [\#3464](https://github.com/nlohmann/json/pull/3464) ([nlohmann](https://github.com/nlohmann)) -- Handle invalid BJData optimized type, fix \#3461 [\#3463](https://github.com/nlohmann/json/pull/3463) ([fangq](https://github.com/fangq)) -- Reorganize directories [\#3462](https://github.com/nlohmann/json/pull/3462) ([nlohmann](https://github.com/nlohmann)) -- Enable rapid testing and development on Compiler Explorer [\#3456](https://github.com/nlohmann/json/pull/3456) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- cpplint 1.6.0 [\#3454](https://github.com/nlohmann/json/pull/3454) ([nlohmann](https://github.com/nlohmann)) -- Disable regression test for \#3070 on GCC \<8.4 [\#3451](https://github.com/nlohmann/json/pull/3451) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix C++20/gcc-12 issues \(Part 2\) [\#3446](https://github.com/nlohmann/json/pull/3446) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Overwork documentation [\#3444](https://github.com/nlohmann/json/pull/3444) ([nlohmann](https://github.com/nlohmann)) -- Fix typo in basic\_json documentation [\#3439](https://github.com/nlohmann/json/pull/3439) ([jhnlee](https://github.com/jhnlee)) -- Exclude std::any from implicit conversion \(fixes \#3428\) [\#3437](https://github.com/nlohmann/json/pull/3437) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Document which version introduced the macros [\#3431](https://github.com/nlohmann/json/pull/3431) ([nlohmann](https://github.com/nlohmann)) -- Fix constraints on from\_json\(\) for strings \(fixes \#3171, \#3267, \#3312, \#3384\) [\#3427](https://github.com/nlohmann/json/pull/3427) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- at.md: fix typo [\#3426](https://github.com/nlohmann/json/pull/3426) ([heinemml](https://github.com/heinemml)) -- Implement support for string\_view \(attempt no. 3\) [\#3423](https://github.com/nlohmann/json/pull/3423) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- CI: speedup AppVeyor builds by ~30% [\#3422](https://github.com/nlohmann/json/pull/3422) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Restore disabled check for \#3070 \(except on MSVC\) [\#3421](https://github.com/nlohmann/json/pull/3421) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Update CI image [\#3420](https://github.com/nlohmann/json/pull/3420) ([nlohmann](https://github.com/nlohmann)) -- Add check if different version is also included [\#3418](https://github.com/nlohmann/json/pull/3418) ([nlohmann](https://github.com/nlohmann)) -- Report the right \_\_cplusplus value for MSVC in basic\_json meta\(\) [\#3417](https://github.com/nlohmann/json/pull/3417) ([flagarde](https://github.com/flagarde)) -- CI: windows-2016 has been deprecated; remove jobs [\#3416](https://github.com/nlohmann/json/pull/3416) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Re-template json\_pointer on string type [\#3415](https://github.com/nlohmann/json/pull/3415) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Refactor unit tests to use more convenient doctest assertion macros \(Part 2\) [\#3405](https://github.com/nlohmann/json/pull/3405) ([kkarbowiak](https://github.com/kkarbowiak)) -- Refactor unit tests to use more convenient doctest assertion macros [\#3393](https://github.com/nlohmann/json/pull/3393) ([kkarbowiak](https://github.com/kkarbowiak)) -- Improve unit testing \(Part 1\) [\#3380](https://github.com/nlohmann/json/pull/3380) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix C++20/gcc-12 issues \(Part 1\) [\#3379](https://github.com/nlohmann/json/pull/3379) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add clarification to avoid misunderstanding that cause \#3360 [\#3378](https://github.com/nlohmann/json/pull/3378) ([puffetto](https://github.com/puffetto)) -- Fix ordered\_map ctor with initializer\_list \(fixes \#3343\) [\#3370](https://github.com/nlohmann/json/pull/3370) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Fix and update CI [\#3368](https://github.com/nlohmann/json/pull/3368) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- FetchContent\_MakeAvailable [\#3351](https://github.com/nlohmann/json/pull/3351) ([nlohmann](https://github.com/nlohmann)) -- Avoid clash with Arduino defines [\#3338](https://github.com/nlohmann/json/pull/3338) ([DarkZeros](https://github.com/DarkZeros)) -- Support UBJSON-derived Binary JData \(BJData\) format [\#3336](https://github.com/nlohmann/json/pull/3336) ([fangq](https://github.com/fangq)) -- Make iterator operator++/--\(int\) equality-preserving [\#3332](https://github.com/nlohmann/json/pull/3332) ([falbrechtskirchinger](https://github.com/falbrechtskirchinger)) -- Add note on parsing ordered\_json [\#3326](https://github.com/nlohmann/json/pull/3326) ([nlohmann](https://github.com/nlohmann)) -- Fix CITATION.cff and add automatic validation of your citation metadata [\#3320](https://github.com/nlohmann/json/pull/3320) ([fdiblen](https://github.com/fdiblen)) -- .github/workflows/windows.yml: Add support for Visual Studio 2022 [\#3295](https://github.com/nlohmann/json/pull/3295) ([t-b](https://github.com/t-b)) -- Add maintainer targets to create source archive [\#3289](https://github.com/nlohmann/json/pull/3289) ([nlohmann](https://github.com/nlohmann)) -- Fix a typo [\#3265](https://github.com/nlohmann/json/pull/3265) ([fhuberts](https://github.com/fhuberts)) -- Fix typo [\#3249](https://github.com/nlohmann/json/pull/3249) ([rex4539](https://github.com/rex4539)) -- Add documentation for JSON Lines [\#3247](https://github.com/nlohmann/json/pull/3247) ([nlohmann](https://github.com/nlohmann)) -- Improve documentation InputType and IteratorType [\#3246](https://github.com/nlohmann/json/pull/3246) ([nlohmann](https://github.com/nlohmann)) -- Remove stringstream [\#3244](https://github.com/nlohmann/json/pull/3244) ([nlohmann](https://github.com/nlohmann)) -- fix \_MSC\_VER version to check for std::filesystem [\#3240](https://github.com/nlohmann/json/pull/3240) ([gcerretani](https://github.com/gcerretani)) -- Add macros NLOHMANN\_DEFINE\_TYPE\_INTRUSIVE\_WITH\_DEFAULT and ...\_NON\_INTRUSIVE\_WITH\_DEFAULT [\#3143](https://github.com/nlohmann/json/pull/3143) ([pketelsen](https://github.com/pketelsen)) - -## [v3.10.5](https://github.com/nlohmann/json/releases/tag/v3.10.5) (2022-01-03) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.4...v3.10.5) - -- \#include \ doesn't work with gcc-7 when `-std=c++17` is specified. [\#3203](https://github.com/nlohmann/json/issues/3203) -- Not able to use nlohmann json with c++ code built using emscripten to wasm [\#3200](https://github.com/nlohmann/json/issues/3200) -- Warning for shadowed variables [\#3188](https://github.com/nlohmann/json/issues/3188) -- Accessing missing keys on const json object leads to assert [\#3183](https://github.com/nlohmann/json/issues/3183) -- Data member is available, but null is reported, and program throws error [\#3173](https://github.com/nlohmann/json/issues/3173) -- serialization problem, from\_json need construct new object [\#3169](https://github.com/nlohmann/json/issues/3169) -- std::filesystem unavailable on macOS lower deployment targets [\#3156](https://github.com/nlohmann/json/issues/3156) -- \[json.exception.type\_error.305\] cannot use operator\[\] with a string argument with string [\#3151](https://github.com/nlohmann/json/issues/3151) -- json::dump\(\) is not compatible with C++ standards [\#3147](https://github.com/nlohmann/json/issues/3147) -- Issue with json::parse decoding codepoints [\#3142](https://github.com/nlohmann/json/issues/3142) -- Simple parse of json object thinks it should be an array [\#3136](https://github.com/nlohmann/json/issues/3136) -- How to properly read a Json string that may be null in some cases? [\#3135](https://github.com/nlohmann/json/issues/3135) -- Deadlock on create json - windows only [\#3129](https://github.com/nlohmann/json/issues/3129) -- Wrong parsing of int64 values nearest of limit [\#3126](https://github.com/nlohmann/json/issues/3126) -- ordered\_json doesn't support range based erase [\#3108](https://github.com/nlohmann/json/issues/3108) -- Apple build failed with json/single\_include/nlohmann/json.hpp:4384:57: 'path' is unavailable [\#3097](https://github.com/nlohmann/json/issues/3097) -- GCC 7.5.0 with --std=c++17: filesystem: No such file or directory [\#3090](https://github.com/nlohmann/json/issues/3090) -- Drop Travis CI [\#3087](https://github.com/nlohmann/json/issues/3087) -- ordered\_json::reset\(\) compile error with nvcc [\#3013](https://github.com/nlohmann/json/issues/3013) -- Support for unordered\_map as object\_t [\#2932](https://github.com/nlohmann/json/issues/2932) -- Compiler warning with Intel compiler, same as \#755 [\#2712](https://github.com/nlohmann/json/issues/2712) -- Compiler warnings with NVCC 11.2 [\#2676](https://github.com/nlohmann/json/issues/2676) -- some static analysis warning at line 11317 [\#1390](https://github.com/nlohmann/json/issues/1390) -- Compiling with icpc [\#755](https://github.com/nlohmann/json/issues/755) - -- Fix compilation error with NVCC [\#3234](https://github.com/nlohmann/json/pull/3234) ([nlohmann](https://github.com/nlohmann)) -- Remove Travis CI [\#3233](https://github.com/nlohmann/json/pull/3233) ([nlohmann](https://github.com/nlohmann)) -- Add build step for NVCC and fix a warning [\#3227](https://github.com/nlohmann/json/pull/3227) ([nlohmann](https://github.com/nlohmann)) -- Update cpplint [\#3225](https://github.com/nlohmann/json/pull/3225) ([nlohmann](https://github.com/nlohmann)) -- Fix: Warning for shadowed variables \(\#3188\) [\#3193](https://github.com/nlohmann/json/pull/3193) ([kernie](https://github.com/kernie)) -- Fix FAQ hyperlink typo in readme [\#3148](https://github.com/nlohmann/json/pull/3148) ([Prince-Mendiratta](https://github.com/Prince-Mendiratta)) -- Docs: Update `skip_comments` to `ignore_comments` [\#3145](https://github.com/nlohmann/json/pull/3145) ([daniel-kun](https://github.com/daniel-kun)) -- fix typos in documentation [\#3140](https://github.com/nlohmann/json/pull/3140) ([striezel](https://github.com/striezel)) -- Fix spelling [\#3125](https://github.com/nlohmann/json/pull/3125) ([axic](https://github.com/axic)) -- Extend std specializations [\#3121](https://github.com/nlohmann/json/pull/3121) ([nlohmann](https://github.com/nlohmann)) -- Add missing erase\(first, last\) function to ordered\_map [\#3109](https://github.com/nlohmann/json/pull/3109) ([nlohmann](https://github.com/nlohmann)) -- Fix typos in operator\[\] documentation [\#3102](https://github.com/nlohmann/json/pull/3102) ([axnsan12](https://github.com/axnsan12)) -- Add C++17 copies of the test binaries [\#3101](https://github.com/nlohmann/json/pull/3101) ([nlohmann](https://github.com/nlohmann)) -- Add examples for parsing from iterator pair [\#3100](https://github.com/nlohmann/json/pull/3100) ([nlohmann](https://github.com/nlohmann)) -- Update CI [\#3088](https://github.com/nlohmann/json/pull/3088) ([nlohmann](https://github.com/nlohmann)) -- Consolidate documentation [\#3071](https://github.com/nlohmann/json/pull/3071) ([nlohmann](https://github.com/nlohmann)) -- Add recursive update function [\#3069](https://github.com/nlohmann/json/pull/3069) ([nlohmann](https://github.com/nlohmann)) - -## [v3.10.4](https://github.com/nlohmann/json/releases/tag/v3.10.4) (2021-10-16) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.3...v3.10.4) - -- Compiler error in output serializer due to 'incompatible initializer' [\#3081](https://github.com/nlohmann/json/issues/3081) -- Strange behaviour when using std::sort on std::vector\ [\#3080](https://github.com/nlohmann/json/issues/3080) -- Unhandled exception: nlohmann::detail::parse\_error [\#3078](https://github.com/nlohmann/json/issues/3078) -- explicit constructor with default does not compile [\#3077](https://github.com/nlohmann/json/issues/3077) -- Parse an object but get an array using GCC [\#3076](https://github.com/nlohmann/json/issues/3076) -- Version 3.10.3 breaks backward-compatibility with 3.10.2 [\#3070](https://github.com/nlohmann/json/issues/3070) -- Feature request, Add to\_json/from\_json to align with other to/from binary api. [\#3067](https://github.com/nlohmann/json/issues/3067) -- vcpkg is out of date [\#3066](https://github.com/nlohmann/json/issues/3066) - -- Revert invalid fix [\#3082](https://github.com/nlohmann/json/pull/3082) ([nlohmann](https://github.com/nlohmann)) -- Allow to use get with explicit constructor [\#3079](https://github.com/nlohmann/json/pull/3079) ([nlohmann](https://github.com/nlohmann)) -- fix std::filesystem::path regression [\#3073](https://github.com/nlohmann/json/pull/3073) ([theodelrieu](https://github.com/theodelrieu)) - -## [v3.10.3](https://github.com/nlohmann/json/releases/tag/v3.10.3) (2021-10-08) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.2...v3.10.3) - -- Parsing an emtpy string returns a string with size 1 instead of expected 0 [\#3057](https://github.com/nlohmann/json/issues/3057) -- Linking error "duplicate symbol: std::type\_info::operator==" on static build with MinGW [\#3042](https://github.com/nlohmann/json/issues/3042) -- Yet another assertion failure when inserting into arrays with JSON\_DIAGNOSTICS set [\#3032](https://github.com/nlohmann/json/issues/3032) -- accept and parse function not work well with a pure number string [\#3029](https://github.com/nlohmann/json/issues/3029) -- push\_back doesn't work for serializing containers [\#3027](https://github.com/nlohmann/json/issues/3027) -- Strange behaviour when creating array with single element [\#3025](https://github.com/nlohmann/json/issues/3025) -- Input ordered\_json doesn't work [\#3023](https://github.com/nlohmann/json/issues/3023) -- Issue iterating through 'items' [\#3021](https://github.com/nlohmann/json/issues/3021) -- Cannot spell the namespace right [\#3015](https://github.com/nlohmann/json/issues/3015) -- JSON Parse error when reading json object from file [\#3011](https://github.com/nlohmann/json/issues/3011) -- Parent pointer not properly set when using update\(\) [\#3007](https://github.com/nlohmann/json/issues/3007) -- Overwriting terminated null character [\#3001](https://github.com/nlohmann/json/issues/3001) -- 'operator =' is ambiguous on VS2017 [\#2997](https://github.com/nlohmann/json/issues/2997) -- JSON Patch for Array Elements [\#2994](https://github.com/nlohmann/json/issues/2994) -- JSON Parse throwing error [\#2983](https://github.com/nlohmann/json/issues/2983) -- to\_{binary format} does not provide a mechanism for specifying a custom allocator for the returned type. [\#2982](https://github.com/nlohmann/json/issues/2982) -- 3.10.1 zip json.hpp has version number 3.10.0 instead of 3.10.1 [\#2973](https://github.com/nlohmann/json/issues/2973) -- Assertion failure when serializing array with JSON\_DIAGNOSTICS set [\#2926](https://github.com/nlohmann/json/issues/2926) - -- Fix Clang version [\#3040](https://github.com/nlohmann/json/pull/3040) ([nlohmann](https://github.com/nlohmann)) -- Fix assertion failure for JSON\_DIAGNOSTICS [\#3037](https://github.com/nlohmann/json/pull/3037) ([carlsmedstad](https://github.com/carlsmedstad)) -- meta: fix is\_compatible/constructible traits [\#3020](https://github.com/nlohmann/json/pull/3020) ([theodelrieu](https://github.com/theodelrieu)) -- Set parent pointers for values inserted via update\(\) \(fixes \#3007\). [\#3008](https://github.com/nlohmann/json/pull/3008) ([AnthonyVH](https://github.com/AnthonyVH)) -- Allow allocators for output\_vector\_adapter [\#2989](https://github.com/nlohmann/json/pull/2989) ([nlohmann](https://github.com/nlohmann)) -- Re-add Clang 12 [\#2986](https://github.com/nlohmann/json/pull/2986) ([nlohmann](https://github.com/nlohmann)) -- Use new Docker image [\#2981](https://github.com/nlohmann/json/pull/2981) ([nlohmann](https://github.com/nlohmann)) -- Update docset generation script [\#2967](https://github.com/nlohmann/json/pull/2967) ([nlohmann](https://github.com/nlohmann)) - -## [v3.10.2](https://github.com/nlohmann/json/releases/tag/v3.10.2) (2021-08-26) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.1...v3.10.2) - -- Annoying -Wundef on new JSON\_DIAGNOSTICS macro [\#2975](https://github.com/nlohmann/json/issues/2975) -- += issue with multiple redirection. [\#2970](https://github.com/nlohmann/json/issues/2970) -- "incomplete type ‘nlohmann::detail::wide\_string\_input\_helper" compilation error [\#2969](https://github.com/nlohmann/json/issues/2969) - -- Fix -Wunused warnings on JSON\_DIAGNOSTICS [\#2976](https://github.com/nlohmann/json/pull/2976) ([gcerretani](https://github.com/gcerretani)) - -## [v3.10.1](https://github.com/nlohmann/json/releases/tag/v3.10.1) (2021-08-24) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.10.0...v3.10.1) - -- JSON\_DIAGNOSTICS assertion for ordered\_json [\#2962](https://github.com/nlohmann/json/issues/2962) -- Inserting in unordered json using a pointer retains the leading slash [\#2958](https://github.com/nlohmann/json/issues/2958) -- Test \#9: test-cbor test case sample.json fails in debug mode - Stack overflow [\#2955](https://github.com/nlohmann/json/issues/2955) -- 3.10.0 broke at least the Bear project [\#2953](https://github.com/nlohmann/json/issues/2953) -- 2 tests fail in 3.10.0: cmake\_fetch\_content\_configure, cmake\_fetch\_content\_build [\#2951](https://github.com/nlohmann/json/issues/2951) -- ctest \(58+60,/67 cmake\_import\_configure\) fails when build with -D JSON\_Install:BOOL=OFF because of missing nlohmann\_jsonTargets.cmake [\#2946](https://github.com/nlohmann/json/issues/2946) -- Document vcpkg usage [\#2944](https://github.com/nlohmann/json/issues/2944) -- Linker error LNK2005 when compiling \(x64\) json-3.10.0.zip with Visual Studio 2019 16.11.1 [\#2941](https://github.com/nlohmann/json/issues/2941) -- Move Travis jobs to travis-ci.com [\#2938](https://github.com/nlohmann/json/issues/2938) - -- Fixed typo in docs/api/basic\_json/parse.md [\#2968](https://github.com/nlohmann/json/pull/2968) ([mbadhan](https://github.com/mbadhan)) -- Add link to Homebrew package [\#2966](https://github.com/nlohmann/json/pull/2966) ([nlohmann](https://github.com/nlohmann)) -- Fix parent update for diagnostics with ordered\_json [\#2963](https://github.com/nlohmann/json/pull/2963) ([nlohmann](https://github.com/nlohmann)) -- Set stack size for some unit tests when using MSVC [\#2961](https://github.com/nlohmann/json/pull/2961) ([nlohmann](https://github.com/nlohmann)) -- Add regression test [\#2960](https://github.com/nlohmann/json/pull/2960) ([nlohmann](https://github.com/nlohmann)) -- Update Travis badge [\#2959](https://github.com/nlohmann/json/pull/2959) ([nlohmann](https://github.com/nlohmann)) -- Fix some extra ";" clang warnings [\#2957](https://github.com/nlohmann/json/pull/2957) ([Hallot](https://github.com/Hallot)) -- Add documentation for integration via vcpkg [\#2954](https://github.com/nlohmann/json/pull/2954) ([nlohmann](https://github.com/nlohmann)) -- Avoid duplicate AppVeyor builds [\#2952](https://github.com/nlohmann/json/pull/2952) ([nlohmann](https://github.com/nlohmann)) -- 🚨 fix gdb\_pretty\_printer failure on basic types [\#2950](https://github.com/nlohmann/json/pull/2950) ([senyai](https://github.com/senyai)) -- Add header to use value\_t [\#2948](https://github.com/nlohmann/json/pull/2948) ([nlohmann](https://github.com/nlohmann)) -- Skip some tests if JSON\_Install is not set [\#2947](https://github.com/nlohmann/json/pull/2947) ([nlohmann](https://github.com/nlohmann)) -- Remove outdated json\_unit test binary [\#2945](https://github.com/nlohmann/json/pull/2945) ([nlohmann](https://github.com/nlohmann)) -- Updating the Homebrew Command [\#2943](https://github.com/nlohmann/json/pull/2943) ([amirmasoudabdol](https://github.com/amirmasoudabdol)) - -## [v3.10.0](https://github.com/nlohmann/json/releases/tag/v3.10.0) (2021-08-17) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.9.1...v3.10.0) - -- Latest version 3.9.1 uses throw instead of JSON\_THROW in the amalgamated json.hpp file [\#2934](https://github.com/nlohmann/json/issues/2934) -- Copy to a variable inside a Structure [\#2933](https://github.com/nlohmann/json/issues/2933) -- warning C4068: unknown pragma 'GCC' on MSVC/cl [\#2924](https://github.com/nlohmann/json/issues/2924) -- Errors during ninja test [\#2918](https://github.com/nlohmann/json/issues/2918) -- compiler warning: "not return a value" [\#2917](https://github.com/nlohmann/json/issues/2917) -- Comparison floating points causes warning [\#2909](https://github.com/nlohmann/json/issues/2909) -- Why can't I have std::vector\ testList? [\#2900](https://github.com/nlohmann/json/issues/2900) -- \[json.hpp\] from releases doesnt work [\#2897](https://github.com/nlohmann/json/issues/2897) -- g++ \(11\) -Wuseless-cast gives lots of warnings [\#2893](https://github.com/nlohmann/json/issues/2893) -- Cannot serialize and immediatly deserialize json to/from bson [\#2892](https://github.com/nlohmann/json/issues/2892) -- Floating-point precision conversion error [\#2876](https://github.com/nlohmann/json/issues/2876) -- How to avoid escaping for an already escaped string in .dump\(\) [\#2870](https://github.com/nlohmann/json/issues/2870) -- can't parse std::vector\ [\#2869](https://github.com/nlohmann/json/issues/2869) -- ASAN detects memory leaks [\#2865](https://github.com/nlohmann/json/issues/2865) -- Binary subtype field cannot represent all CBOR tags [\#2863](https://github.com/nlohmann/json/issues/2863) -- string literals possibly being parsed as another type due to the presence of only digits and full-stops [\#2852](https://github.com/nlohmann/json/issues/2852) -- json::parse\(\) works only with absolute paths [\#2851](https://github.com/nlohmann/json/issues/2851) -- Compiler Warnings on Raspberry Pi OS [\#2850](https://github.com/nlohmann/json/issues/2850) -- Braced initialization and aggregate initialization behavior is different for `json::array()` function call. [\#2848](https://github.com/nlohmann/json/issues/2848) -- 3.9.1: test suite is failing [\#2845](https://github.com/nlohmann/json/issues/2845) -- Documentation for macro JSON\_NO\_IO is missing [\#2842](https://github.com/nlohmann/json/issues/2842) -- Assertion failure when inserting into arrays with JSON\_DIAGNOSTICS set [\#2838](https://github.com/nlohmann/json/issues/2838) -- HELP! There is a memory leak in the code?! [\#2837](https://github.com/nlohmann/json/issues/2837) -- Elegant conversion of a 2-D-json array to a standard C++ array [\#2805](https://github.com/nlohmann/json/issues/2805) -- Swift Package Manager support [\#2802](https://github.com/nlohmann/json/issues/2802) -- Referencing a subkey which doesn't exist gives crash [\#2797](https://github.com/nlohmann/json/issues/2797) -- Failed benchmark due to renamed branch [\#2796](https://github.com/nlohmann/json/issues/2796) -- Build Errors with VS 2019 and json Version 3.9.1 when attempting to replicate SAX Example [\#2782](https://github.com/nlohmann/json/issues/2782) -- Value with spaces cannot be parsed [\#2781](https://github.com/nlohmann/json/issues/2781) -- \[Question\] CBOR rfc support. [\#2779](https://github.com/nlohmann/json/issues/2779) -- Using JSON.hpp header file in Visual Studio 2013 \(C++ Project\) [\#2775](https://github.com/nlohmann/json/issues/2775) -- compilation error on clang-8 + C++17 [\#2759](https://github.com/nlohmann/json/issues/2759) -- Undefined symbol EOF [\#2755](https://github.com/nlohmann/json/issues/2755) -- Parsing a string into json object behaves differently under g++ and MinGW compilers. [\#2746](https://github.com/nlohmann/json/issues/2746) -- big git history size [\#2742](https://github.com/nlohmann/json/issues/2742) -- How to get reference of std::vector\ [\#2735](https://github.com/nlohmann/json/issues/2735) -- CMake failure in VS2019 Community [\#2734](https://github.com/nlohmann/json/issues/2734) -- Possibility to use with custom c++ version to use in intel sgx enclaves [\#2730](https://github.com/nlohmann/json/issues/2730) -- Possibility to use without the dependency to file io and streams to use in intel sgx enclaves [\#2728](https://github.com/nlohmann/json/issues/2728) -- error C2784& error C2839... in my visual studio 2015 compiler [\#2726](https://github.com/nlohmann/json/issues/2726) -- `-fno-expection` not respected anymore in 3.9.1 [\#2725](https://github.com/nlohmann/json/issues/2725) -- When exceptions disabled with JSON\_NOEXCEPTION, lib just aborts without any message [\#2724](https://github.com/nlohmann/json/issues/2724) -- Critical error detected c0000374 on windows10 msvc 2019 16.8.5 [\#2710](https://github.com/nlohmann/json/issues/2710) -- unused parameter error/warning [\#2706](https://github.com/nlohmann/json/issues/2706) -- How to store data into a Map from json file [\#2691](https://github.com/nlohmann/json/issues/2691) -- Tests do not compile with pre-release glibc [\#2686](https://github.com/nlohmann/json/issues/2686) -- compile errors .... chromium-style [\#2680](https://github.com/nlohmann/json/issues/2680) -- .dump\(\) not allowing compact form [\#2678](https://github.com/nlohmann/json/issues/2678) -- error: no matching function for call to ‘nlohmann::basic\_json\<\>::value\(int, std::set\&\)’ [\#2671](https://github.com/nlohmann/json/issues/2671) -- Compiler warning: unused parameter [\#2668](https://github.com/nlohmann/json/issues/2668) -- Deserializing to a struct as shown on the project homepage throws compile time errors [\#2665](https://github.com/nlohmann/json/issues/2665) -- Unable to compile on MSVC 2019 with SDL checking enabled: This function or variable may be unsafe [\#2664](https://github.com/nlohmann/json/issues/2664) -- terminating with uncaught exception of type nlohmann::detail::type\_error: \[json.exception.type\_error.302\] type must be array, but is object [\#2661](https://github.com/nlohmann/json/issues/2661) -- unused-parameter on OSX when Diagnostics is off [\#2658](https://github.com/nlohmann/json/issues/2658) -- std::pair wrong serialization [\#2655](https://github.com/nlohmann/json/issues/2655) -- The result of json is\_number\_integer\(\) function is wrong when read a json file [\#2653](https://github.com/nlohmann/json/issues/2653) -- 2 backslash cause problem [\#2652](https://github.com/nlohmann/json/issues/2652) -- No support for using an external/system copy of Hedley [\#2651](https://github.com/nlohmann/json/issues/2651) -- error: incomplete type 'qfloat16' used in type trait expression [\#2650](https://github.com/nlohmann/json/issues/2650) -- Unused variable in exception class when not using improved diagnostics [\#2646](https://github.com/nlohmann/json/issues/2646) -- I am trying to do this - converting from wstring works incorrectly! [\#2642](https://github.com/nlohmann/json/issues/2642) -- Exception 207 On ARM Processor During Literal String Parsing [\#2634](https://github.com/nlohmann/json/issues/2634) -- double free or corruption \(!prev\) error on Json push\_back and write [\#2632](https://github.com/nlohmann/json/issues/2632) -- nlohmann::detail::parse\_error: syntax error while parsing CBOR string: expected length specification \(0x60-0x7B\) or indefinite string type \(0x7F\) [\#2629](https://github.com/nlohmann/json/issues/2629) -- please allow disabling implicit conversions in non-single-file use [\#2621](https://github.com/nlohmann/json/issues/2621) -- Preserve decimal formatting [\#2618](https://github.com/nlohmann/json/issues/2618) -- Visual Studio Visual Assist code issues reported by VA code inspection of file json.hpp [\#2615](https://github.com/nlohmann/json/issues/2615) -- Missing get function and no viable overloaded '=' on mac [\#2610](https://github.com/nlohmann/json/issues/2610) -- corruption when parse from string [\#2603](https://github.com/nlohmann/json/issues/2603) -- Parse from byte-vector results in compile error [\#2602](https://github.com/nlohmann/json/issues/2602) -- Memory leak when working on ARM Linux [\#2601](https://github.com/nlohmann/json/issues/2601) -- Unhandled exception in test-cbor.exe Stack overflow when debugging project with Visual Studio 2019 16.7.7 compiled with c++17 or c++latest [\#2598](https://github.com/nlohmann/json/issues/2598) -- Error in download\_test\_data.vcxproj when compiling with Visual Studio 2019 16.7.7 Professional msbuild on Windows 10 2004 Professional [\#2594](https://github.com/nlohmann/json/issues/2594) -- Warnings C4715 and C4127 when building json-3.9.1 with Visual Studio 2019 16.7.7 [\#2592](https://github.com/nlohmann/json/issues/2592) -- I tried some change to dump\(\) for \[1,2,3...\] [\#2584](https://github.com/nlohmann/json/issues/2584) -- try/catch block does not catch parsing error [\#2579](https://github.com/nlohmann/json/issues/2579) -- Serializing uint64\_t is broken for large values [\#2578](https://github.com/nlohmann/json/issues/2578) -- deserializing arrays should be part of the library [\#2575](https://github.com/nlohmann/json/issues/2575) -- Deserialization to std::array with non-default constructable types fails [\#2574](https://github.com/nlohmann/json/issues/2574) -- Compilation error when trying to use same type for number\_integer\_t and number\_unsigned\_t in basic\_json template specification. [\#2573](https://github.com/nlohmann/json/issues/2573) -- compiler error: directive output may be truncated writing between 2 and 8 bytes [\#2572](https://github.com/nlohmann/json/issues/2572) -- Incorrect convert map to json when key cannot construct an string i.e. int [\#2564](https://github.com/nlohmann/json/issues/2564) -- no matching function for call to ‘nlohmann::basic\_json\<\>::basic\_json\(\\)’ [\#2559](https://github.com/nlohmann/json/issues/2559) -- type\_error factory creates a dangling pointer \(in VisualStudio 2019\) [\#2535](https://github.com/nlohmann/json/issues/2535) -- Cannot assign from ordered\_json vector\ to value in not ordered json [\#2528](https://github.com/nlohmann/json/issues/2528) -- Qt6: Break changes [\#2519](https://github.com/nlohmann/json/issues/2519) -- valgrind memcheck Illegal instruction when use nlohmann::json::parse [\#2518](https://github.com/nlohmann/json/issues/2518) -- Buffer overflow [\#2515](https://github.com/nlohmann/json/issues/2515) -- Including CTest in the top-level CMakeLists.txt sets BUILD\_TESTING=ON for parent projects [\#2513](https://github.com/nlohmann/json/issues/2513) -- Compilation error when using NLOHMANN\_JSON\_SERIALIZE\_ENUM ordered\_json on libc++ [\#2491](https://github.com/nlohmann/json/issues/2491) -- Missing "void insert\( InputIt first, InputIt last \);" overload in nlohmann::ordered\_map [\#2490](https://github.com/nlohmann/json/issues/2490) -- Could not find a package configuration file provided by "nlohmann\_json" [\#2482](https://github.com/nlohmann/json/issues/2482) -- json becomes empty for unknown reason [\#2470](https://github.com/nlohmann/json/issues/2470) -- Using std::wstring as StringType fails compiling [\#2459](https://github.com/nlohmann/json/issues/2459) -- Sample code in GIF slide outdated \(cannot use emplace\(\) with array\) [\#2457](https://github.com/nlohmann/json/issues/2457) -- from\_json\ is treated as an array on latest MSVC [\#2453](https://github.com/nlohmann/json/issues/2453) -- MemorySanitizer: use-of-uninitialized-value [\#2449](https://github.com/nlohmann/json/issues/2449) -- I need help [\#2441](https://github.com/nlohmann/json/issues/2441) -- type conversion failing with clang ext\_vector\_type [\#2436](https://github.com/nlohmann/json/issues/2436) -- json::parse\(\) can't be resolved under specific circumstances [\#2427](https://github.com/nlohmann/json/issues/2427) -- from\_\*\(ptr, len\) deprecation [\#2426](https://github.com/nlohmann/json/issues/2426) -- Error ONLY in release mode [\#2425](https://github.com/nlohmann/json/issues/2425) -- "Custom data source" exemple make no sense [\#2423](https://github.com/nlohmann/json/issues/2423) -- Refuses to compile in project [\#2419](https://github.com/nlohmann/json/issues/2419) -- Compilation failure of tests with C++20 standard \(caused by change of u8 literals\) [\#2413](https://github.com/nlohmann/json/issues/2413) -- No matching function for call to 'input\_adapter' under Xcode of with nlohmann version 3.9.1 [\#2412](https://github.com/nlohmann/json/issues/2412) -- Git tags are not valid semvers [\#2409](https://github.com/nlohmann/json/issues/2409) -- after dump, stderr output disappear [\#2403](https://github.com/nlohmann/json/issues/2403) -- Using custom string. [\#2398](https://github.com/nlohmann/json/issues/2398) -- value\(\) throws unhandled exception for partially specified json object [\#2393](https://github.com/nlohmann/json/issues/2393) -- assertion on runtime causes program to stop when accessing const json with missing key [\#2392](https://github.com/nlohmann/json/issues/2392) -- Usage with -fno-elide-constructors causes dump\(\) output to be array of `null`s [\#2387](https://github.com/nlohmann/json/issues/2387) -- Build fails with clang-cl due to override of CMAKE\_CXX\_COMPILER\(?\) [\#2384](https://github.com/nlohmann/json/issues/2384) -- std::optional not working with primitive types [\#2383](https://github.com/nlohmann/json/issues/2383) -- Unexpected array when initializing a json const& on gcc 4.8.5 using uniform syntax [\#2370](https://github.com/nlohmann/json/issues/2370) -- setprecision support [\#2362](https://github.com/nlohmann/json/issues/2362) -- json::parse\(allow\_exceptions = false\) documentation is misleading. [\#2360](https://github.com/nlohmann/json/issues/2360) -- std::begin and std::end usage without specifying std namespace [\#2359](https://github.com/nlohmann/json/issues/2359) -- Custom object conversion to json hangs in background thread [\#2358](https://github.com/nlohmann/json/issues/2358) -- Add support of nullable fields to NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE and NLOHMANN\_DEFINE\_TYPE\_INTRUSIVE [\#2356](https://github.com/nlohmann/json/issues/2356) -- the portfile for the vcpkg is not working. [\#2351](https://github.com/nlohmann/json/issues/2351) -- Compiler warns of implicit fallthrough when defining preprocessor macro NDEBUG [\#2348](https://github.com/nlohmann/json/issues/2348) -- Compile error on Intel compiler running in Windows [\#2346](https://github.com/nlohmann/json/issues/2346) -- Build error caused by overwriting CMAKE\_CXX\_COMPILER [\#2343](https://github.com/nlohmann/json/issues/2343) -- Error: an attribute list cannot appear here JSON\_HEDLEY\_DEPRECATED\_FOR [\#2342](https://github.com/nlohmann/json/issues/2342) -- compiler warning [\#2341](https://github.com/nlohmann/json/issues/2341) -- 3.9.0: tests make build non-reproducible [\#2324](https://github.com/nlohmann/json/issues/2324) -- Initialization different between gcc/clang [\#2311](https://github.com/nlohmann/json/issues/2311) -- Attempt to `get()` a numeric value as a type which cannot represent it should throw [\#2310](https://github.com/nlohmann/json/issues/2310) -- Surprising behaviour with overloaded operators [\#2256](https://github.com/nlohmann/json/issues/2256) -- ADL issue in input\_adapter [\#2248](https://github.com/nlohmann/json/issues/2248) -- Output adapters should be templated. [\#2172](https://github.com/nlohmann/json/issues/2172) -- error when using nlohmann::json, std::function and std::bind [\#2147](https://github.com/nlohmann/json/issues/2147) -- Remove undefined behavior for const operator\[\] [\#2111](https://github.com/nlohmann/json/issues/2111) -- json\({}\) gives null instead of empty object with GCC and -std=c++17 [\#2046](https://github.com/nlohmann/json/issues/2046) -- GDB pretty printing support [\#1952](https://github.com/nlohmann/json/issues/1952) -- Always compile tests with all warnings enabled and error out on warnings [\#1798](https://github.com/nlohmann/json/issues/1798) -- Fixes Cppcheck warnings [\#1759](https://github.com/nlohmann/json/issues/1759) -- How to get position info or parser context with custom from\_json\(\) that may throw exceptions? [\#1508](https://github.com/nlohmann/json/issues/1508) -- Suggestion to improve value\(\) accessors with respect to move semantics [\#1275](https://github.com/nlohmann/json/issues/1275) -- Add Key name to Exception [\#932](https://github.com/nlohmann/json/issues/932) - -- Overwork warning flags [\#2936](https://github.com/nlohmann/json/pull/2936) ([nlohmann](https://github.com/nlohmann)) -- Treat MSVC warnings as errors [\#2930](https://github.com/nlohmann/json/pull/2930) ([nlohmann](https://github.com/nlohmann)) -- All: fix warnings when compiling with -Wswitch-enum [\#2927](https://github.com/nlohmann/json/pull/2927) ([fhuberts](https://github.com/fhuberts)) -- Guard GCC pragmas [\#2925](https://github.com/nlohmann/json/pull/2925) ([nlohmann](https://github.com/nlohmann)) -- Supress -Wfloat-equal on intended float comparisions [\#2911](https://github.com/nlohmann/json/pull/2911) ([Finkman](https://github.com/Finkman)) -- Fix binary subtypes [\#2908](https://github.com/nlohmann/json/pull/2908) ([nlohmann](https://github.com/nlohmann)) -- Fix useless-cast warnings [\#2902](https://github.com/nlohmann/json/pull/2902) ([nlohmann](https://github.com/nlohmann)) -- Add regression test [\#2898](https://github.com/nlohmann/json/pull/2898) ([nlohmann](https://github.com/nlohmann)) -- Refactor Unicode tests [\#2889](https://github.com/nlohmann/json/pull/2889) ([nlohmann](https://github.com/nlohmann)) -- CMake cleanup [\#2885](https://github.com/nlohmann/json/pull/2885) ([nlohmann](https://github.com/nlohmann)) -- Avoid string in case of empty CBOR objects [\#2879](https://github.com/nlohmann/json/pull/2879) ([nlohmann](https://github.com/nlohmann)) -- Suppress C4127 warning in unit-json\_pointer.cpp [\#2875](https://github.com/nlohmann/json/pull/2875) ([nlohmann](https://github.com/nlohmann)) -- Fix truncation warning [\#2874](https://github.com/nlohmann/json/pull/2874) ([nlohmann](https://github.com/nlohmann)) -- Fix memory leak in to\_json [\#2872](https://github.com/nlohmann/json/pull/2872) ([nlohmann](https://github.com/nlohmann)) -- Fix assertion failure in diagnostics [\#2866](https://github.com/nlohmann/json/pull/2866) ([nlohmann](https://github.com/nlohmann)) -- Update documentation [\#2861](https://github.com/nlohmann/json/pull/2861) ([nlohmann](https://github.com/nlohmann)) -- Consistency with `using` in README.md [\#2826](https://github.com/nlohmann/json/pull/2826) ([justanotheranonymoususer](https://github.com/justanotheranonymoususer)) -- Properly constrain the basic\_json conversion operator [\#2825](https://github.com/nlohmann/json/pull/2825) ([ldionne](https://github.com/ldionne)) -- Fix CI [\#2817](https://github.com/nlohmann/json/pull/2817) ([nlohmann](https://github.com/nlohmann)) -- Specified git branch for google benchmark fetch in benchmark test [\#2795](https://github.com/nlohmann/json/pull/2795) ([grafail](https://github.com/grafail)) -- Add C++ standards to macOS matrix [\#2790](https://github.com/nlohmann/json/pull/2790) ([nlohmann](https://github.com/nlohmann)) -- Update URLs to HTTPS [\#2789](https://github.com/nlohmann/json/pull/2789) ([TotalCaesar659](https://github.com/TotalCaesar659)) -- Link to Conan Center package added [\#2771](https://github.com/nlohmann/json/pull/2771) ([offa](https://github.com/offa)) -- Keep consistent formatting [\#2770](https://github.com/nlohmann/json/pull/2770) ([jasmcaus](https://github.com/jasmcaus)) -- Add a cmake option to use SYSTEM in target\_include\_directories [\#2762](https://github.com/nlohmann/json/pull/2762) ([jpl-mac](https://github.com/jpl-mac)) -- replace EOF with std::char\_traits\::eof\(\) [\#2756](https://github.com/nlohmann/json/pull/2756) ([nlohmann](https://github.com/nlohmann)) -- Fix typo in README [\#2754](https://github.com/nlohmann/json/pull/2754) ([mortenfyhn](https://github.com/mortenfyhn)) -- Update documentation [\#2749](https://github.com/nlohmann/json/pull/2749) ([nlohmann](https://github.com/nlohmann)) -- Add documentation for numbers [\#2747](https://github.com/nlohmann/json/pull/2747) ([nlohmann](https://github.com/nlohmann)) -- Use Clang 12 in CI [\#2737](https://github.com/nlohmann/json/pull/2737) ([nlohmann](https://github.com/nlohmann)) -- Fixes \#2730 [\#2731](https://github.com/nlohmann/json/pull/2731) ([theShmoo](https://github.com/theShmoo)) -- Possibility to use without the dependency to file io and streams to use in intel sgx enclaves [\#2729](https://github.com/nlohmann/json/pull/2729) ([theShmoo](https://github.com/theShmoo)) -- Update json.hpp [\#2707](https://github.com/nlohmann/json/pull/2707) ([raduteo](https://github.com/raduteo)) -- pkg-config.pc.in: Don't concatenate paths [\#2690](https://github.com/nlohmann/json/pull/2690) ([doronbehar](https://github.com/doronbehar)) -- add more CI steps [\#2689](https://github.com/nlohmann/json/pull/2689) ([nlohmann](https://github.com/nlohmann)) -- Update doctest from 2.4.4 to 2.4.6 \(fixes \#2686\) [\#2687](https://github.com/nlohmann/json/pull/2687) ([musicinmybrain](https://github.com/musicinmybrain)) -- License fix [\#2683](https://github.com/nlohmann/json/pull/2683) ([nlohmann](https://github.com/nlohmann)) -- Update parse\_exceptions.md - correct `json::exception::parse_error` [\#2679](https://github.com/nlohmann/json/pull/2679) ([frasermarlow](https://github.com/frasermarlow)) -- Remove HEDLEY annotation from exception::what\(\) [\#2673](https://github.com/nlohmann/json/pull/2673) ([remyjette](https://github.com/remyjette)) -- Fix amount of entries in the json object [\#2659](https://github.com/nlohmann/json/pull/2659) ([abbaswasim](https://github.com/abbaswasim)) -- Fix missing 1.78 in example in README.md [\#2625](https://github.com/nlohmann/json/pull/2625) ([wawiesel](https://github.com/wawiesel)) -- Add GDB pretty printer [\#2607](https://github.com/nlohmann/json/pull/2607) ([nlohmann](https://github.com/nlohmann)) -- readme: fix tilde character display [\#2582](https://github.com/nlohmann/json/pull/2582) ([bl-ue](https://github.com/bl-ue)) -- Add support for deserialization of STL containers of non-default constructable types \(fixes \#2574\). [\#2576](https://github.com/nlohmann/json/pull/2576) ([AnthonyVH](https://github.com/AnthonyVH)) -- Better diagnostics [\#2562](https://github.com/nlohmann/json/pull/2562) ([nlohmann](https://github.com/nlohmann)) -- CI targets [\#2561](https://github.com/nlohmann/json/pull/2561) ([nlohmann](https://github.com/nlohmann)) -- Add switch to skip non-reproducible tests. [\#2560](https://github.com/nlohmann/json/pull/2560) ([nlohmann](https://github.com/nlohmann)) -- Fix compilation of input\_adapter\(container\) in edge cases [\#2553](https://github.com/nlohmann/json/pull/2553) ([jasujm](https://github.com/jasujm)) -- Allow parsing from std::byte containers [\#2550](https://github.com/nlohmann/json/pull/2550) ([nlohmann](https://github.com/nlohmann)) -- Travis doesn't run any tests in C++17 mode [\#2540](https://github.com/nlohmann/json/pull/2540) ([karzhenkov](https://github.com/karzhenkov)) -- Doctest is updated to v2.4.3 [\#2538](https://github.com/nlohmann/json/pull/2538) ([YarikTH](https://github.com/YarikTH)) -- Fix warnings [\#2537](https://github.com/nlohmann/json/pull/2537) ([nlohmann](https://github.com/nlohmann)) -- Fix a shadowing warning [\#2536](https://github.com/nlohmann/json/pull/2536) ([nlohmann](https://github.com/nlohmann)) -- Clarify license of is\_complete\_type implementation [\#2534](https://github.com/nlohmann/json/pull/2534) ([nlohmann](https://github.com/nlohmann)) -- Do not unconditionally redefine C++14 constructs [\#2533](https://github.com/nlohmann/json/pull/2533) ([nlohmann](https://github.com/nlohmann)) -- Doctest is updated to v2.4.1 [\#2525](https://github.com/nlohmann/json/pull/2525) ([YarikTH](https://github.com/YarikTH)) -- Add MAIN\_PROJECT check for test and install options [\#2514](https://github.com/nlohmann/json/pull/2514) ([globberwops](https://github.com/globberwops)) -- Ranged insert test section is added in unit-ordered\_json.cpp [\#2512](https://github.com/nlohmann/json/pull/2512) ([YarikTH](https://github.com/YarikTH)) -- Add asserts to suppress C28020 [\#2447](https://github.com/nlohmann/json/pull/2447) ([jbzdarkid](https://github.com/jbzdarkid)) -- Change argument name "subtype" in byte\_container\_with\_subtype [\#2444](https://github.com/nlohmann/json/pull/2444) ([linev](https://github.com/linev)) -- 📝 add CPM.Cmake example [\#2406](https://github.com/nlohmann/json/pull/2406) ([leozz37](https://github.com/leozz37)) -- Fix move constructor of json\_ref [\#2405](https://github.com/nlohmann/json/pull/2405) ([karzhenkov](https://github.com/karzhenkov)) -- Properly select "Release" build for Travis [\#2375](https://github.com/nlohmann/json/pull/2375) ([karzhenkov](https://github.com/karzhenkov)) -- Update Hedley [\#2367](https://github.com/nlohmann/json/pull/2367) ([nlohmann](https://github.com/nlohmann)) -- Fix and extend documentation of discarded values [\#2363](https://github.com/nlohmann/json/pull/2363) ([nlohmann](https://github.com/nlohmann)) -- Fix typos in documentation [\#2354](https://github.com/nlohmann/json/pull/2354) ([rbuch](https://github.com/rbuch)) -- Remove "\#define private public" from tests [\#2352](https://github.com/nlohmann/json/pull/2352) ([nlohmann](https://github.com/nlohmann)) -- Remove -Wimplicit-fallthrough warning [\#2349](https://github.com/nlohmann/json/pull/2349) ([nlohmann](https://github.com/nlohmann)) -- Fix code to work without exceptions [\#2347](https://github.com/nlohmann/json/pull/2347) ([nlohmann](https://github.com/nlohmann)) -- fix cmake script overwriting compiler path [\#2344](https://github.com/nlohmann/json/pull/2344) ([ongjunjie](https://github.com/ongjunjie)) - -## [v3.9.1](https://github.com/nlohmann/json/releases/tag/v3.9.1) (2020-08-06) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.9.0...v3.9.1) - -- Can't parse not formatted JSON. [\#2340](https://github.com/nlohmann/json/issues/2340) -- parse returns desired array contained in array when JSON text begins with square bracket on gcc 7.5.0 [\#2339](https://github.com/nlohmann/json/issues/2339) -- Unexpected deserialization difference between Mac and Linux [\#2338](https://github.com/nlohmann/json/issues/2338) -- Reading ordered\_json from file causes compile error [\#2331](https://github.com/nlohmann/json/issues/2331) -- ignore\_comment=true fails on multiple consecutive lines starting with comments [\#2330](https://github.com/nlohmann/json/issues/2330) -- Update documentation about Homebrew installation and CMake integration - Homebrew [\#2326](https://github.com/nlohmann/json/issues/2326) -- Chinese character initialize error [\#2325](https://github.com/nlohmann/json/issues/2325) -- json.update and vector\does not work with ordered\_json [\#2315](https://github.com/nlohmann/json/issues/2315) -- Ambiguous call to overloaded function [\#2210](https://github.com/nlohmann/json/issues/2210) - -- Fix fallthrough warning [\#2333](https://github.com/nlohmann/json/pull/2333) ([nlohmann](https://github.com/nlohmann)) -- Fix lexer to properly cope with repeated comments [\#2332](https://github.com/nlohmann/json/pull/2332) ([nlohmann](https://github.com/nlohmann)) -- Fix name of Homebrew formula in documentation [\#2327](https://github.com/nlohmann/json/pull/2327) ([nlohmann](https://github.com/nlohmann)) -- fix typo [\#2320](https://github.com/nlohmann/json/pull/2320) ([wx257osn2](https://github.com/wx257osn2)) -- Fix a bug due to missing overloads in ordered\_map container [\#2319](https://github.com/nlohmann/json/pull/2319) ([nlohmann](https://github.com/nlohmann)) -- cmake: install pkg-config file relative to current\_binary\_dir [\#2318](https://github.com/nlohmann/json/pull/2318) ([eli-schwartz](https://github.com/eli-schwartz)) -- Fixed installation of pkg-config file on other than Ubuntu [\#2314](https://github.com/nlohmann/json/pull/2314) ([xvitaly](https://github.com/xvitaly)) - -## [v3.9.0](https://github.com/nlohmann/json/releases/tag/v3.9.0) (2020-07-27) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.8.0...v3.9.0) - -- Unknown Type Name clang error when using NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE [\#2313](https://github.com/nlohmann/json/issues/2313) -- Clang 10.0 / GCC 10.1 warnings on disabled exceptions [\#2304](https://github.com/nlohmann/json/issues/2304) -- Application stalls indefinitely with message byte size 10 [\#2293](https://github.com/nlohmann/json/issues/2293) -- linker error [\#2292](https://github.com/nlohmann/json/issues/2292) -- Add support for high-precision numbers in UBJSON encoding [\#2286](https://github.com/nlohmann/json/issues/2286) -- NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE fails if the length of the argument is 10 [\#2280](https://github.com/nlohmann/json/issues/2280) -- Custom types : MACRO expansion bug [\#2267](https://github.com/nlohmann/json/issues/2267) -- to/from\_json Failing To Convert String [\#2238](https://github.com/nlohmann/json/issues/2238) -- clang 9.0 report warning: unused type alias 'size\_type' \[-Wunused-local-typedef\] [\#2221](https://github.com/nlohmann/json/issues/2221) -- Enormous array created when working with map\ [\#2220](https://github.com/nlohmann/json/issues/2220) -- Can I disable sorting of json values [\#2219](https://github.com/nlohmann/json/issues/2219) -- Getting Qt types to work [\#2217](https://github.com/nlohmann/json/issues/2217) -- Convert to Qt QVariant [\#2216](https://github.com/nlohmann/json/issues/2216) -- How to custom serialize same data type of vector? [\#2215](https://github.com/nlohmann/json/issues/2215) -- json constructor does not support std::optional [\#2214](https://github.com/nlohmann/json/issues/2214) -- Failing to Parse Valid JSON [\#2209](https://github.com/nlohmann/json/issues/2209) -- \(De-\)Serialization of std::variant with namespaces [\#2208](https://github.com/nlohmann/json/issues/2208) -- Addint support for complex type [\#2207](https://github.com/nlohmann/json/issues/2207) -- array\_index possible out of range [\#2205](https://github.com/nlohmann/json/issues/2205) -- Object deserialized as array [\#2204](https://github.com/nlohmann/json/issues/2204) -- Sending to a function a reference to a sub-branch [\#2200](https://github.com/nlohmann/json/issues/2200) -- How to Serialize derived class to JSON object? [\#2199](https://github.com/nlohmann/json/issues/2199) -- JSON incorrectly serialized [\#2198](https://github.com/nlohmann/json/issues/2198) -- Exception Unhandled out\_of\_range error [\#2197](https://github.com/nlohmann/json/issues/2197) -- msgpack serialisation : float is treated as 64bit float, not 32bit float. [\#2196](https://github.com/nlohmann/json/issues/2196) -- Is it possible to use compile-time type guarantees for JSON structures? [\#2195](https://github.com/nlohmann/json/issues/2195) -- Question : performance against python dict [\#2194](https://github.com/nlohmann/json/issues/2194) -- vs2017 compile error [\#2192](https://github.com/nlohmann/json/issues/2192) -- Check if a key exists [\#2191](https://github.com/nlohmann/json/issues/2191) -- Failed to run tests due to missing test data on builders without Internet access [\#2190](https://github.com/nlohmann/json/issues/2190) -- 3.8.0: unit-cbor.cpp test failures [\#2189](https://github.com/nlohmann/json/issues/2189) -- 'nlohmann/json.hpp' file not found [\#2188](https://github.com/nlohmann/json/issues/2188) -- How to send json data over the wire? [\#2185](https://github.com/nlohmann/json/issues/2185) -- Ubuntu 16 not supporting nlohmann/json? [\#2184](https://github.com/nlohmann/json/issues/2184) -- .get\ causing emdash errors [\#2180](https://github.com/nlohmann/json/issues/2180) -- Object properties should not be re-sorted alphabetically [\#2179](https://github.com/nlohmann/json/issues/2179) -- Custom type registration : instrusive API [\#2175](https://github.com/nlohmann/json/issues/2175) -- Many version of the function "void to\_json\(json& j, const MyStruct& struct\)" [\#2171](https://github.com/nlohmann/json/issues/2171) -- How should strings be escaped? [\#2155](https://github.com/nlohmann/json/issues/2155) -- Adding a value to an existing json puts it at the beginning instead of the end [\#2149](https://github.com/nlohmann/json/issues/2149) -- The header file is big, can we use what we need. [\#2134](https://github.com/nlohmann/json/issues/2134) -- Changing the default format for unordered\_map \(or other set\) [\#2132](https://github.com/nlohmann/json/issues/2132) -- Getting size of deserialized bson document [\#2131](https://github.com/nlohmann/json/issues/2131) -- implicit conversion failure [\#2128](https://github.com/nlohmann/json/issues/2128) -- Error thrown when parsing in a subclass [\#2124](https://github.com/nlohmann/json/issues/2124) -- explicit conversion to string not considered for std::map keys in GCC8 [\#2096](https://github.com/nlohmann/json/issues/2096) -- Add support for JSONC [\#2061](https://github.com/nlohmann/json/issues/2061) -- Library provides template arg for string\_type but assumes std::string in some places [\#2059](https://github.com/nlohmann/json/issues/2059) -- incremental parsing with sax\_parser [\#2030](https://github.com/nlohmann/json/issues/2030) -- Question about flatten and unflatten [\#1989](https://github.com/nlohmann/json/issues/1989) -- CBOR parser doesn't skip tags [\#1968](https://github.com/nlohmann/json/issues/1968) -- Compilation failure using Clang on Windows [\#1898](https://github.com/nlohmann/json/issues/1898) -- Fail to build when including json.hpp as a system include [\#1818](https://github.com/nlohmann/json/issues/1818) -- Parsing string into json doesn't preserve the order correctly. [\#1817](https://github.com/nlohmann/json/issues/1817) -- \[C++17\] Allow std::optional to convert to nlohmann::json [\#1749](https://github.com/nlohmann/json/issues/1749) -- How can I save json object in file in order? [\#1717](https://github.com/nlohmann/json/issues/1717) -- Support for Comments [\#1513](https://github.com/nlohmann/json/issues/1513) -- clang compiler: error : unknown type name 'not' [\#1119](https://github.com/nlohmann/json/issues/1119) -- dump\(\) without alphabetical order [\#1106](https://github.com/nlohmann/json/issues/1106) -- operator T\(\) considered harmful [\#958](https://github.com/nlohmann/json/issues/958) -- Order of the elements in JSON object [\#952](https://github.com/nlohmann/json/issues/952) -- How to prevent alphabetical sorting of data? [\#727](https://github.com/nlohmann/json/issues/727) -- Why is an object ordering values by Alphabetical Order? [\#660](https://github.com/nlohmann/json/issues/660) -- Feature request: Comments [\#597](https://github.com/nlohmann/json/issues/597) -- Head Elements Sorting [\#543](https://github.com/nlohmann/json/issues/543) -- Automatic ordered JSON [\#424](https://github.com/nlohmann/json/issues/424) -- Support for comments. [\#376](https://github.com/nlohmann/json/issues/376) -- Optional comment support. [\#363](https://github.com/nlohmann/json/issues/363) -- Strip comments / Minify [\#294](https://github.com/nlohmann/json/issues/294) -- maintaining order of keys during iteration [\#106](https://github.com/nlohmann/json/issues/106) - -- Update documentation [\#2312](https://github.com/nlohmann/json/pull/2312) ([nlohmann](https://github.com/nlohmann)) -- Fix bug in CBOR tag handling [\#2308](https://github.com/nlohmann/json/pull/2308) ([nlohmann](https://github.com/nlohmann)) -- added inline to NLOHMANN\_DEFINE\_TYPE\_NON\_INTRUSIVE macro [\#2306](https://github.com/nlohmann/json/pull/2306) ([jwittbrodt](https://github.com/jwittbrodt)) -- fixes unused variable 'ex' for \#2304 [\#2305](https://github.com/nlohmann/json/pull/2305) ([AODQ](https://github.com/AODQ)) -- Cleanup [\#2303](https://github.com/nlohmann/json/pull/2303) ([nlohmann](https://github.com/nlohmann)) -- Add test with multiple translation units [\#2301](https://github.com/nlohmann/json/pull/2301) ([nlohmann](https://github.com/nlohmann)) -- Merge GitHub actions [\#2300](https://github.com/nlohmann/json/pull/2300) ([nlohmann](https://github.com/nlohmann)) -- Fix unused parameter [\#2299](https://github.com/nlohmann/json/pull/2299) ([nlohmann](https://github.com/nlohmann)) -- Add support for high-precision numbers in UBJSON encoding [\#2297](https://github.com/nlohmann/json/pull/2297) ([nlohmann](https://github.com/nlohmann)) -- fix eof for get\_binary and get\_string [\#2294](https://github.com/nlohmann/json/pull/2294) ([jprochazk](https://github.com/jprochazk)) -- Serialisation macros: increase upper bound on number of member variables [\#2287](https://github.com/nlohmann/json/pull/2287) ([pfeatherstone](https://github.com/pfeatherstone)) -- add inline specifier for detail::combine [\#2285](https://github.com/nlohmann/json/pull/2285) ([T0b1-iOS](https://github.com/T0b1-iOS)) -- Add static assertion for missing binary function in SAX interface [\#2282](https://github.com/nlohmann/json/pull/2282) ([nlohmann](https://github.com/nlohmann)) -- Add test for target\_include\_directories [\#2279](https://github.com/nlohmann/json/pull/2279) ([nlohmann](https://github.com/nlohmann)) -- Clean up maintainer Makefiles and fix some linter warnings [\#2274](https://github.com/nlohmann/json/pull/2274) ([nlohmann](https://github.com/nlohmann)) -- Add option to ignore CBOR tags [\#2273](https://github.com/nlohmann/json/pull/2273) ([nlohmann](https://github.com/nlohmann)) -- Hash function without allocation [\#2269](https://github.com/nlohmann/json/pull/2269) ([nlohmann](https://github.com/nlohmann)) -- Add ClangCL for MSVC [\#2268](https://github.com/nlohmann/json/pull/2268) ([t-b](https://github.com/t-b)) -- Makefile: Always use SED variable [\#2264](https://github.com/nlohmann/json/pull/2264) ([t-b](https://github.com/t-b)) -- Add Xcode 12 CI [\#2262](https://github.com/nlohmann/json/pull/2262) ([nlohmann](https://github.com/nlohmann)) -- Make library work with Clang on Windows [\#2259](https://github.com/nlohmann/json/pull/2259) ([nlohmann](https://github.com/nlohmann)) -- Add ordered\_json specialization with ordered object keys [\#2258](https://github.com/nlohmann/json/pull/2258) ([nlohmann](https://github.com/nlohmann)) -- Add pkg-config file [\#2253](https://github.com/nlohmann/json/pull/2253) ([ericonr](https://github.com/ericonr)) -- Fix regression from \#2181 [\#2251](https://github.com/nlohmann/json/pull/2251) ([nlohmann](https://github.com/nlohmann)) -- Tag binary values in cbor if set [\#2244](https://github.com/nlohmann/json/pull/2244) ([matthewbauer](https://github.com/matthewbauer)) -- Make assert configurable via JSON\_ASSERT [\#2242](https://github.com/nlohmann/json/pull/2242) ([nlohmann](https://github.com/nlohmann)) -- Add specialization of get\_to [\#2233](https://github.com/nlohmann/json/pull/2233) ([nlohmann](https://github.com/nlohmann)) -- Refine documentation of error\_handler parameter [\#2232](https://github.com/nlohmann/json/pull/2232) ([nlohmann](https://github.com/nlohmann)) -- Simplify conversion from/to custom types [\#2225](https://github.com/nlohmann/json/pull/2225) ([nlohmann](https://github.com/nlohmann)) -- Remove unused typedefs [\#2224](https://github.com/nlohmann/json/pull/2224) ([nlohmann](https://github.com/nlohmann)) -- Enable CMake policy CMP0077 [\#2222](https://github.com/nlohmann/json/pull/2222) ([alexreinking](https://github.com/alexreinking)) -- Add option to ignore comments in parse/accept functions [\#2212](https://github.com/nlohmann/json/pull/2212) ([nlohmann](https://github.com/nlohmann)) -- Fix Clang-Tidy warnings [\#2211](https://github.com/nlohmann/json/pull/2211) ([nlohmann](https://github.com/nlohmann)) -- Simple ordered\_json that works on all supported compilers [\#2206](https://github.com/nlohmann/json/pull/2206) ([gatopeich](https://github.com/gatopeich)) -- Use unsigned indizies for array index in json pointer [\#2203](https://github.com/nlohmann/json/pull/2203) ([t-b](https://github.com/t-b)) -- Add option to not rely on Internet connectivity during test stage [\#2202](https://github.com/nlohmann/json/pull/2202) ([nlohmann](https://github.com/nlohmann)) -- Serialize floating-point numbers with 32 bit when possible \(MessagePack\) [\#2201](https://github.com/nlohmann/json/pull/2201) ([nlohmann](https://github.com/nlohmann)) -- Fix consistency in function `int_to_string()` [\#2193](https://github.com/nlohmann/json/pull/2193) ([dota17](https://github.com/dota17)) -- Fix issue\#1275 [\#2181](https://github.com/nlohmann/json/pull/2181) ([dota17](https://github.com/dota17)) -- C++20 support by removing swap specialization [\#2176](https://github.com/nlohmann/json/pull/2176) ([gracicot](https://github.com/gracicot)) -- Feat/explicit conversion operator [\#1559](https://github.com/nlohmann/json/pull/1559) ([theodelrieu](https://github.com/theodelrieu)) - -## [v3.8.0](https://github.com/nlohmann/json/releases/tag/v3.8.0) (2020-06-14) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.7.3...v3.8.0) - -- sorry delete this issue, i'm stupid [\#2187](https://github.com/nlohmann/json/issues/2187) -- Append to a std::nlohmann::json type [\#2186](https://github.com/nlohmann/json/issues/2186) -- Some troubles to compile the last revision [\#2177](https://github.com/nlohmann/json/issues/2177) -- ​\#​ Top level CMakeLists.txt​ -​project​\(FOO\) -... -​option​\(FOO\_USE\_EXTERNAL\_JSON ​"Use an external JSON library"​ ​OFF​\) -... -​add\_subdirectory​\(thirdparty\) -... -​add\_library​\(foo ...\) -... -​\#​ Note that the namespaced target will always be available regardless of the​ -​\#​ import method​ -​target\_link\_libraries​\(foo ​PRIVATE​ nlohmann\_json::nlohmann\_json\) [\#2170](https://github.com/nlohmann/json/issues/2170) -- https://www.github.com/nlohmann/json/tree/develop/include%2Fnlohmann%2Fjson\_fwd.hpp [\#2169](https://github.com/nlohmann/json/issues/2169) -- templated from\_json of non primitive types causes gcc error [\#2168](https://github.com/nlohmann/json/issues/2168) -- few warnings/errors in copy assignment [\#2167](https://github.com/nlohmann/json/issues/2167) -- Different output when upgrading from clang 9 to clang 10 [\#2166](https://github.com/nlohmann/json/issues/2166) -- Cannot build with VS 2019 / C++17 [\#2163](https://github.com/nlohmann/json/issues/2163) -- Q: When I received an illegal string,How the program knows? [\#2162](https://github.com/nlohmann/json/issues/2162) -- Problem while reading a json file [\#2161](https://github.com/nlohmann/json/issues/2161) -- converting std::chrono::system\_clock::time\_point to json. [\#2159](https://github.com/nlohmann/json/issues/2159) -- how to parse vector\ format [\#2157](https://github.com/nlohmann/json/issues/2157) -- nlohmann::json and =nullptr [\#2156](https://github.com/nlohmann/json/issues/2156) -- test-cbor fails [\#2154](https://github.com/nlohmann/json/issues/2154) -- Accessing array inside array syntax? [\#2151](https://github.com/nlohmann/json/issues/2151) -- Best way to catch errors when querying json [\#2150](https://github.com/nlohmann/json/issues/2150) -- JSON Data Mapping Key-Value from other Key-Value [\#2148](https://github.com/nlohmann/json/issues/2148) -- Conflicts with std \ compiling with GCC 10 [\#2146](https://github.com/nlohmann/json/issues/2146) -- Incorrect CMake FetchContent example [\#2142](https://github.com/nlohmann/json/issues/2142) -- Help for a Beginner? [\#2141](https://github.com/nlohmann/json/issues/2141) -- Read Json from File [\#2139](https://github.com/nlohmann/json/issues/2139) -- How to feed a predefined integer value into json string [\#2138](https://github.com/nlohmann/json/issues/2138) -- getting json array inside json object [\#2135](https://github.com/nlohmann/json/issues/2135) -- Add .contains example to doc [\#2133](https://github.com/nlohmann/json/issues/2133) -- Is it safe to return string.c\_str\(\) received from get\(\)? [\#2130](https://github.com/nlohmann/json/issues/2130) -- GCC 10: Compilation error when including any before including json header in C++17 mode [\#2129](https://github.com/nlohmann/json/issues/2129) -- Intersection of two json files [\#2127](https://github.com/nlohmann/json/issues/2127) -- App crashes when dump method called for non ascii chars. [\#2126](https://github.com/nlohmann/json/issues/2126) -- iterator based erase method [\#2122](https://github.com/nlohmann/json/issues/2122) -- quick and convenient api to get/set nested json values [\#2120](https://github.com/nlohmann/json/issues/2120) -- assigning nullptr to std::string [\#2118](https://github.com/nlohmann/json/issues/2118) -- usless\_cast warnings with gcc 9.3 and 10.1 \(C++17\) [\#2114](https://github.com/nlohmann/json/issues/2114) -- clang 10 warning [\#2113](https://github.com/nlohmann/json/issues/2113) -- Possible incorrect \_MSC\_VER reference [\#2112](https://github.com/nlohmann/json/issues/2112) -- warning under gcc 10.1 [\#2110](https://github.com/nlohmann/json/issues/2110) -- Wdeprecated-declarations from GCC v10.1.0 [\#2109](https://github.com/nlohmann/json/issues/2109) -- Global std::vector from json [\#2108](https://github.com/nlohmann/json/issues/2108) -- heap-buffer-overflow when using nlohmann/json, ASAN, and gtest [\#2107](https://github.com/nlohmann/json/issues/2107) -- exception 0x770DC5AF when i read an special char in json file [\#2106](https://github.com/nlohmann/json/issues/2106) -- json::parse\(\) fails to parse a dump\(2,' '\) output, yet does successfully parse dump\(\) [\#2105](https://github.com/nlohmann/json/issues/2105) -- run test-udt error in MSVC 19.16.27034.0 [\#2103](https://github.com/nlohmann/json/issues/2103) -- Unable to dump to stringstream [\#2102](https://github.com/nlohmann/json/issues/2102) -- Can't ad an object in another objet [\#2101](https://github.com/nlohmann/json/issues/2101) -- Implicit conversion causes "cannot use operator\[\] with a string argument with string" [\#2098](https://github.com/nlohmann/json/issues/2098) -- C++20: char8\_t [\#2097](https://github.com/nlohmann/json/issues/2097) -- Compilation issues when included in project [\#2094](https://github.com/nlohmann/json/issues/2094) -- string value with null character causes infinite loop [\#2093](https://github.com/nlohmann/json/issues/2093) -- corrupted size vs. prev\_size \(aborted\) [\#2092](https://github.com/nlohmann/json/issues/2092) -- Get string field content without return std::string copy [\#2091](https://github.com/nlohmann/json/issues/2091) -- JSON Comments \(JSON 5\) [\#2090](https://github.com/nlohmann/json/issues/2090) -- Remove \#include \ [\#2089](https://github.com/nlohmann/json/issues/2089) -- JSON library as a git submodule [\#2088](https://github.com/nlohmann/json/issues/2088) -- Apple Clang 11.0.3 on MacOS Catalina 10.15.4 not compiling [\#2087](https://github.com/nlohmann/json/issues/2087) -- Value function return empty object even if it exist [\#2086](https://github.com/nlohmann/json/issues/2086) -- Cannot debug but Run works [\#2085](https://github.com/nlohmann/json/issues/2085) -- Question about serialization. [\#2084](https://github.com/nlohmann/json/issues/2084) -- How to include in an external project [\#2083](https://github.com/nlohmann/json/issues/2083) -- Missing tests for binary values [\#2082](https://github.com/nlohmann/json/issues/2082) -- How to override default string serialization? [\#2079](https://github.com/nlohmann/json/issues/2079) -- Can't have a json type as a property in an arbitrary type [\#2078](https://github.com/nlohmann/json/issues/2078) -- New release? [\#2075](https://github.com/nlohmann/json/issues/2075) -- CMake FetchContent \> Updating the documentation? [\#2073](https://github.com/nlohmann/json/issues/2073) -- How to convert STL Vector \(of user defined type\) to Json [\#2072](https://github.com/nlohmann/json/issues/2072) -- how to make an array of objects [\#2070](https://github.com/nlohmann/json/issues/2070) -- ‘\_\_int64’ was not declared [\#2068](https://github.com/nlohmann/json/issues/2068) -- \[json.exception.type\_error.317\] cannot serialize binary data to text JSON [\#2067](https://github.com/nlohmann/json/issues/2067) -- Unexpected end of input; expected '\[', '{', or a literal [\#2066](https://github.com/nlohmann/json/issues/2066) -- Json structure can be nested? [\#2065](https://github.com/nlohmann/json/issues/2065) -- Bug: returning reference to local temporary object [\#2064](https://github.com/nlohmann/json/issues/2064) -- Allow to use non strict parsing [\#2063](https://github.com/nlohmann/json/issues/2063) -- Crashing on json::at [\#2062](https://github.com/nlohmann/json/issues/2062) -- How to convert a const std::vector\ message to a json, to be able to parse it and extract information from it? Can you point to any examples? [\#2058](https://github.com/nlohmann/json/issues/2058) -- Nice library [\#2057](https://github.com/nlohmann/json/issues/2057) -- json.hpp:15372:22: error: expected unqualified-id if \(not std::isfinite\(x\)\): Started getting this bug after updating my XCode [\#2056](https://github.com/nlohmann/json/issues/2056) -- Confused as how I can extract the values from the JSON object. [\#2055](https://github.com/nlohmann/json/issues/2055) -- Warnings with GCC 10 [\#2052](https://github.com/nlohmann/json/issues/2052) -- Warnings with Clang 10 [\#2049](https://github.com/nlohmann/json/issues/2049) -- Update doctest [\#2048](https://github.com/nlohmann/json/issues/2048) -- Unclear error message: "cannot use operator\[\] with a string argument with array" [\#2047](https://github.com/nlohmann/json/issues/2047) -- Serializing std::variant\\> [\#2045](https://github.com/nlohmann/json/issues/2045) -- Crash when parse big jsonfile [\#2042](https://github.com/nlohmann/json/issues/2042) -- How to check if a key exists without silently generating null objects on the path [\#2041](https://github.com/nlohmann/json/issues/2041) -- Crash when traversing over items\(\) of temporary json objects [\#2040](https://github.com/nlohmann/json/issues/2040) -- How to parse multiple line value ? [\#2039](https://github.com/nlohmann/json/issues/2039) -- SAX API uses unsigned std::size\_t but -1 if element size is not known; [\#2037](https://github.com/nlohmann/json/issues/2037) -- How to parse big decimal data [\#2036](https://github.com/nlohmann/json/issues/2036) -- how use template \ struct adl\_serializer [\#2035](https://github.com/nlohmann/json/issues/2035) -- auto iterator returned by find to handle value depending if is string or numeric. [\#2032](https://github.com/nlohmann/json/issues/2032) -- pass find returned iterator to numeric variable. [\#2031](https://github.com/nlohmann/json/issues/2031) -- Parse error on valid json file [\#2029](https://github.com/nlohmann/json/issues/2029) -- Is here any elegant way to combine serialization and deserialization code? [\#2028](https://github.com/nlohmann/json/issues/2028) -- Notes about dump function [\#2027](https://github.com/nlohmann/json/issues/2027) -- Different JSON printouts for empty dictionary on Linux and Mac. [\#2026](https://github.com/nlohmann/json/issues/2026) -- easier way to get exception reason out of json\_sax\_dom\_callback\_parser without exceptions [\#2024](https://github.com/nlohmann/json/issues/2024) -- Using fifo\_map with base class and derived class [\#2023](https://github.com/nlohmann/json/issues/2023) -- Error reading JSON File [\#2022](https://github.com/nlohmann/json/issues/2022) -- Parse causing crash on android. Cannot catch. [\#2021](https://github.com/nlohmann/json/issues/2021) -- Extra backslashes in nested json [\#2020](https://github.com/nlohmann/json/issues/2020) -- How to create patch for merge\_patch input ? [\#2018](https://github.com/nlohmann/json/issues/2018) -- CppUTest/include/CppUTestExt/MockSupport.h:40: error: default argument for ‘MockFailureReporter\* failureReporterForThisCall’ has type ‘void\*’ [\#2017](https://github.com/nlohmann/json/issues/2017) -- including another file [\#2016](https://github.com/nlohmann/json/issues/2016) -- GNU PREREQ Error with gcc 9.3.0 [\#2015](https://github.com/nlohmann/json/issues/2015) -- Parse error: json.exception.parse\_error.101 - invalid string: ill-formed UTF-8 byte [\#2014](https://github.com/nlohmann/json/issues/2014) -- Add more flexibility to basic\_json's ObjectType \(and ArrayType\) [\#2013](https://github.com/nlohmann/json/issues/2013) -- afl persistent mode [\#2012](https://github.com/nlohmann/json/issues/2012) -- Compiler Errors under VS2019 in Appveyor CI [\#2009](https://github.com/nlohmann/json/issues/2009) -- Another compilation failure with Visual Studio [\#2007](https://github.com/nlohmann/json/issues/2007) -- Implicit cast to std::string broken again with VS2019 16.5.0 [\#2006](https://github.com/nlohmann/json/issues/2006) -- error: no matching member function for call to 'AddRaw' [\#2005](https://github.com/nlohmann/json/issues/2005) -- When I re-create an object again after the network request, an error is reported [\#2003](https://github.com/nlohmann/json/issues/2003) -- How to merge \(and not replace\) different Json::Value objects in jsoncpp [\#2001](https://github.com/nlohmann/json/issues/2001) -- scalar transforms to list [\#2000](https://github.com/nlohmann/json/issues/2000) -- Dump JSON containing multibyte characters [\#1999](https://github.com/nlohmann/json/issues/1999) -- Build error when modify value [\#1998](https://github.com/nlohmann/json/issues/1998) -- How do i include a vector of pointers in my json? [\#1997](https://github.com/nlohmann/json/issues/1997) -- Compiler error wrt incomplete types changed in gcc8.3.0-26 [\#1996](https://github.com/nlohmann/json/issues/1996) -- NaN-like comparison behavior of discarded is inconvenient [\#1988](https://github.com/nlohmann/json/issues/1988) -- Maintaining JSON package in my CMake [\#1987](https://github.com/nlohmann/json/issues/1987) -- reading int number and string number [\#1986](https://github.com/nlohmann/json/issues/1986) -- Build error: keyword is hidden by macro definition! [\#1985](https://github.com/nlohmann/json/issues/1985) -- JSON patch diff for op=add formation is not as per standard \(RFC 6902\) [\#1983](https://github.com/nlohmann/json/issues/1983) -- json\_pointer.contains\(\) exception is incorrectly raised [\#1982](https://github.com/nlohmann/json/issues/1982) -- Error with non existing key [\#1981](https://github.com/nlohmann/json/issues/1981) -- Closed [\#1978](https://github.com/nlohmann/json/issues/1978) -- Where is the library built and what is the name? [\#1977](https://github.com/nlohmann/json/issues/1977) -- The cmake\_import example does not build [\#1976](https://github.com/nlohmann/json/issues/1976) -- Dumping core when reading invalid file [\#1975](https://github.com/nlohmann/json/issues/1975) -- Abort in dump\(\) method [\#1973](https://github.com/nlohmann/json/issues/1973) -- Unclear docs regarding parser\_callback\_t callbacks [\#1972](https://github.com/nlohmann/json/issues/1972) -- Possible memory leak on push\_back [\#1971](https://github.com/nlohmann/json/issues/1971) -- Is it possible to get a safe mutable reference/pointer to internal variant used in nlohmann json? [\#1970](https://github.com/nlohmann/json/issues/1970) -- Getting a flatten json to map\ [\#1957](https://github.com/nlohmann/json/issues/1957) -- forced type conversion or lexical cast without exception. [\#1955](https://github.com/nlohmann/json/issues/1955) -- Add json\_view type support to avoid excessive copying [\#1954](https://github.com/nlohmann/json/issues/1954) -- Adding "examples" section for real-life usages [\#1953](https://github.com/nlohmann/json/issues/1953) -- Add nlohmann::json::key\_type [\#1951](https://github.com/nlohmann/json/issues/1951) -- cannot use operator\[\] with a string argument with string [\#1949](https://github.com/nlohmann/json/issues/1949) -- std::ifstream \>\> json error [\#1948](https://github.com/nlohmann/json/issues/1948) -- Cannot update json data in an iterator? [\#1947](https://github.com/nlohmann/json/issues/1947) -- How can i build this library in VS 2017? [\#1943](https://github.com/nlohmann/json/issues/1943) -- json\_pointer.contains\(\) exceptions when path not found [\#1942](https://github.com/nlohmann/json/issues/1942) -- Nested objects serialize/deserialize [\#1941](https://github.com/nlohmann/json/issues/1941) -- Compile warning on architectures that are not x86 [\#1939](https://github.com/nlohmann/json/issues/1939) -- Version of nlohmann-json-dev in debian packages [\#1938](https://github.com/nlohmann/json/issues/1938) -- Create a json object for every cycle [\#1937](https://github.com/nlohmann/json/issues/1937) -- How to get the object name? [\#1936](https://github.com/nlohmann/json/issues/1936) -- Reserve and resize function for basic json [\#1935](https://github.com/nlohmann/json/issues/1935) -- How to use json parse in tsl::ordread\_map? [\#1934](https://github.com/nlohmann/json/issues/1934) -- C++14 support is not enabled with msvc2015 [\#1932](https://github.com/nlohmann/json/issues/1932) -- Need help with to\_json for derived class, keep getting "cannot use operator" [\#1931](https://github.com/nlohmann/json/issues/1931) -- How to handle std::vector\ [\#1930](https://github.com/nlohmann/json/issues/1930) -- Heap corruption issue [\#1929](https://github.com/nlohmann/json/issues/1929) -- Add `std::wistream` support. [\#1928](https://github.com/nlohmann/json/issues/1928) -- This i can write and read any file thanks [\#1927](https://github.com/nlohmann/json/issues/1927) -- How can I get this simple example working? [\#1926](https://github.com/nlohmann/json/issues/1926) -- emplace\_back does not seems to work with the int 0 [\#1925](https://github.com/nlohmann/json/issues/1925) -- Why nlohmann does not release memory [\#1924](https://github.com/nlohmann/json/issues/1924) -- Is it possible to have template `json::parse` with `noexcept` specifier? [\#1922](https://github.com/nlohmann/json/issues/1922) -- JSON to wstring? [\#1921](https://github.com/nlohmann/json/issues/1921) -- GCC 10 tests build failure [\#1920](https://github.com/nlohmann/json/issues/1920) -- Size of binary json representations [\#1919](https://github.com/nlohmann/json/issues/1919) -- Accessing strings \(for example in keys or values\) without having the lib create a copy of it. [\#1916](https://github.com/nlohmann/json/issues/1916) -- operator== documentation should show how to apply custom comparison function [\#1915](https://github.com/nlohmann/json/issues/1915) -- char8\_t and std::u8string support [\#1914](https://github.com/nlohmann/json/issues/1914) -- std::is\_pod is deprecated in C++20 [\#1913](https://github.com/nlohmann/json/issues/1913) -- Incomplete types reported by \(experimental\) GCC10 [\#1912](https://github.com/nlohmann/json/issues/1912) -- Compile warnings on MSVC 14.2 [\#1911](https://github.com/nlohmann/json/issues/1911) -- How to parse json file with type composition of std::optional and std::variant [\#1910](https://github.com/nlohmann/json/issues/1910) -- why root\_schema be implemented as unique\_ptr in json-validator.cpp,could I use it as shared\_ptr? [\#1908](https://github.com/nlohmann/json/issues/1908) -- compile error in gcc-6.3.0 [\#1906](https://github.com/nlohmann/json/issues/1906) -- Scalar constexpr is odr-used when used as json initializer [\#1905](https://github.com/nlohmann/json/issues/1905) -- install Slack app [\#1904](https://github.com/nlohmann/json/issues/1904) -- typo in a comment [\#1903](https://github.com/nlohmann/json/issues/1903) -- Watch JSON variables in Debug [\#1902](https://github.com/nlohmann/json/issues/1902) -- does Json sdk cares about dfc dfd utf8 issue? [\#1901](https://github.com/nlohmann/json/issues/1901) -- Allow multiple line string value in JSON [\#1897](https://github.com/nlohmann/json/issues/1897) -- Writing map to json file [\#1896](https://github.com/nlohmann/json/issues/1896) -- Small documentation mistake [\#1895](https://github.com/nlohmann/json/issues/1895) -- why static function `parse` cann't find in visual studio 2019 [\#1894](https://github.com/nlohmann/json/issues/1894) -- Best way to handle json files with missing key value pairs. [\#1893](https://github.com/nlohmann/json/issues/1893) -- accessing json object as multimap [\#1892](https://github.com/nlohmann/json/issues/1892) -- What is the best way to parse vec3s into glm::vec3 [\#1891](https://github.com/nlohmann/json/issues/1891) -- Get array of items without using vector [\#1890](https://github.com/nlohmann/json/issues/1890) -- Build errors \(clang 11.0.0\) on macOS 10.15.2 [\#1889](https://github.com/nlohmann/json/issues/1889) -- Multiple arrays to vectors help [\#1888](https://github.com/nlohmann/json/issues/1888) -- json::parse\(begin, end\) parse error on first character using uchar\* [\#1887](https://github.com/nlohmann/json/issues/1887) -- issue in free\(\) [\#1886](https://github.com/nlohmann/json/issues/1886) -- is\_number\_unsigned\(\) returns false for positive integers \(int or 0 or 1 literals\) [\#1885](https://github.com/nlohmann/json/issues/1885) -- MSVC build failure with /Zc:\_\_cplusplus and C++17 [\#1883](https://github.com/nlohmann/json/issues/1883) -- RFC 6901 op:replace & arrays [\#1882](https://github.com/nlohmann/json/issues/1882) -- Problem with serialization of my custom template doubly-linked list [\#1881](https://github.com/nlohmann/json/issues/1881) -- is\_array\(\) is True, but raise 'cannot use operator\[\] for object iterators' [\#1880](https://github.com/nlohmann/json/issues/1880) -- Serialize dynamic array [\#1879](https://github.com/nlohmann/json/issues/1879) -- Serialization of struct object. [\#1877](https://github.com/nlohmann/json/issues/1877) -- warning:c4503 [\#1875](https://github.com/nlohmann/json/issues/1875) -- Why are flattened empty objects/arrays not representable? [\#1874](https://github.com/nlohmann/json/issues/1874) -- Container Overflow \(ASAN\) when using operator \>\> on an ifs [\#1873](https://github.com/nlohmann/json/issues/1873) -- Sub-array to vector or map object? [\#1870](https://github.com/nlohmann/json/issues/1870) -- WIP: QT \(cute\) type supports [\#1869](https://github.com/nlohmann/json/issues/1869) -- Compiler flags to disable features and shrink code size [\#1868](https://github.com/nlohmann/json/issues/1868) -- null strings [\#1867](https://github.com/nlohmann/json/issues/1867) -- Struct with array of struct and \_\_attribute\_\_\(\(packed\)\) [\#1866](https://github.com/nlohmann/json/issues/1866) -- Best way to extract numbers in the string? [\#1865](https://github.com/nlohmann/json/issues/1865) -- Displaying \\?\Volume{guid} from string to json giving error [\#1864](https://github.com/nlohmann/json/issues/1864) -- not working when compiling as x86 [\#1863](https://github.com/nlohmann/json/issues/1863) -- Skipping evaluation of log line expressions with a macro, is it possible? [\#1862](https://github.com/nlohmann/json/issues/1862) -- Suppress warnings [\#1861](https://github.com/nlohmann/json/issues/1861) -- conflit with g++ compile option -mwindows [\#1860](https://github.com/nlohmann/json/issues/1860) -- How to serialize nested classes to semi-flat JSON object? [\#1859](https://github.com/nlohmann/json/issues/1859) -- Memory Requirement for large json file [\#1858](https://github.com/nlohmann/json/issues/1858) -- Query a binary format \(BSON, CBOR, MessagePack, UBJSON\) [\#1856](https://github.com/nlohmann/json/issues/1856) -- Documentation on operator\[\] behavior with missing keys [\#1855](https://github.com/nlohmann/json/issues/1855) -- Problem in converting string into JSON; Can't parse successfully. [\#1854](https://github.com/nlohmann/json/issues/1854) -- json.at\_or\_default\(key, defaultval\) [\#1852](https://github.com/nlohmann/json/issues/1852) -- please improve the enum conversion documentation \(my example gist provided\) [\#1851](https://github.com/nlohmann/json/issues/1851) -- Default value returned on ValueType nlohmann::basic\_json::value \(const typename object\_t::key\_type& key, const ValueType& default\_value\) [\#1850](https://github.com/nlohmann/json/issues/1850) -- Accounting for arbitrary precision numerical literals [\#1849](https://github.com/nlohmann/json/issues/1849) -- While trying to make a simple array, I get a nested array instead [\#1848](https://github.com/nlohmann/json/issues/1848) -- How to reuse the parser and serializer intermediate storage? [\#1847](https://github.com/nlohmann/json/issues/1847) -- Too much content in json.hpp leads to slow compilation [\#1845](https://github.com/nlohmann/json/issues/1845) -- Cannot read some data in json file [\#1843](https://github.com/nlohmann/json/issues/1843) -- Precompiled JSON library? [\#1842](https://github.com/nlohmann/json/issues/1842) -- Please change assert into throw\(maybe\) in line 17946 [\#1841](https://github.com/nlohmann/json/issues/1841) -- JSON for modern C++ ECCN information [\#1840](https://github.com/nlohmann/json/issues/1840) -- CI: reduce build time for Travis valgrind [\#1836](https://github.com/nlohmann/json/issues/1836) -- How do I traverse a json object and add new elements into the hierarchy [\#1834](https://github.com/nlohmann/json/issues/1834) -- Invalid UTF-8 byte at index 1: 0x65 [\#1831](https://github.com/nlohmann/json/issues/1831) -- Serialize big data in json [\#1828](https://github.com/nlohmann/json/issues/1828) -- Backslash '\' in value causes exception [\#1827](https://github.com/nlohmann/json/issues/1827) -- from\_json for non default constructible class with dependency injection [\#1819](https://github.com/nlohmann/json/issues/1819) -- Semi-frequent timeouts in `test-unicode_all` with 3.6.1 \(aarch64\) [\#1816](https://github.com/nlohmann/json/issues/1816) -- input\_adapter not user extensible [\#1813](https://github.com/nlohmann/json/issues/1813) -- crash at json::destroy on android [\#1812](https://github.com/nlohmann/json/issues/1812) -- Logs are repeating while cmake [\#1809](https://github.com/nlohmann/json/issues/1809) -- Add a the possibility to add dynamic json objects [\#1795](https://github.com/nlohmann/json/issues/1795) -- Unnecessary test data file in the release [\#1790](https://github.com/nlohmann/json/issues/1790) -- Add support for parse stack limiting [\#1788](https://github.com/nlohmann/json/issues/1788) -- GCC -Wuseless-cast warnings [\#1777](https://github.com/nlohmann/json/issues/1777) -- compilation issue with NVCC 9.0 [\#1773](https://github.com/nlohmann/json/issues/1773) -- Unexpected behavior with fifo\_map json when copy and append [\#1763](https://github.com/nlohmann/json/issues/1763) -- Parse error [\#1761](https://github.com/nlohmann/json/issues/1761) -- Assignment \(using value\(\)\) to nonexistent element behaves differently on Xcode 8 vs Xcode 10 [\#1758](https://github.com/nlohmann/json/issues/1758) -- Readme out of date [\#1756](https://github.com/nlohmann/json/issues/1756) -- cmake\_\* tests don't use the build system's compiler [\#1747](https://github.com/nlohmann/json/issues/1747) -- Static assertions for template type properties required [\#1729](https://github.com/nlohmann/json/issues/1729) -- Use float and possibly half in json::to\_cbor [\#1719](https://github.com/nlohmann/json/issues/1719) -- json::from\_cbor does not respect allow\_exceptions = false when input is string literal [\#1715](https://github.com/nlohmann/json/issues/1715) -- /Zc:\_\_cplusplus leads to C2416 [\#1695](https://github.com/nlohmann/json/issues/1695) -- `unflatten` vs objects with number-ish keys [\#1575](https://github.com/nlohmann/json/issues/1575) -- A "thinner" source code tar as part of release? [\#1572](https://github.com/nlohmann/json/issues/1572) -- Repository is almost 450MB [\#1497](https://github.com/nlohmann/json/issues/1497) -- Substantial performance penalty caused by polymorphic input adapter [\#1457](https://github.com/nlohmann/json/issues/1457) -- Move tests to a separate repo [\#1235](https://github.com/nlohmann/json/issues/1235) -- reduce repos size [\#1185](https://github.com/nlohmann/json/issues/1185) -- CMakeLists.txt in release zips? [\#1184](https://github.com/nlohmann/json/issues/1184) -- Minimal branch? [\#1066](https://github.com/nlohmann/json/issues/1066) -- Move test blobs to a submodule? [\#732](https://github.com/nlohmann/json/issues/732) -- \[Question\] When using this as git submodule, will it clone the whole thing include test data and benchmark? [\#620](https://github.com/nlohmann/json/issues/620) -- Need to improve ignores.. [\#567](https://github.com/nlohmann/json/issues/567) -- Minimal repository \(current size very large\) [\#556](https://github.com/nlohmann/json/issues/556) -- For a header-only library you have to clone 214MB [\#482](https://github.com/nlohmann/json/issues/482) -- 17 MB / 90 MB repo size!? [\#96](https://github.com/nlohmann/json/issues/96) - -- Improve parse\_ubjson\_fuzzer [\#2182](https://github.com/nlohmann/json/pull/2182) ([tanuj208](https://github.com/tanuj208)) -- Add input adapter tests [\#2178](https://github.com/nlohmann/json/pull/2178) ([nlohmann](https://github.com/nlohmann)) -- Fix warnings [\#2174](https://github.com/nlohmann/json/pull/2174) ([nlohmann](https://github.com/nlohmann)) -- Fix PR\#1006 [\#2158](https://github.com/nlohmann/json/pull/2158) ([dota17](https://github.com/dota17)) -- Fix issue\#1972 [\#2153](https://github.com/nlohmann/json/pull/2153) ([dota17](https://github.com/dota17)) -- Update URLs to HTTPS [\#2152](https://github.com/nlohmann/json/pull/2152) ([TotalCaesar659](https://github.com/TotalCaesar659)) -- Fix Issue\#1813: user defined input adapters [\#2145](https://github.com/nlohmann/json/pull/2145) ([FrancoisChabot](https://github.com/FrancoisChabot)) -- Fix issue\#1939: Cast character to unsigned for comparison [\#2144](https://github.com/nlohmann/json/pull/2144) ([XyFreak](https://github.com/XyFreak)) -- Fix issue\#2142: readme: fix typo in CMake FetchContent example [\#2143](https://github.com/nlohmann/json/pull/2143) ([quentin-dev](https://github.com/quentin-dev)) -- Respect allow\_exceptions=false for binary formats [\#2140](https://github.com/nlohmann/json/pull/2140) ([nlohmann](https://github.com/nlohmann)) -- Fix issue 2112 [\#2137](https://github.com/nlohmann/json/pull/2137) ([dota17](https://github.com/dota17)) -- Add bleeding edge GCC to CI [\#2136](https://github.com/nlohmann/json/pull/2136) ([aokellermann](https://github.com/aokellermann)) -- Clean up implementation of binary type [\#2125](https://github.com/nlohmann/json/pull/2125) ([nlohmann](https://github.com/nlohmann)) -- Fixed a compilation error in MSVC [\#2121](https://github.com/nlohmann/json/pull/2121) ([gistrec](https://github.com/gistrec)) -- Overwork CI [\#2119](https://github.com/nlohmann/json/pull/2119) ([nlohmann](https://github.com/nlohmann)) -- Fix warnings from Clang 10 and GCC 9 [\#2116](https://github.com/nlohmann/json/pull/2116) ([nlohmann](https://github.com/nlohmann)) -- Do not include \ when using C++17 [\#2115](https://github.com/nlohmann/json/pull/2115) ([nlohmann](https://github.com/nlohmann)) -- Fix issue\#2086: disallow json::value\_t type parameter in value\(\) [\#2104](https://github.com/nlohmann/json/pull/2104) ([dota17](https://github.com/dota17)) -- Fix Coveralls integration [\#2100](https://github.com/nlohmann/json/pull/2100) ([nlohmann](https://github.com/nlohmann)) -- Add tests for binary values [\#2099](https://github.com/nlohmann/json/pull/2099) ([nlohmann](https://github.com/nlohmann)) -- Use external test data [\#2081](https://github.com/nlohmann/json/pull/2081) ([nlohmann](https://github.com/nlohmann)) -- Remove Doozer CI [\#2080](https://github.com/nlohmann/json/pull/2080) ([nlohmann](https://github.com/nlohmann)) -- Fix README.md. Missing ``` [\#2077](https://github.com/nlohmann/json/pull/2077) ([ArthurSonzogni](https://github.com/ArthurSonzogni)) -- Fix error message about invalid surrogate pairs [\#2076](https://github.com/nlohmann/json/pull/2076) ([rmisev](https://github.com/rmisev)) -- Add CMake fetchcontent documentation and tests [\#2074](https://github.com/nlohmann/json/pull/2074) ([ArthurSonzogni](https://github.com/ArthurSonzogni)) -- Properly pass serialize\_binary to dump function [\#2071](https://github.com/nlohmann/json/pull/2071) ([nlohmann](https://github.com/nlohmann)) -- Fix returning reference to local temporary object [\#2069](https://github.com/nlohmann/json/pull/2069) ([nlohmann](https://github.com/nlohmann)) -- updated wandbox link [\#2060](https://github.com/nlohmann/json/pull/2060) ([alexandermyasnikov](https://github.com/alexandermyasnikov)) -- Fix bug in diff function [\#2054](https://github.com/nlohmann/json/pull/2054) ([nlohmann](https://github.com/nlohmann)) -- Fix GCC compiler warnings [\#2053](https://github.com/nlohmann/json/pull/2053) ([nlohmann](https://github.com/nlohmann)) -- Fix Clang compiler warnings [\#2051](https://github.com/nlohmann/json/pull/2051) ([nlohmann](https://github.com/nlohmann)) -- Update doctest to 2.3.7 [\#2050](https://github.com/nlohmann/json/pull/2050) ([nlohmann](https://github.com/nlohmann)) -- Fix issue\#1719 [\#2044](https://github.com/nlohmann/json/pull/2044) ([dota17](https://github.com/dota17)) -- Add missing testcase about NaN in unit-constructor1.cpp [\#2043](https://github.com/nlohmann/json/pull/2043) ([dota17](https://github.com/dota17)) -- Templatize basic\_json constructor from json\_ref [\#2034](https://github.com/nlohmann/json/pull/2034) ([ArtemSarmini](https://github.com/ArtemSarmini)) -- Replace deprecated std::is\_pod [\#2033](https://github.com/nlohmann/json/pull/2033) ([nlohmann](https://github.com/nlohmann)) -- Fixes \#1971 \(memory leak in basic\_json::push\_back\) [\#2025](https://github.com/nlohmann/json/pull/2025) ([ArtemSarmini](https://github.com/ArtemSarmini)) -- fix \#1982:json\_pointer.contains\(\) exception is incorrectly raised [\#2019](https://github.com/nlohmann/json/pull/2019) ([dota17](https://github.com/dota17)) -- Update LICENSE.MIT [\#2010](https://github.com/nlohmann/json/pull/2010) ([magamig](https://github.com/magamig)) -- PR for \#2006 to test in AppVeyor. [\#2008](https://github.com/nlohmann/json/pull/2008) ([garethsb](https://github.com/garethsb)) -- Added wsjcpp.yml [\#2004](https://github.com/nlohmann/json/pull/2004) ([sea-kg](https://github.com/sea-kg)) -- fix error 'setw' is not a member of 'std' in Wandbox example [\#2002](https://github.com/nlohmann/json/pull/2002) ([alexandermyasnikov](https://github.com/alexandermyasnikov)) -- catch exceptions for json\_pointer : ..../+99 [\#1990](https://github.com/nlohmann/json/pull/1990) ([dota17](https://github.com/dota17)) -- Modify the document about operator== [\#1984](https://github.com/nlohmann/json/pull/1984) ([dota17](https://github.com/dota17)) -- Rename argument array\_index to array\_indx in json\_pointer methods [\#1980](https://github.com/nlohmann/json/pull/1980) ([linev](https://github.com/linev)) -- README: Fix string representation of `dump`ed `json` [\#1979](https://github.com/nlohmann/json/pull/1979) ([alexweej](https://github.com/alexweej)) -- fix warnings in serializer.hpp for VS2019 [\#1969](https://github.com/nlohmann/json/pull/1969) ([dota17](https://github.com/dota17)) -- Fix C26451 warnnings in to\_chars.hpp [\#1967](https://github.com/nlohmann/json/pull/1967) ([dota17](https://github.com/dota17)) -- appveyor.yml: Compile and test with latest version for \_\_cplusplus ma… [\#1958](https://github.com/nlohmann/json/pull/1958) ([t-b](https://github.com/t-b)) -- Fix typo in examples [\#1956](https://github.com/nlohmann/json/pull/1956) ([dota17](https://github.com/dota17)) -- templated input adapters [\#1950](https://github.com/nlohmann/json/pull/1950) ([FrancoisChabot](https://github.com/FrancoisChabot)) -- Update README.md : add a FAQ about memory release [\#1933](https://github.com/nlohmann/json/pull/1933) ([dota17](https://github.com/dota17)) -- Some typos [\#1923](https://github.com/nlohmann/json/pull/1923) ([Coeur](https://github.com/Coeur)) -- Fix link to parse function in README [\#1918](https://github.com/nlohmann/json/pull/1918) ([kastiglione](https://github.com/kastiglione)) -- Readme: Updated links to hunter repo & docs [\#1917](https://github.com/nlohmann/json/pull/1917) ([jothepro](https://github.com/jothepro)) -- Adds instruction for using Build2's package manager [\#1909](https://github.com/nlohmann/json/pull/1909) ([Klaim](https://github.com/Klaim)) -- Update README.md [\#1907](https://github.com/nlohmann/json/pull/1907) ([pauljurczak](https://github.com/pauljurczak)) -- Fix warning: ignoring return value [\#1871](https://github.com/nlohmann/json/pull/1871) ([sonulohani](https://github.com/sonulohani)) -- docs: add central repository as conan source to readme [\#1857](https://github.com/nlohmann/json/pull/1857) ([gocarlos](https://github.com/gocarlos)) -- README: Package in MSYS2 renamed to nlohmann-json [\#1853](https://github.com/nlohmann/json/pull/1853) ([podsvirov](https://github.com/podsvirov)) -- Fix msvc warnings [\#1846](https://github.com/nlohmann/json/pull/1846) ([MBalszun](https://github.com/MBalszun)) -- Update tests that generate CMake projects to use main project's C++ compiler [\#1844](https://github.com/nlohmann/json/pull/1844) ([Tridacnid](https://github.com/Tridacnid)) -- make CMake's version config file architecture-independent [\#1746](https://github.com/nlohmann/json/pull/1746) ([uhoreg](https://github.com/uhoreg)) -- Add binary type support to all binary file formats, as well as an internally represented binary type [\#1662](https://github.com/nlohmann/json/pull/1662) ([OmnipotentEntity](https://github.com/OmnipotentEntity)) - -## [v3.7.3](https://github.com/nlohmann/json/releases/tag/v3.7.3) (2019-11-17) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.7.2...v3.7.3) - -- Project branches [\#1839](https://github.com/nlohmann/json/issues/1839) -- Quadratic destruction complexity introduced in \#1436 [\#1837](https://github.com/nlohmann/json/issues/1837) -- Trying to open a file [\#1814](https://github.com/nlohmann/json/issues/1814) -- Comparing data type with value\_t::number\_integer fails [\#1783](https://github.com/nlohmann/json/issues/1783) -- CMake version config file is architecture-dependent [\#1697](https://github.com/nlohmann/json/issues/1697) - -- Fix quadratic destruction complexity [\#1838](https://github.com/nlohmann/json/pull/1838) ([nickaein](https://github.com/nickaein)) - -## [v3.7.2](https://github.com/nlohmann/json/releases/tag/v3.7.2) (2019-11-10) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.7.1...v3.7.2) - -- Segmentation fault in destructor in case of large inputs [\#1835](https://github.com/nlohmann/json/issues/1835) -- type\_name\(\) is not consistent with type\(\) [\#1833](https://github.com/nlohmann/json/issues/1833) -- json::parse is not a member [\#1832](https://github.com/nlohmann/json/issues/1832) -- How do you deal with json\* ? [\#1829](https://github.com/nlohmann/json/issues/1829) -- Combined find\_package/add\_subdirectory not linking libraries [\#1771](https://github.com/nlohmann/json/issues/1771) -- example code for ifstream reading a json file results in no operator error [\#1766](https://github.com/nlohmann/json/issues/1766) -- Warning: unsequenced modification and access to 'range' [\#1674](https://github.com/nlohmann/json/issues/1674) -- Segmentation fault \(stack overflow\) due to unbounded recursion [\#1419](https://github.com/nlohmann/json/issues/1419) -- Stack-overflow \(OSS-Fuzz 4234\) [\#832](https://github.com/nlohmann/json/issues/832) - -- Configure WhiteSource Bolt for GitHub [\#1830](https://github.com/nlohmann/json/pull/1830) ([mend-bolt-for-github[bot]](https://github.com/apps/mend-bolt-for-github)) -- Prevent stackoverflow caused by recursive deconstruction [\#1436](https://github.com/nlohmann/json/pull/1436) ([nickaein](https://github.com/nickaein)) - -## [v3.7.1](https://github.com/nlohmann/json/releases/tag/v3.7.1) (2019-11-06) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.7.0...v3.7.1) - -- std::is\_constructible is always true with tuple [\#1825](https://github.com/nlohmann/json/issues/1825) -- Can't compile from\_json\(std::valarray\\). [\#1824](https://github.com/nlohmann/json/issues/1824) -- json class should have a get\_or member function [\#1823](https://github.com/nlohmann/json/issues/1823) -- NLOHMANN\_JSON\_SERIALIZE\_ENUM macro capture's json objects by value [\#1822](https://github.com/nlohmann/json/issues/1822) -- Parse fails when number literals start with zero [\#1820](https://github.com/nlohmann/json/issues/1820) -- Weird behaviour of `contains` with `json_pointer` [\#1815](https://github.com/nlohmann/json/issues/1815) -- strange behaviour with json\_pointer and .contains\(\) [\#1811](https://github.com/nlohmann/json/issues/1811) -- Can \#1695 be re-opened? [\#1808](https://github.com/nlohmann/json/issues/1808) -- Merge two json objects [\#1807](https://github.com/nlohmann/json/issues/1807) -- std::is\_constructible\\> when to\_json not defined [\#1805](https://github.com/nlohmann/json/issues/1805) -- Private data on parsing [\#1802](https://github.com/nlohmann/json/issues/1802) -- Capturing Line and Position when querying [\#1800](https://github.com/nlohmann/json/issues/1800) -- json error on parsing DBL\_MAX from string [\#1796](https://github.com/nlohmann/json/issues/1796) -- De/Serialisation of vector of tupple object with nested obect need Help please [\#1794](https://github.com/nlohmann/json/issues/1794) -- Output json is corrupted [\#1793](https://github.com/nlohmann/json/issues/1793) -- variable name byte sometimes used as a \#define [\#1792](https://github.com/nlohmann/json/issues/1792) -- Can't read json file [\#1791](https://github.com/nlohmann/json/issues/1791) -- Problems with special German letters [\#1789](https://github.com/nlohmann/json/issues/1789) -- Support for trailing commas [\#1787](https://github.com/nlohmann/json/issues/1787) -- json\_pointer construction bug [\#1786](https://github.com/nlohmann/json/issues/1786) -- Visual Studio 2017 warning [\#1784](https://github.com/nlohmann/json/issues/1784) -- ciso646 header become obsolete [\#1782](https://github.com/nlohmann/json/issues/1782) -- Migrate LGTM.com installation from OAuth to GitHub App [\#1781](https://github.com/nlohmann/json/issues/1781) -- JSON comparison, contains and operator& [\#1778](https://github.com/nlohmann/json/issues/1778) -- pass a json object to a class contructor adds an array around the object [\#1776](https://github.com/nlohmann/json/issues/1776) -- 'Float' number\_float\_function\_t template parameter name conflicts with C '\#define Float float' [\#1775](https://github.com/nlohmann/json/issues/1775) -- A weird building problem :-\( [\#1774](https://github.com/nlohmann/json/issues/1774) -- What is this json\_ref? [\#1772](https://github.com/nlohmann/json/issues/1772) -- Interoperability with other languages [\#1770](https://github.com/nlohmann/json/issues/1770) -- Json dump [\#1768](https://github.com/nlohmann/json/issues/1768) -- json\_pointer\<\>::back\(\) should be const [\#1764](https://github.com/nlohmann/json/issues/1764) -- How to get value from array [\#1762](https://github.com/nlohmann/json/issues/1762) -- Merge two jsons [\#1757](https://github.com/nlohmann/json/issues/1757) -- Unable to locate nlohmann\_jsonConfig.cmake [\#1755](https://github.com/nlohmann/json/issues/1755) -- json.hpp won;t compile VS2019 CLR/CLI app but does in console app [\#1754](https://github.com/nlohmann/json/issues/1754) -- \[Nested Json Objects\] Segmentation fault [\#1753](https://github.com/nlohmann/json/issues/1753) -- remove/replace assert with exceptions [\#1752](https://github.com/nlohmann/json/issues/1752) -- Add array support for update\(\) function [\#1751](https://github.com/nlohmann/json/issues/1751) -- Is there a reason the `get_to` method is defined in `include/nlohmann/json.hpp` but not in `single_include/nlohmann/json.hpp`? [\#1750](https://github.com/nlohmann/json/issues/1750) -- how to validate json object before calling dump\(\) [\#1748](https://github.com/nlohmann/json/issues/1748) -- Unable to invoke accessors on json objects in lldb [\#1745](https://github.com/nlohmann/json/issues/1745) -- Escaping string before parsing [\#1743](https://github.com/nlohmann/json/issues/1743) -- Construction in a member initializer list using curly braces is set as 'array' [\#1742](https://github.com/nlohmann/json/issues/1742) -- Read a subkey from json object [\#1740](https://github.com/nlohmann/json/issues/1740) -- Serialize vector of glm:vec2 [\#1739](https://github.com/nlohmann/json/issues/1739) -- Support nlohmann::basic\_json::value with JSON\_NOEXCEPTION [\#1738](https://github.com/nlohmann/json/issues/1738) -- how to know the parse is error [\#1737](https://github.com/nlohmann/json/issues/1737) -- How to check if a given key exists in a JSON object [\#1736](https://github.com/nlohmann/json/issues/1736) -- Allow The Colon Key-Value Delimiter To Have A Space Before It \[@ READ ONLY\] [\#1735](https://github.com/nlohmann/json/issues/1735) -- Allow Tail { "Key": "Value" } Comma \[@ READ ONLY\] [\#1734](https://github.com/nlohmann/json/issues/1734) -- No-throw json::value\(\) [\#1733](https://github.com/nlohmann/json/issues/1733) -- JsonObject.dump\(\) [\#1732](https://github.com/nlohmann/json/issues/1732) -- basic\_json has no member "parse" [\#1731](https://github.com/nlohmann/json/issues/1731) -- Exception "type must be string, but is array" [\#1730](https://github.com/nlohmann/json/issues/1730) -- json::contains usage to find a path [\#1727](https://github.com/nlohmann/json/issues/1727) -- How to create JSON Object from my Structures of Data and Json File from that Object [\#1726](https://github.com/nlohmann/json/issues/1726) -- please provide an API to read JSON from file directly. [\#1725](https://github.com/nlohmann/json/issues/1725) -- How to modify a value stored at a key? [\#1723](https://github.com/nlohmann/json/issues/1723) -- CMake not correctly finding the configuration package for 3.7.0 [\#1721](https://github.com/nlohmann/json/issues/1721) -- name typo in the "spack package management" section of README.md [\#1720](https://github.com/nlohmann/json/issues/1720) -- How to add json to another json? [\#1718](https://github.com/nlohmann/json/issues/1718) -- json::parse\(\) ubsan regression with v3.7.0 [\#1716](https://github.com/nlohmann/json/issues/1716) -- What I am doing wrong?!? [\#1714](https://github.com/nlohmann/json/issues/1714) -- Potential memory leak detected by Valgrind [\#1713](https://github.com/nlohmann/json/issues/1713) -- json::parse is not thread safe? [\#1712](https://github.com/nlohmann/json/issues/1712) -- static analysis alarm by cppcheck [\#1711](https://github.com/nlohmann/json/issues/1711) -- The compilation time is slow [\#1710](https://github.com/nlohmann/json/issues/1710) -- not linking properly with cmake [\#1709](https://github.com/nlohmann/json/issues/1709) -- Error in dump\(\) with int64\_t minimum value [\#1708](https://github.com/nlohmann/json/issues/1708) -- Crash on trying to deserialize json string on 3ds homebrew [\#1707](https://github.com/nlohmann/json/issues/1707) -- Can't compile VS2019. 13 Errors [\#1706](https://github.com/nlohmann/json/issues/1706) -- find an object that matches the search criteria [\#1705](https://github.com/nlohmann/json/issues/1705) -- IntelliSense goes crazy on VS2019 [\#1704](https://github.com/nlohmann/json/issues/1704) -- Installing on Ubuntu 16.04 [\#1703](https://github.com/nlohmann/json/issues/1703) -- Where is json::parse now? [\#1702](https://github.com/nlohmann/json/issues/1702) -- Forward header should't be amalgamated [\#1700](https://github.com/nlohmann/json/issues/1700) -- Json support for Cmake version 2.8.12 [\#1699](https://github.com/nlohmann/json/issues/1699) -- Intruisive scientific notation when using .dump\(\); [\#1698](https://github.com/nlohmann/json/issues/1698) -- Is there support for automatic serialization/deserialization? [\#1696](https://github.com/nlohmann/json/issues/1696) -- on MSVC dump\(\) will hard crash for larger json [\#1693](https://github.com/nlohmann/json/issues/1693) -- puzzled implicit conversions [\#1692](https://github.com/nlohmann/json/issues/1692) -- Information: My project uses this awesome library [\#1691](https://github.com/nlohmann/json/issues/1691) -- Consider listing files explicitly instead of using GLOB [\#1686](https://github.com/nlohmann/json/issues/1686) -- Failing tests on MSVC with VS2019 15.9.13 x64 [\#1685](https://github.com/nlohmann/json/issues/1685) -- Change from v2 to v3. Encoding with cp1252 [\#1680](https://github.com/nlohmann/json/issues/1680) -- How to add Fifo\_map into json using Cmake [\#1679](https://github.com/nlohmann/json/issues/1679) -- include.zip should contain meson.build [\#1672](https://github.com/nlohmann/json/issues/1672) -- \[Question\] How do I parse JSON into custom types? [\#1669](https://github.com/nlohmann/json/issues/1669) -- Binary \(0x05\) data type for BSON to JSON conversion [\#1668](https://github.com/nlohmann/json/issues/1668) -- Possible to call dump from lldb? [\#1666](https://github.com/nlohmann/json/issues/1666) -- Segmentation fault when linked with libunwind [\#1665](https://github.com/nlohmann/json/issues/1665) -- Should I include single-header after my to\_json and from\_json custom functions declaration? Why not? [\#1663](https://github.com/nlohmann/json/issues/1663) -- Errors/Warnings in VS 2019 when Including Header File [\#1659](https://github.com/nlohmann/json/issues/1659) -- Return null object from object's const operator\[\] as well. [\#1658](https://github.com/nlohmann/json/issues/1658) -- Can't stream json object in to std::basic\_stringstream\ [\#1656](https://github.com/nlohmann/json/issues/1656) -- C2440 in vs2015 cannot convert from 'initializer-list' to nlohmann::basic\_json [\#1655](https://github.com/nlohmann/json/issues/1655) -- Issues around get and pointers [\#1653](https://github.com/nlohmann/json/issues/1653) -- Non-member operator== breaks enum \(de\)serialization [\#1647](https://github.com/nlohmann/json/issues/1647) -- Valgrind: bytes in 1 blocks are definitely lost [\#1646](https://github.com/nlohmann/json/issues/1646) -- Convenient way to make 'basic\_json' accept 'QString' as an key type as well? [\#1640](https://github.com/nlohmann/json/issues/1640) -- mongodb: nan, inf [\#1599](https://github.com/nlohmann/json/issues/1599) -- Error in adl\_serializer [\#1590](https://github.com/nlohmann/json/issues/1590) -- Injecting class during serialization [\#1584](https://github.com/nlohmann/json/issues/1584) -- output\_adapter not user extensible [\#1534](https://github.com/nlohmann/json/issues/1534) -- Inclusion of nlohmann/json.hpp causes OS/ABI to change on Linux [\#1410](https://github.com/nlohmann/json/issues/1410) -- Add library versioning using inline namespaces [\#1394](https://github.com/nlohmann/json/issues/1394) -- CBOR byte string support [\#1129](https://github.com/nlohmann/json/issues/1129) -- How to deserialize array with derived objects [\#716](https://github.com/nlohmann/json/issues/716) - -- Add restriction for tuple specialization of to\_json [\#1826](https://github.com/nlohmann/json/pull/1826) ([cbegue](https://github.com/cbegue)) -- Fix for \#1647 [\#1821](https://github.com/nlohmann/json/pull/1821) ([AnthonyVH](https://github.com/AnthonyVH)) -- Fix issue \#1805 [\#1806](https://github.com/nlohmann/json/pull/1806) ([cbegue](https://github.com/cbegue)) -- Fix some spelling errors - mostly in comments & documentation. [\#1803](https://github.com/nlohmann/json/pull/1803) ([flopp](https://github.com/flopp)) -- Update Hedley to v11. [\#1799](https://github.com/nlohmann/json/pull/1799) ([nemequ](https://github.com/nemequ)) -- iteration\_proxy: Fix integer truncation from std::size\_t to int [\#1797](https://github.com/nlohmann/json/pull/1797) ([t-b](https://github.com/t-b)) -- appveyor.yml: Add MSVC 16 2019 support [\#1780](https://github.com/nlohmann/json/pull/1780) ([t-b](https://github.com/t-b)) -- test/CMakeLists.txt: Use an explicit list instead of GLOB [\#1779](https://github.com/nlohmann/json/pull/1779) ([t-b](https://github.com/t-b)) -- Make json\_pointer::back const \(resolves \#1764\) [\#1769](https://github.com/nlohmann/json/pull/1769) ([chris0x44](https://github.com/chris0x44)) -- did you mean 'serialization'? [\#1767](https://github.com/nlohmann/json/pull/1767) ([0xflotus](https://github.com/0xflotus)) -- Allow items\(\) to be used with custom string [\#1765](https://github.com/nlohmann/json/pull/1765) ([crazyjul](https://github.com/crazyjul)) -- Cppcheck fixes [\#1760](https://github.com/nlohmann/json/pull/1760) ([Xav83](https://github.com/Xav83)) -- Fix and add test's for SFINAE problem [\#1741](https://github.com/nlohmann/json/pull/1741) ([tete17](https://github.com/tete17)) -- Fix clang sanitizer invocation [\#1728](https://github.com/nlohmann/json/pull/1728) ([t-b](https://github.com/t-b)) -- Add gcc 9 and compile with experimental C++20 support [\#1724](https://github.com/nlohmann/json/pull/1724) ([t-b](https://github.com/t-b)) -- Fix int64 min issue [\#1722](https://github.com/nlohmann/json/pull/1722) ([t-b](https://github.com/t-b)) -- release: add singleinclude and meson.build to include.zip [\#1694](https://github.com/nlohmann/json/pull/1694) ([eli-schwartz](https://github.com/eli-schwartz)) - -## [v3.7.0](https://github.com/nlohmann/json/releases/tag/v3.7.0) (2019-07-28) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.6.1...v3.7.0) - -- How can I retrieve uknown strings from json file in my C++ program. [\#1684](https://github.com/nlohmann/json/issues/1684) -- contains\(\) is sometimes causing stack-based buffer overrun exceptions [\#1683](https://github.com/nlohmann/json/issues/1683) -- How to deserialize arrays from json [\#1681](https://github.com/nlohmann/json/issues/1681) -- Compilation failed in VS2015 [\#1678](https://github.com/nlohmann/json/issues/1678) -- Why the compiled object file is so huge? [\#1677](https://github.com/nlohmann/json/issues/1677) -- From Version 2.1.1 to 3.6.1 serialize std::set [\#1676](https://github.com/nlohmann/json/issues/1676) -- Qt deprecation model halting compiltion [\#1675](https://github.com/nlohmann/json/issues/1675) -- Build For Raspberry pi , Rapbery with new Compiler C++17 [\#1671](https://github.com/nlohmann/json/issues/1671) -- Build from Raspberry pi [\#1667](https://github.com/nlohmann/json/issues/1667) -- Can not translate map with integer key to dict string ? [\#1664](https://github.com/nlohmann/json/issues/1664) -- Double type converts to scientific notation [\#1661](https://github.com/nlohmann/json/issues/1661) -- Missing v3.6.1 tag on master branch [\#1657](https://github.com/nlohmann/json/issues/1657) -- Support Fleese Binary Data Format [\#1654](https://github.com/nlohmann/json/issues/1654) -- Suggestion: replace alternative tokens for !, && and || with their symbols [\#1652](https://github.com/nlohmann/json/issues/1652) -- Build failure test-allocator.vcxproj [\#1651](https://github.com/nlohmann/json/issues/1651) -- How to provide function json& to\_json\(\) which is similar as 'void to\_json\(json&j, const CObject& obj\)' ? [\#1650](https://github.com/nlohmann/json/issues/1650) -- Can't throw exception when starting file is a number [\#1649](https://github.com/nlohmann/json/issues/1649) -- to\_json / from\_json with nested type [\#1648](https://github.com/nlohmann/json/issues/1648) -- How to create a json object from a std::string, created by j.dump? [\#1645](https://github.com/nlohmann/json/issues/1645) -- Problem getting vector \(array\) of strings [\#1644](https://github.com/nlohmann/json/issues/1644) -- json.hpp compilation issue with other typedefs with same name [\#1642](https://github.com/nlohmann/json/issues/1642) -- nlohmann::adl\_serializer\::to\_json no matching overloaded function found [\#1641](https://github.com/nlohmann/json/issues/1641) -- overwrite adl\_serializer\ to change behaviour [\#1638](https://github.com/nlohmann/json/issues/1638) -- json.SelectToken\("Manufacturers.Products.Price"\); [\#1637](https://github.com/nlohmann/json/issues/1637) -- Add json type as value [\#1636](https://github.com/nlohmann/json/issues/1636) -- Unit conversion test error: conversion from 'nlohmann::json' to non-scalar type 'std::string\_view' requested [\#1634](https://github.com/nlohmann/json/issues/1634) -- nlohmann VS JsonCpp by C++17 [\#1633](https://github.com/nlohmann/json/issues/1633) -- To integrate an inline helper function that return type name as string [\#1632](https://github.com/nlohmann/json/issues/1632) -- Return JSON as reference [\#1631](https://github.com/nlohmann/json/issues/1631) -- Updating from an older version causes problems with assing a json object to a struct [\#1630](https://github.com/nlohmann/json/issues/1630) -- Can without default constructor function for user defined classes when only to\_json is needed? [\#1629](https://github.com/nlohmann/json/issues/1629) -- Compilation fails with clang 6.x-8.x in C++14 mode [\#1628](https://github.com/nlohmann/json/issues/1628) -- Treating floating point as string [\#1627](https://github.com/nlohmann/json/issues/1627) -- error parsing character å [\#1626](https://github.com/nlohmann/json/issues/1626) -- \[Help\] How to Improve Json Output Performance with Large Json Arrays [\#1624](https://github.com/nlohmann/json/issues/1624) -- Suggested link changes for reporting new issues \[blob/develop/REAME.md and blob/develop/.github/CONTRIBUTING.md\] [\#1623](https://github.com/nlohmann/json/issues/1623) -- Broken link to issue template in CONTRIBUTING.md [\#1622](https://github.com/nlohmann/json/issues/1622) -- Missing word in README.md file [\#1621](https://github.com/nlohmann/json/issues/1621) -- Package manager instructions in README for brew is incorrect [\#1620](https://github.com/nlohmann/json/issues/1620) -- Building with Visual Studio 2019 [\#1619](https://github.com/nlohmann/json/issues/1619) -- Precedence of to\_json and builtin harmful [\#1617](https://github.com/nlohmann/json/issues/1617) -- The type json is missing from the html documentation [\#1616](https://github.com/nlohmann/json/issues/1616) -- variant is not support in Release 3.6.1? [\#1615](https://github.com/nlohmann/json/issues/1615) -- Replace assert with throw for const operator\[\] [\#1614](https://github.com/nlohmann/json/issues/1614) -- Memory Overhead is Too High \(10x or more\) [\#1613](https://github.com/nlohmann/json/issues/1613) -- program crash everytime, when other data type incomming in json stream as expected [\#1612](https://github.com/nlohmann/json/issues/1612) -- Improved Enum Support [\#1611](https://github.com/nlohmann/json/issues/1611) -- is it possible convert json object back to stl container ? [\#1610](https://github.com/nlohmann/json/issues/1610) -- Add C++17-like emplace.back\(\) for arrays. [\#1609](https://github.com/nlohmann/json/issues/1609) -- is\_nothrow\_copy\_constructible fails for json::const\_iterator on MSVC2015 x86 Debug build [\#1608](https://github.com/nlohmann/json/issues/1608) -- Reading and writing array elements [\#1607](https://github.com/nlohmann/json/issues/1607) -- Converting json::value to int [\#1605](https://github.com/nlohmann/json/issues/1605) -- I have a vector of keys and and a string of value and i want to create nested json array [\#1604](https://github.com/nlohmann/json/issues/1604) -- In compatible JSON object from nlohmann::json to nohman::json - unexpected end of input; expected '\[', '{', or a literal [\#1603](https://github.com/nlohmann/json/issues/1603) -- json parser crash if having a large number integer in message [\#1602](https://github.com/nlohmann/json/issues/1602) -- Value method with undocumented throwing 302 exception [\#1601](https://github.com/nlohmann/json/issues/1601) -- Accessing value with json pointer adds key if not existing [\#1600](https://github.com/nlohmann/json/issues/1600) -- README.md broken link to project documentation [\#1597](https://github.com/nlohmann/json/issues/1597) -- Random Kudos: Thanks for your work on this! [\#1596](https://github.com/nlohmann/json/issues/1596) -- json::parse return value and errors [\#1595](https://github.com/nlohmann/json/issues/1595) -- initializer list constructor makes curly brace initialization fragile [\#1594](https://github.com/nlohmann/json/issues/1594) -- trying to log message for missing keyword, difference between \["foo"\] and at\("foo"\) [\#1593](https://github.com/nlohmann/json/issues/1593) -- std::string and std::wstring `to_json` [\#1592](https://github.com/nlohmann/json/issues/1592) -- I have a C structure which I need to convert to a JSON. How do I do it? Haven't found proper examples so far. [\#1591](https://github.com/nlohmann/json/issues/1591) -- dump\_escaped possible error ? [\#1589](https://github.com/nlohmann/json/issues/1589) -- json::parse\(\) into a vector\ results in unhandled exception [\#1587](https://github.com/nlohmann/json/issues/1587) -- push\_back\(\)/emplace\_back\(\) on array invalidates pointers to existing array items [\#1586](https://github.com/nlohmann/json/issues/1586) -- Getting nlohmann::detail::parse\_error on JSON generated by nlohmann::json not sure why [\#1583](https://github.com/nlohmann/json/issues/1583) -- getting error terminate called after throwing an instance of 'std::domain\_error' what\(\): cannot use at\(\) with string [\#1582](https://github.com/nlohmann/json/issues/1582) -- how i create json file [\#1581](https://github.com/nlohmann/json/issues/1581) -- prevent rounding of double datatype values [\#1580](https://github.com/nlohmann/json/issues/1580) -- Documentation Container Overview Doesn't Reference Const Methods [\#1579](https://github.com/nlohmann/json/issues/1579) -- Writing an array into a nlohmann::json object [\#1578](https://github.com/nlohmann/json/issues/1578) -- compilation error when using with another library [\#1577](https://github.com/nlohmann/json/issues/1577) -- Homebrew on OSX doesn't install cmake config file [\#1576](https://github.com/nlohmann/json/issues/1576) -- JSON Parse Out of Range Error [\#1574](https://github.com/nlohmann/json/issues/1574) -- Integrating into existing CMake Project [\#1573](https://github.com/nlohmann/json/issues/1573) -- conversion to std::string failed [\#1571](https://github.com/nlohmann/json/issues/1571) -- jPtr operation does not throw [\#1569](https://github.com/nlohmann/json/issues/1569) -- How to generate dll file for this project [\#1568](https://github.com/nlohmann/json/issues/1568) -- how to pass variable data to json in c [\#1567](https://github.com/nlohmann/json/issues/1567) -- I want to achieve an upgraded function. [\#1566](https://github.com/nlohmann/json/issues/1566) -- How to determine the type of elements read from a JSON array? [\#1564](https://github.com/nlohmann/json/issues/1564) -- try\_get\_to [\#1563](https://github.com/nlohmann/json/issues/1563) -- example code compile error [\#1562](https://github.com/nlohmann/json/issues/1562) -- How to iterate over nested json object [\#1561](https://github.com/nlohmann/json/issues/1561) -- Build Option/Separate Function to Allow to Throw on Duplicate Keys [\#1560](https://github.com/nlohmann/json/issues/1560) -- Compiler Switches -Weffc++ & -Wshadow are throwing errors [\#1558](https://github.com/nlohmann/json/issues/1558) -- warning: use of the 'nodiscard' attribute is a C++17 extension [\#1557](https://github.com/nlohmann/json/issues/1557) -- Import/Export compressed JSON files [\#1556](https://github.com/nlohmann/json/issues/1556) -- GDB renderers for json library [\#1554](https://github.com/nlohmann/json/issues/1554) -- Is it possible to construct a json string object from a binary buffer? [\#1553](https://github.com/nlohmann/json/issues/1553) -- json objects in list [\#1552](https://github.com/nlohmann/json/issues/1552) -- Matrix output [\#1550](https://github.com/nlohmann/json/issues/1550) -- Using json merge\_patch on ordered non-alphanumeric datasets [\#1549](https://github.com/nlohmann/json/issues/1549) -- Invalid parsed value for big integer [\#1548](https://github.com/nlohmann/json/issues/1548) -- Integrating with android ndk issues. [\#1547](https://github.com/nlohmann/json/issues/1547) -- add noexcept json::value\("key", default\) method variant? [\#1546](https://github.com/nlohmann/json/issues/1546) -- Thank you! 🙌 [\#1545](https://github.com/nlohmann/json/issues/1545) -- Output and input matrix [\#1544](https://github.com/nlohmann/json/issues/1544) -- Add regression tests for MSVC [\#1543](https://github.com/nlohmann/json/issues/1543) -- \[Help Needed!\] Season of Docs [\#1542](https://github.com/nlohmann/json/issues/1542) -- program still abort\(\) or exit\(\) with try catch [\#1541](https://github.com/nlohmann/json/issues/1541) -- Have a json::type\_error exception because of JSON object [\#1540](https://github.com/nlohmann/json/issues/1540) -- Quoted numbers [\#1538](https://github.com/nlohmann/json/issues/1538) -- Reading a JSON file into an object [\#1537](https://github.com/nlohmann/json/issues/1537) -- Releases 3.6.0 and 3.6.1 don't build on conda / windows [\#1536](https://github.com/nlohmann/json/issues/1536) -- \[Clang\] warning: use of the 'nodiscard' attribute is a C++17 extension \[-Wc++17-extensions\] [\#1535](https://github.com/nlohmann/json/issues/1535) -- wchar\_t/std::wstring json can be created but not accessed [\#1533](https://github.com/nlohmann/json/issues/1533) -- json stringify [\#1532](https://github.com/nlohmann/json/issues/1532) -- How can I use it from gcc on RPI [\#1528](https://github.com/nlohmann/json/issues/1528) -- std::pair treated as an array instead of key-value in `std::vector>` [\#1520](https://github.com/nlohmann/json/issues/1520) -- Excessive Memory Usage for Large Json File [\#1516](https://github.com/nlohmann/json/issues/1516) -- SAX dumper [\#1512](https://github.com/nlohmann/json/issues/1512) -- Conversion to user type containing a std::vector not working with documented approach [\#1511](https://github.com/nlohmann/json/issues/1511) -- Inconsistent use of type alias. [\#1507](https://github.com/nlohmann/json/issues/1507) -- Is there a current way to represent strings as json int? [\#1503](https://github.com/nlohmann/json/issues/1503) -- Intermittent issues with loadJSON [\#1484](https://github.com/nlohmann/json/issues/1484) -- use json construct std::string [\#1462](https://github.com/nlohmann/json/issues/1462) -- JSON Creation [\#1461](https://github.com/nlohmann/json/issues/1461) -- Null bytes in files are treated like EOF [\#1095](https://github.com/nlohmann/json/issues/1095) -- Feature: to\_string\(const json& j\); [\#916](https://github.com/nlohmann/json/issues/916) - -- Use GNUInstallDirs instead of hard-coded path. [\#1673](https://github.com/nlohmann/json/pull/1673) ([ghost](https://github.com/ghost)) -- Package Manager: MSYS2 \(pacman\) [\#1670](https://github.com/nlohmann/json/pull/1670) ([podsvirov](https://github.com/podsvirov)) -- Fix json.hpp compilation issue with other typedefs with same name \(Issue \#1642\) [\#1643](https://github.com/nlohmann/json/pull/1643) ([kevinlul](https://github.com/kevinlul)) -- Add explicit conversion from json to std::string\_view in conversion unit test [\#1639](https://github.com/nlohmann/json/pull/1639) ([taylorhoward92](https://github.com/taylorhoward92)) -- Minor fixes in docs [\#1625](https://github.com/nlohmann/json/pull/1625) ([nickaein](https://github.com/nickaein)) -- Fix broken links to documentation [\#1598](https://github.com/nlohmann/json/pull/1598) ([nickaein](https://github.com/nickaein)) -- Added to\_string and added basic tests [\#1585](https://github.com/nlohmann/json/pull/1585) ([Macr0Nerd](https://github.com/Macr0Nerd)) -- Regression tests for MSVC [\#1570](https://github.com/nlohmann/json/pull/1570) ([nickaein](https://github.com/nickaein)) -- Fix/1511 [\#1555](https://github.com/nlohmann/json/pull/1555) ([theodelrieu](https://github.com/theodelrieu)) -- Remove C++17 extension warning from clang; \#1535 [\#1551](https://github.com/nlohmann/json/pull/1551) ([heavywatal](https://github.com/heavywatal)) -- moved from Catch to doctest for unit tests [\#1439](https://github.com/nlohmann/json/pull/1439) ([onqtam](https://github.com/onqtam)) - -## [v3.6.1](https://github.com/nlohmann/json/releases/tag/v3.6.1) (2019-03-20) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.6.1...v3.6.1) - -## [3.6.1](https://github.com/nlohmann/json/releases/tag/3.6.1) (2019-03-20) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.6.0...3.6.1) - -- Failed to build with \ [\#1531](https://github.com/nlohmann/json/issues/1531) -- Compiling 3.6.0 with GCC \> 7, array vs std::array \#590 is back [\#1530](https://github.com/nlohmann/json/issues/1530) -- 3.6.0: warning: missing initializer for member 'std::array\::\_M\_elems' \[-Wmissing-field-initializers\] [\#1527](https://github.com/nlohmann/json/issues/1527) -- unable to parse json [\#1525](https://github.com/nlohmann/json/issues/1525) - -## [v3.6.0](https://github.com/nlohmann/json/releases/tag/v3.6.0) (2019-03-19) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.5.0...v3.6.0) - -- How can I turn a string of a json array into a json array? [\#1526](https://github.com/nlohmann/json/issues/1526) -- Minor: missing a std:: namespace tag [\#1521](https://github.com/nlohmann/json/issues/1521) -- how to precision to four decimal for double when use to\_json [\#1519](https://github.com/nlohmann/json/issues/1519) -- error parse [\#1518](https://github.com/nlohmann/json/issues/1518) -- Compile error: template argument deduction/substitution failed [\#1515](https://github.com/nlohmann/json/issues/1515) -- std::complex type [\#1510](https://github.com/nlohmann/json/issues/1510) -- CBOR byte string support [\#1509](https://github.com/nlohmann/json/issues/1509) -- Compilation error getting a std::pair\<\> on latest VS 2017 compiler [\#1506](https://github.com/nlohmann/json/issues/1506) -- "Integration" section of documentation needs update? [\#1505](https://github.com/nlohmann/json/issues/1505) -- Json object from string from a TCP socket [\#1504](https://github.com/nlohmann/json/issues/1504) -- MSVC warning C4946 \("reinterpret\_cast used between related classes"\) compiling json.hpp [\#1502](https://github.com/nlohmann/json/issues/1502) -- How to programmatically fill an n-th dimensional JSON object? [\#1501](https://github.com/nlohmann/json/issues/1501) -- Error compiling with clang and `JSON_NOEXCEPTION`: need to include `cstdlib` [\#1500](https://github.com/nlohmann/json/issues/1500) -- The code compiles unsuccessfully with android-ndk-r10e [\#1499](https://github.com/nlohmann/json/issues/1499) -- Cmake 3.1 in develop, when is it likely to make it into a stable release? [\#1498](https://github.com/nlohmann/json/issues/1498) -- Some Help please object inside array [\#1494](https://github.com/nlohmann/json/issues/1494) -- How to get data into vector of user-defined type from a Json object [\#1493](https://github.com/nlohmann/json/issues/1493) -- how to find subelement without loop [\#1490](https://github.com/nlohmann/json/issues/1490) -- json to std::map [\#1487](https://github.com/nlohmann/json/issues/1487) -- Type in README.md [\#1486](https://github.com/nlohmann/json/issues/1486) -- Error in parsing and reading msgpack-lite [\#1485](https://github.com/nlohmann/json/issues/1485) -- Compiling issues with libc 2.12 [\#1483](https://github.com/nlohmann/json/issues/1483) -- How do I use reference or pointer binding values? [\#1482](https://github.com/nlohmann/json/issues/1482) -- Compilation fails in MSVC with the Microsoft Language Extensions disabled [\#1481](https://github.com/nlohmann/json/issues/1481) -- Functional visit [\#1480](https://github.com/nlohmann/json/issues/1480) -- \[Question\] Unescaped dump [\#1479](https://github.com/nlohmann/json/issues/1479) -- Some Help please [\#1478](https://github.com/nlohmann/json/issues/1478) -- Global variables are stored within the JSON file, how do I declare them as global variables when I read them out in my C++ program? [\#1476](https://github.com/nlohmann/json/issues/1476) -- Unable to modify one of the values within the JSON file, and save it [\#1475](https://github.com/nlohmann/json/issues/1475) -- Documentation of parse function has two identical @pre causes [\#1473](https://github.com/nlohmann/json/issues/1473) -- GCC 9.0 build failure [\#1472](https://github.com/nlohmann/json/issues/1472) -- Can we have an `exists()` method? [\#1471](https://github.com/nlohmann/json/issues/1471) -- How to parse multi object json from file? [\#1470](https://github.com/nlohmann/json/issues/1470) -- How to returns the name of the upper object? [\#1467](https://github.com/nlohmann/json/issues/1467) -- Error: "tuple\_size" has already been declared in the current scope [\#1466](https://github.com/nlohmann/json/issues/1466) -- Checking keys of two jsons against eachother [\#1465](https://github.com/nlohmann/json/issues/1465) -- Disable installation when used as meson subproject [\#1463](https://github.com/nlohmann/json/issues/1463) -- Unpack list of integers to a std::vector\ [\#1460](https://github.com/nlohmann/json/issues/1460) -- Implement DRY definition of JSON representation of a c++ class [\#1459](https://github.com/nlohmann/json/issues/1459) -- json.exception.type\_error.305 with GCC 4.9 when using C++ {} initializer [\#1458](https://github.com/nlohmann/json/issues/1458) -- API to convert an "uninitialized" json into an empty object or empty array [\#1456](https://github.com/nlohmann/json/issues/1456) -- How to parse a vector of objects with const attributes [\#1453](https://github.com/nlohmann/json/issues/1453) -- NLOHMANN\_JSON\_SERIALIZE\_ENUM potentially requires duplicate definitions [\#1450](https://github.com/nlohmann/json/issues/1450) -- Question about making json object from file directory [\#1449](https://github.com/nlohmann/json/issues/1449) -- .get\(\) throws error if used with userdefined structs in unordered\_map [\#1448](https://github.com/nlohmann/json/issues/1448) -- Integer Overflow \(OSS-Fuzz 12506\) [\#1447](https://github.com/nlohmann/json/issues/1447) -- If a string has too many invalid UTF-8 characters, json::dump attempts to index an array out of bounds. [\#1445](https://github.com/nlohmann/json/issues/1445) -- Setting values of .JSON file [\#1444](https://github.com/nlohmann/json/issues/1444) -- alias object\_t::key\_type in basic\_json [\#1442](https://github.com/nlohmann/json/issues/1442) -- Latest Ubuntu package is 2.1.1 [\#1438](https://github.com/nlohmann/json/issues/1438) -- lexer.hpp\(1363\) '\_snprintf': is not a member | Visualstudio 2017 [\#1437](https://github.com/nlohmann/json/issues/1437) -- Static method invites inadvertent logic error. [\#1433](https://github.com/nlohmann/json/issues/1433) -- EOS compilation produces "fatal error: 'nlohmann/json.hpp' file not found" [\#1432](https://github.com/nlohmann/json/issues/1432) -- Support for bad commas [\#1429](https://github.com/nlohmann/json/issues/1429) -- Please have one base exception class for all json exceptions [\#1427](https://github.com/nlohmann/json/issues/1427) -- Compilation warning: 'tuple\_size' defined as a class template here but previously declared as a struct template [\#1426](https://github.com/nlohmann/json/issues/1426) -- Which version can be used with GCC 4.8.2 ? [\#1424](https://github.com/nlohmann/json/issues/1424) -- Ignore nullptr values on constructing json object from a container [\#1422](https://github.com/nlohmann/json/issues/1422) -- Support for custom float precision via unquoted strings [\#1421](https://github.com/nlohmann/json/issues/1421) -- It is possible to call `json::find` with a json\_pointer as argument. This causes runtime UB/crash. [\#1418](https://github.com/nlohmann/json/issues/1418) -- Dump throwing exception [\#1416](https://github.com/nlohmann/json/issues/1416) -- Build error [\#1415](https://github.com/nlohmann/json/issues/1415) -- Append version to include.zip [\#1412](https://github.com/nlohmann/json/issues/1412) -- error C2039: '\_snprintf': is not a member of 'std' - Windows [\#1408](https://github.com/nlohmann/json/issues/1408) -- Deserializing to vector [\#1407](https://github.com/nlohmann/json/issues/1407) -- Efficient way to set a `json` object as value into another `json` key [\#1406](https://github.com/nlohmann/json/issues/1406) -- Document return value of parse\(\) when allow\_exceptions == false and parsing fails [\#1405](https://github.com/nlohmann/json/issues/1405) -- Unexpected behaviour with structured binding [\#1404](https://github.com/nlohmann/json/issues/1404) -- Which native types does get\\(\) allow? [\#1403](https://github.com/nlohmann/json/issues/1403) -- Add something like Json::StaticString [\#1402](https://github.com/nlohmann/json/issues/1402) -- -Wmismatched-tags in 3.5.0? [\#1401](https://github.com/nlohmann/json/issues/1401) -- Coverity Scan reports an UNCAUGHT\_EXCEPT issue [\#1400](https://github.com/nlohmann/json/issues/1400) -- fff [\#1399](https://github.com/nlohmann/json/issues/1399) -- sorry this is not an issue, just a Question, How to change a key value in a file and save it ? [\#1398](https://github.com/nlohmann/json/issues/1398) -- appveyor x64 builds appear to be using Win32 toolset [\#1374](https://github.com/nlohmann/json/issues/1374) -- Serializing/Deserializing a Class containing a vector of itself [\#1373](https://github.com/nlohmann/json/issues/1373) -- Retrieving array elements. [\#1369](https://github.com/nlohmann/json/issues/1369) -- Deserialize [\#1366](https://github.com/nlohmann/json/issues/1366) -- call of overloaded for push\_back and operator+= is ambiguous [\#1352](https://github.com/nlohmann/json/issues/1352) -- got an error and cann't figure it out [\#1351](https://github.com/nlohmann/json/issues/1351) -- Improve number-to-string conversion [\#1334](https://github.com/nlohmann/json/issues/1334) -- Implicit type conversion error on MSVC [\#1333](https://github.com/nlohmann/json/issues/1333) -- NuGet Package [\#1132](https://github.com/nlohmann/json/issues/1132) - -- Change macros to numeric\_limits [\#1514](https://github.com/nlohmann/json/pull/1514) ([naszta](https://github.com/naszta)) -- fix GCC 7.1.1 - 7.2.1 on CentOS [\#1496](https://github.com/nlohmann/json/pull/1496) ([lieff](https://github.com/lieff)) -- Update Buckaroo instructions in README.md [\#1495](https://github.com/nlohmann/json/pull/1495) ([njlr](https://github.com/njlr)) -- Fix gcc9 build error test/src/unit-allocator.cpp \(Issue \#1472\) [\#1492](https://github.com/nlohmann/json/pull/1492) ([stac47](https://github.com/stac47)) -- Fix typo in README.md [\#1491](https://github.com/nlohmann/json/pull/1491) ([nickaein](https://github.com/nickaein)) -- Do proper endian conversions [\#1489](https://github.com/nlohmann/json/pull/1489) ([andreas-schwab](https://github.com/andreas-schwab)) -- Fix documentation [\#1477](https://github.com/nlohmann/json/pull/1477) ([nickaein](https://github.com/nickaein)) -- Implement contains\(\) member function [\#1474](https://github.com/nlohmann/json/pull/1474) ([nickaein](https://github.com/nickaein)) -- Add operator/= and operator/ to construct a JSON pointer by appending two JSON pointers [\#1469](https://github.com/nlohmann/json/pull/1469) ([garethsb](https://github.com/garethsb)) -- Disable Clang -Wmismatched-tags warning on tuple\_size / tuple\_element [\#1468](https://github.com/nlohmann/json/pull/1468) ([past-due](https://github.com/past-due)) -- Disable installation when used as meson subproject. \#1463 [\#1464](https://github.com/nlohmann/json/pull/1464) ([elvisoric](https://github.com/elvisoric)) -- docs: README typo [\#1455](https://github.com/nlohmann/json/pull/1455) ([wythe](https://github.com/wythe)) -- remove extra semicolon from readme [\#1451](https://github.com/nlohmann/json/pull/1451) ([Afforix](https://github.com/Afforix)) -- attempt to fix \#1445, flush buffer in serializer::dump\_escaped in UTF8\_REJECT case. [\#1446](https://github.com/nlohmann/json/pull/1446) ([scinart](https://github.com/scinart)) -- Use C++11 features supported by CMake 3.1. [\#1441](https://github.com/nlohmann/json/pull/1441) ([iwanders](https://github.com/iwanders)) -- :rotating\_light: fixed unused variable warning [\#1435](https://github.com/nlohmann/json/pull/1435) ([pboettch](https://github.com/pboettch)) -- allow push\_back\(\) and pop\_back\(\) calls on json\_pointer [\#1434](https://github.com/nlohmann/json/pull/1434) ([pboettch](https://github.com/pboettch)) -- Add instructions about using nlohmann/json with the conda package manager [\#1430](https://github.com/nlohmann/json/pull/1430) ([nicoddemus](https://github.com/nicoddemus)) -- Updated year in README.md [\#1425](https://github.com/nlohmann/json/pull/1425) ([jef](https://github.com/jef)) -- Fixed broken links in the README file [\#1423](https://github.com/nlohmann/json/pull/1423) ([skypjack](https://github.com/skypjack)) -- Fixed broken links in the README file [\#1420](https://github.com/nlohmann/json/pull/1420) ([skypjack](https://github.com/skypjack)) -- docs: typo in README [\#1417](https://github.com/nlohmann/json/pull/1417) ([wythe](https://github.com/wythe)) -- Fix x64 target platform for appveyor [\#1414](https://github.com/nlohmann/json/pull/1414) ([nickaein](https://github.com/nickaein)) -- Improve dump\_integer performance [\#1411](https://github.com/nlohmann/json/pull/1411) ([nickaein](https://github.com/nickaein)) -- buildsystem: relax requirement on cmake version [\#1409](https://github.com/nlohmann/json/pull/1409) ([yann-morin-1998](https://github.com/yann-morin-1998)) -- CMake: Optional Install if Embedded [\#1330](https://github.com/nlohmann/json/pull/1330) ([ax3l](https://github.com/ax3l)) - -## [v3.5.0](https://github.com/nlohmann/json/releases/tag/v3.5.0) (2018-12-21) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.4.0...v3.5.0) - -- Copyconstructor inserts original into array with single element [\#1397](https://github.com/nlohmann/json/issues/1397) -- Get value without explicit typecasting [\#1395](https://github.com/nlohmann/json/issues/1395) -- Big file parsing [\#1393](https://github.com/nlohmann/json/issues/1393) -- Adding Structured Binding Support [\#1388](https://github.com/nlohmann/json/issues/1388) -- map\ exhibits unexpected behavior [\#1387](https://github.com/nlohmann/json/issues/1387) -- Error Code Return [\#1386](https://github.com/nlohmann/json/issues/1386) -- using unordered\_map as object type [\#1385](https://github.com/nlohmann/json/issues/1385) -- float precision [\#1384](https://github.com/nlohmann/json/issues/1384) -- \[json.exception.type\_error.316\] invalid UTF-8 byte at index 1: 0xC3 [\#1383](https://github.com/nlohmann/json/issues/1383) -- Inconsistent Constructor \(GCC vs. Clang\) [\#1381](https://github.com/nlohmann/json/issues/1381) -- \#define or || [\#1379](https://github.com/nlohmann/json/issues/1379) -- How to iterate inside the values ? [\#1377](https://github.com/nlohmann/json/issues/1377) -- items\(\) unable to get the elements [\#1375](https://github.com/nlohmann/json/issues/1375) -- conversion json to std::map doesn't work for types \ [\#1372](https://github.com/nlohmann/json/issues/1372) -- A minor issue in the build instructions [\#1371](https://github.com/nlohmann/json/issues/1371) -- Using this library without stream ? [\#1370](https://github.com/nlohmann/json/issues/1370) -- Writing and reading BSON data [\#1368](https://github.com/nlohmann/json/issues/1368) -- Retrieving array elements from object type iterator. [\#1367](https://github.com/nlohmann/json/issues/1367) -- json::dump\(\) silently crashes if items contain accented letters [\#1365](https://github.com/nlohmann/json/issues/1365) -- warnings in MSVC \(2015\) in 3.4.0 related to bool... [\#1364](https://github.com/nlohmann/json/issues/1364) -- Cant compile with -C++17 and beyond compiler options [\#1362](https://github.com/nlohmann/json/issues/1362) -- json to concrete type conversion through reference or pointer fails [\#1361](https://github.com/nlohmann/json/issues/1361) -- the first attributes of JSON string is misplaced [\#1360](https://github.com/nlohmann/json/issues/1360) -- Copy-construct using initializer-list converts objects to arrays [\#1359](https://github.com/nlohmann/json/issues/1359) -- About value\(key, default\_value\) and operator\[\]\(key\) [\#1358](https://github.com/nlohmann/json/issues/1358) -- Problem with printing json response object [\#1356](https://github.com/nlohmann/json/issues/1356) -- Serializing pointer segfaults [\#1355](https://github.com/nlohmann/json/issues/1355) -- Read `long long int` data as a number. [\#1354](https://github.com/nlohmann/json/issues/1354) -- eclipse oxygen in ubuntu get\ is ambiguous [\#1353](https://github.com/nlohmann/json/issues/1353) -- Can't build on Visual Studio 2017 v15.8.9 [\#1350](https://github.com/nlohmann/json/issues/1350) -- cannot parse from string? [\#1349](https://github.com/nlohmann/json/issues/1349) -- Error: out\_of\_range [\#1348](https://github.com/nlohmann/json/issues/1348) -- expansion pattern 'CompatibleObjectType' contains no argument packs, with CUDA 10 [\#1347](https://github.com/nlohmann/json/issues/1347) -- Unable to update a value for a nested\(multi-level\) json file [\#1344](https://github.com/nlohmann/json/issues/1344) -- Fails to compile when std::iterator\_traits is not SFINAE friendly. [\#1341](https://github.com/nlohmann/json/issues/1341) -- EOF flag not set on exhausted input streams. [\#1340](https://github.com/nlohmann/json/issues/1340) -- Shadowed Member in merge\_patch [\#1339](https://github.com/nlohmann/json/issues/1339) -- Periods/literal dots in keys? [\#1338](https://github.com/nlohmann/json/issues/1338) -- Protect macro expansion of commonly defined macros [\#1337](https://github.com/nlohmann/json/issues/1337) -- How to validate an input before parsing? [\#1336](https://github.com/nlohmann/json/issues/1336) -- Non-verifying dump\(\) alternative for debugging/logging needed [\#1335](https://github.com/nlohmann/json/issues/1335) -- Json Libarary is not responding for me in c++ [\#1332](https://github.com/nlohmann/json/issues/1332) -- Question - how to find an object in an array [\#1331](https://github.com/nlohmann/json/issues/1331) -- Nesting additional data in json object [\#1328](https://github.com/nlohmann/json/issues/1328) -- can to\_json\(\) be defined inside a class? [\#1324](https://github.com/nlohmann/json/issues/1324) -- CodeBlocks IDE can't find `json.hpp` header [\#1318](https://github.com/nlohmann/json/issues/1318) -- Change json\_pointer to provide an iterator begin/end/etc, don't use vectors, and also enable string\_view [\#1312](https://github.com/nlohmann/json/issues/1312) -- Xcode - adding it to library [\#1300](https://github.com/nlohmann/json/issues/1300) -- unicode: accept char16\_t, char32\_t sequences [\#1298](https://github.com/nlohmann/json/issues/1298) -- unicode: char16\_t\* is compiler error, but char16\_t\[\] is accepted [\#1297](https://github.com/nlohmann/json/issues/1297) -- Dockerfile Project Help Needed [\#1296](https://github.com/nlohmann/json/issues/1296) -- Comparisons between large unsigned and negative signed integers [\#1295](https://github.com/nlohmann/json/issues/1295) -- CMake alias to `nlohmann::json` [\#1291](https://github.com/nlohmann/json/issues/1291) -- Release zips without tests [\#1285](https://github.com/nlohmann/json/issues/1285) -- separate object\_t::key\_type from basic\_json::key\_type, and use an allocator which returns object\_t::key\_type [\#1274](https://github.com/nlohmann/json/issues/1274) -- Is there a nice way to associate external values with json elements? [\#1256](https://github.com/nlohmann/json/issues/1256) -- Delete by json\_pointer [\#1248](https://github.com/nlohmann/json/issues/1248) -- Expose lexer, as a StAX parser [\#1219](https://github.com/nlohmann/json/issues/1219) -- Subclassing json\(\) & error on recursive load [\#1201](https://github.com/nlohmann/json/issues/1201) -- Check value for existence by json\_pointer [\#1194](https://github.com/nlohmann/json/issues/1194) - -- Feature/add file input adapter [\#1392](https://github.com/nlohmann/json/pull/1392) ([dumarjo](https://github.com/dumarjo)) -- Added Support for Structured Bindings [\#1391](https://github.com/nlohmann/json/pull/1391) ([pratikpc](https://github.com/pratikpc)) -- Link to issue \#958 broken [\#1382](https://github.com/nlohmann/json/pull/1382) ([kjpus](https://github.com/kjpus)) -- readme: fix typo [\#1380](https://github.com/nlohmann/json/pull/1380) ([manu-chroma](https://github.com/manu-chroma)) -- recommend using explicit from JSON conversions [\#1363](https://github.com/nlohmann/json/pull/1363) ([theodelrieu](https://github.com/theodelrieu)) -- Fix merge\_patch shadow warning [\#1346](https://github.com/nlohmann/json/pull/1346) ([ax3l](https://github.com/ax3l)) -- Allow installation via Meson [\#1345](https://github.com/nlohmann/json/pull/1345) ([mpoquet](https://github.com/mpoquet)) -- Set eofbit on exhausted input stream. [\#1343](https://github.com/nlohmann/json/pull/1343) ([mefyl](https://github.com/mefyl)) -- Add a SFINAE friendly iterator\_traits and use that instead. [\#1342](https://github.com/nlohmann/json/pull/1342) ([dgavedissian](https://github.com/dgavedissian)) -- Fix EOL Whitespaces & CMake Spelling [\#1329](https://github.com/nlohmann/json/pull/1329) ([ax3l](https://github.com/ax3l)) - -## [v3.4.0](https://github.com/nlohmann/json/releases/tag/v3.4.0) (2018-10-30) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.3.0...v3.4.0) - -- Big uint64\_t values are serialized wrong [\#1327](https://github.com/nlohmann/json/issues/1327) -- \[Question\] Efficient check for equivalency? [\#1325](https://github.com/nlohmann/json/issues/1325) -- Can't use ifstream and .clear\(\) [\#1321](https://github.com/nlohmann/json/issues/1321) -- \[Warning\] -Wparentheses on line 555 on single\_include [\#1319](https://github.com/nlohmann/json/issues/1319) -- Compilation error using at and find with enum struct [\#1316](https://github.com/nlohmann/json/issues/1316) -- Parsing JSON from a web address [\#1311](https://github.com/nlohmann/json/issues/1311) -- How to convert JSON to Struct with embeded subject [\#1310](https://github.com/nlohmann/json/issues/1310) -- Null safety/coalescing function? [\#1309](https://github.com/nlohmann/json/issues/1309) -- Building fails using single include file: json.hpp [\#1308](https://github.com/nlohmann/json/issues/1308) -- json::parse\(std::string\) Exception inside packaged Lib [\#1306](https://github.com/nlohmann/json/issues/1306) -- Problem in Dockerfile with installation of library [\#1304](https://github.com/nlohmann/json/issues/1304) -- compile error in from\_json converting to container with std::pair [\#1299](https://github.com/nlohmann/json/issues/1299) -- Json that I am trying to parse, and I am lost Structure Array below top level [\#1293](https://github.com/nlohmann/json/issues/1293) -- Serializing std::variant causes stack overflow [\#1292](https://github.com/nlohmann/json/issues/1292) -- How do I go about customising from\_json to support \_\_int128\_t/\_\_uint128\_t? [\#1290](https://github.com/nlohmann/json/issues/1290) -- merge\_patch: inconsistent behaviour merging empty sub-object [\#1289](https://github.com/nlohmann/json/issues/1289) -- Buffer over/underrun using UBJson? [\#1288](https://github.com/nlohmann/json/issues/1288) -- Enable the latest C++ standard with Visual Studio [\#1287](https://github.com/nlohmann/json/issues/1287) -- truncation of constant value in to\_cbor\(\) [\#1286](https://github.com/nlohmann/json/issues/1286) -- eosio.wasmsdk error [\#1284](https://github.com/nlohmann/json/issues/1284) -- use the same interface for writing arrays and non-arrays [\#1283](https://github.com/nlohmann/json/issues/1283) -- How to read json file with optional entries and entries with different types [\#1281](https://github.com/nlohmann/json/issues/1281) -- merge result not as espected [\#1279](https://github.com/nlohmann/json/issues/1279) -- how to get only "name" from below json [\#1278](https://github.com/nlohmann/json/issues/1278) -- syntax error on right json string [\#1276](https://github.com/nlohmann/json/issues/1276) -- Parsing JSON Array where members have no key, using custom types [\#1267](https://github.com/nlohmann/json/issues/1267) -- I get a json exception periodically from json::parse for the same json [\#1263](https://github.com/nlohmann/json/issues/1263) -- GCC 8.2.1. Compilation error: invalid conversion from... [\#1246](https://github.com/nlohmann/json/issues/1246) -- BSON support [\#1244](https://github.com/nlohmann/json/issues/1244) -- enum to json mapping [\#1208](https://github.com/nlohmann/json/issues/1208) -- Soften the landing when dumping non-UTF8 strings \(type\_error.316 exception\) [\#1198](https://github.com/nlohmann/json/issues/1198) - -- Add macro to define enum/JSON mapping [\#1323](https://github.com/nlohmann/json/pull/1323) ([nlohmann](https://github.com/nlohmann)) -- Add BSON support [\#1320](https://github.com/nlohmann/json/pull/1320) ([nlohmann](https://github.com/nlohmann)) -- Properly convert constants to CharType [\#1315](https://github.com/nlohmann/json/pull/1315) ([nlohmann](https://github.com/nlohmann)) -- Allow to set error handler for decoding errors [\#1314](https://github.com/nlohmann/json/pull/1314) ([nlohmann](https://github.com/nlohmann)) -- Add Meson related info to README [\#1305](https://github.com/nlohmann/json/pull/1305) ([koponomarenko](https://github.com/koponomarenko)) -- Improve diagnostic messages for binary formats [\#1303](https://github.com/nlohmann/json/pull/1303) ([nlohmann](https://github.com/nlohmann)) -- add new is\_constructible\_\* traits used in from\_json [\#1301](https://github.com/nlohmann/json/pull/1301) ([theodelrieu](https://github.com/theodelrieu)) -- add constraints for variadic json\_ref constructors [\#1294](https://github.com/nlohmann/json/pull/1294) ([theodelrieu](https://github.com/theodelrieu)) -- Improve diagnostic messages [\#1282](https://github.com/nlohmann/json/pull/1282) ([nlohmann](https://github.com/nlohmann)) -- Removed linter warnings [\#1280](https://github.com/nlohmann/json/pull/1280) ([nlohmann](https://github.com/nlohmann)) -- Thirdparty benchmark: Fix Clang detection. [\#1277](https://github.com/nlohmann/json/pull/1277) ([Lord-Kamina](https://github.com/Lord-Kamina)) - -## [v3.3.0](https://github.com/nlohmann/json/releases/tag/v3.3.0) (2018-10-05) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.3.0...v3.3.0) - -## [3.3.0](https://github.com/nlohmann/json/releases/tag/3.3.0) (2018-10-05) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.2.0...3.3.0) - -- When key is not found print the key name into error too [\#1273](https://github.com/nlohmann/json/issues/1273) -- Visual Studio 2017 15.8.5 "conditional expression is constant" warning on Line 1851 in json.hpp [\#1268](https://github.com/nlohmann/json/issues/1268) -- how can we get this working on WSL? [\#1264](https://github.com/nlohmann/json/issues/1264) -- Help needed [\#1259](https://github.com/nlohmann/json/issues/1259) -- A way to get to a JSON values "key" [\#1258](https://github.com/nlohmann/json/issues/1258) -- While compiling got 76 errors [\#1255](https://github.com/nlohmann/json/issues/1255) -- Two blackslashes on json output file [\#1253](https://github.com/nlohmann/json/issues/1253) -- Including nlohmann the badwrong way. [\#1250](https://github.com/nlohmann/json/issues/1250) -- how to build with clang? [\#1247](https://github.com/nlohmann/json/issues/1247) -- Cmake target\_link\_libraries unable to find nlohmann\_json since version 3.2.0 [\#1243](https://github.com/nlohmann/json/issues/1243) -- \[Question\] Access to end\(\) iterator reference [\#1242](https://github.com/nlohmann/json/issues/1242) -- Parsing different json format [\#1241](https://github.com/nlohmann/json/issues/1241) -- Parsing Multiple JSON Files [\#1240](https://github.com/nlohmann/json/issues/1240) -- Doesn't compile under C++17 [\#1239](https://github.com/nlohmann/json/issues/1239) -- Conversion operator for nlohmann::json is not SFINAE friendly [\#1237](https://github.com/nlohmann/json/issues/1237) -- Custom deserialization of number\_float\_t [\#1236](https://github.com/nlohmann/json/issues/1236) -- deprecated-declarations warnings when compiling tests with GCC 8.2.1. [\#1233](https://github.com/nlohmann/json/issues/1233) -- Incomplete type with json\_fwd.hpp [\#1232](https://github.com/nlohmann/json/issues/1232) -- Parse Error [\#1229](https://github.com/nlohmann/json/issues/1229) -- json::get function with argument [\#1227](https://github.com/nlohmann/json/issues/1227) -- questions regarding from\_json [\#1226](https://github.com/nlohmann/json/issues/1226) -- Lambda in unevaluated context [\#1225](https://github.com/nlohmann/json/issues/1225) -- NLohmann doesn't compile when enabling strict warning policies [\#1224](https://github.com/nlohmann/json/issues/1224) -- Creating array of objects [\#1223](https://github.com/nlohmann/json/issues/1223) -- Somewhat unhelpful error message "cannot use operator\[\] with object" [\#1220](https://github.com/nlohmann/json/issues/1220) -- single\_include json.hpp [\#1218](https://github.com/nlohmann/json/issues/1218) -- Maps with enum class keys which are convertible to JSON strings should be converted to JSON dictionaries [\#1217](https://github.com/nlohmann/json/issues/1217) -- Adding JSON Array to the Array [\#1216](https://github.com/nlohmann/json/issues/1216) -- Best way to output a vector of a given type to json [\#1215](https://github.com/nlohmann/json/issues/1215) -- compiler warning: double definition of macro JSON\_INTERNAL\_CATCH [\#1213](https://github.com/nlohmann/json/issues/1213) -- Compilation error when using MOCK\_METHOD1 from GMock and nlohmann::json [\#1212](https://github.com/nlohmann/json/issues/1212) -- Issues parsing a previously encoded binary \(non-UTF8\) string. [\#1211](https://github.com/nlohmann/json/issues/1211) -- Yet another ordering question: char \* and parse\(\) [\#1209](https://github.com/nlohmann/json/issues/1209) -- Error using gcc 8.1.0 on Ubuntu 14.04 [\#1207](https://github.com/nlohmann/json/issues/1207) -- "type must be string, but is " std::string\(j.type\_name\(\) [\#1206](https://github.com/nlohmann/json/issues/1206) -- Returning empty json object from a function of type const json& ? [\#1205](https://github.com/nlohmann/json/issues/1205) -- VS2017 compiler suggests using constexpr if [\#1204](https://github.com/nlohmann/json/issues/1204) -- Template instatiation error on compiling [\#1203](https://github.com/nlohmann/json/issues/1203) -- BUG - json dump field with unicode -\> array of ints \(instead of string\) [\#1197](https://github.com/nlohmann/json/issues/1197) -- Compile error using Code::Blocks // mingw-w64 GCC 8.1.0 - "Incomplete Type" [\#1193](https://github.com/nlohmann/json/issues/1193) -- SEGFAULT on arm target [\#1190](https://github.com/nlohmann/json/issues/1190) -- Compiler crash with old Clang [\#1179](https://github.com/nlohmann/json/issues/1179) -- Custom Precision on floating point numbers [\#1170](https://github.com/nlohmann/json/issues/1170) -- Can we have a json\_view class like std::string\_view? [\#1158](https://github.com/nlohmann/json/issues/1158) -- improve error handling [\#1152](https://github.com/nlohmann/json/issues/1152) -- We should remove static\_asserts [\#960](https://github.com/nlohmann/json/issues/960) - -- Fix warning C4127: conditional expression is constant [\#1272](https://github.com/nlohmann/json/pull/1272) ([antonioborondo](https://github.com/antonioborondo)) -- Turn off additional deprecation warnings for GCC. [\#1271](https://github.com/nlohmann/json/pull/1271) ([chuckatkins](https://github.com/chuckatkins)) -- docs: Add additional CMake documentation [\#1270](https://github.com/nlohmann/json/pull/1270) ([chuckatkins](https://github.com/chuckatkins)) -- unit-testsuites.cpp: fix hangup if file not found [\#1262](https://github.com/nlohmann/json/pull/1262) ([knilch0r](https://github.com/knilch0r)) -- Fix broken cmake imported target alias [\#1260](https://github.com/nlohmann/json/pull/1260) ([chuckatkins](https://github.com/chuckatkins)) -- GCC 48 [\#1257](https://github.com/nlohmann/json/pull/1257) ([henryiii](https://github.com/henryiii)) -- Add version and license to meson.build [\#1252](https://github.com/nlohmann/json/pull/1252) ([koponomarenko](https://github.com/koponomarenko)) -- \#1179 Reordered the code. It seems to stop clang 3.4.2 in RHEL 7 from crash… [\#1249](https://github.com/nlohmann/json/pull/1249) ([LEgregius](https://github.com/LEgregius)) -- Use a version check to provide backwards comatible CMake imported target names [\#1245](https://github.com/nlohmann/json/pull/1245) ([chuckatkins](https://github.com/chuckatkins)) -- Fix issue \#1237 [\#1238](https://github.com/nlohmann/json/pull/1238) ([theodelrieu](https://github.com/theodelrieu)) -- Add a get overload taking a parameter. [\#1231](https://github.com/nlohmann/json/pull/1231) ([theodelrieu](https://github.com/theodelrieu)) -- Move lambda out of unevaluated context [\#1230](https://github.com/nlohmann/json/pull/1230) ([mandreyel](https://github.com/mandreyel)) -- Remove static asserts [\#1228](https://github.com/nlohmann/json/pull/1228) ([theodelrieu](https://github.com/theodelrieu)) -- Better error 305 [\#1221](https://github.com/nlohmann/json/pull/1221) ([rivertam](https://github.com/rivertam)) -- Fix \#1213 [\#1214](https://github.com/nlohmann/json/pull/1214) ([simnalamburt](https://github.com/simnalamburt)) -- Export package to allow builds without installing [\#1202](https://github.com/nlohmann/json/pull/1202) ([dennisfischer](https://github.com/dennisfischer)) - -## [v3.2.0](https://github.com/nlohmann/json/releases/tag/v3.2.0) (2018-08-20) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.2.0...v3.2.0) - -## [3.2.0](https://github.com/nlohmann/json/releases/tag/3.2.0) (2018-08-20) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.1.2...3.2.0) - -- Am I doing this wrong? Getting an empty string [\#1199](https://github.com/nlohmann/json/issues/1199) -- Incompatible Pointer Type [\#1196](https://github.com/nlohmann/json/issues/1196) -- json.exception.type\_error.316 [\#1195](https://github.com/nlohmann/json/issues/1195) -- Strange warnings in Code::Blocks 17.12, GNU GCC [\#1192](https://github.com/nlohmann/json/issues/1192) -- \[Question\] Current place in code to change floating point resolution [\#1191](https://github.com/nlohmann/json/issues/1191) -- Add key name when throwing type error [\#1189](https://github.com/nlohmann/json/issues/1189) -- Not able to include in visual studio code? [\#1188](https://github.com/nlohmann/json/issues/1188) -- Get an Index or row number of an element [\#1186](https://github.com/nlohmann/json/issues/1186) -- Difference between `merge_patch` and `update` [\#1183](https://github.com/nlohmann/json/issues/1183) -- Is there a way to get an element from a JSON without throwing an exception on failure? [\#1182](https://github.com/nlohmann/json/issues/1182) -- to\_string? [\#1181](https://github.com/nlohmann/json/issues/1181) -- How to cache a json object's pointer into a map? [\#1180](https://github.com/nlohmann/json/issues/1180) -- Can this library work within a Qt project for Android using Qt Creator? [\#1178](https://github.com/nlohmann/json/issues/1178) -- How to get all keys of one object? [\#1177](https://github.com/nlohmann/json/issues/1177) -- How can I only parse the first level and get the value as string? [\#1175](https://github.com/nlohmann/json/issues/1175) -- I have a query regarding nlohmann::basic\_json::basic\_json [\#1174](https://github.com/nlohmann/json/issues/1174) -- unordered\_map with vectors won't convert to json? [\#1173](https://github.com/nlohmann/json/issues/1173) -- return json objects from functions [\#1172](https://github.com/nlohmann/json/issues/1172) -- Problem when exporting to CBOR [\#1171](https://github.com/nlohmann/json/issues/1171) -- Roundtripping null to nullptr does not work [\#1169](https://github.com/nlohmann/json/issues/1169) -- MSVC fails to compile std::swap specialization for nlohmann::json [\#1168](https://github.com/nlohmann/json/issues/1168) -- Unexpected behaviour of is\_null - Part II [\#1167](https://github.com/nlohmann/json/issues/1167) -- Floating point imprecision [\#1166](https://github.com/nlohmann/json/issues/1166) -- Combine json objects into one? [\#1165](https://github.com/nlohmann/json/issues/1165) -- Is there any way to know if the object has changed? [\#1164](https://github.com/nlohmann/json/issues/1164) -- Value throws on null string [\#1163](https://github.com/nlohmann/json/issues/1163) -- Weird template issue in large project [\#1162](https://github.com/nlohmann/json/issues/1162) -- \_json returns a different result vs ::parse [\#1161](https://github.com/nlohmann/json/issues/1161) -- Showing difference between two json objects [\#1160](https://github.com/nlohmann/json/issues/1160) -- no instance of overloaded function "std::swap" matches the specified type [\#1159](https://github.com/nlohmann/json/issues/1159) -- resize\(...\)? [\#1157](https://github.com/nlohmann/json/issues/1157) -- Issue with struct nested in class' to\_json [\#1155](https://github.com/nlohmann/json/issues/1155) -- Deserialize std::map with std::nan [\#1154](https://github.com/nlohmann/json/issues/1154) -- Parse throwing errors [\#1149](https://github.com/nlohmann/json/issues/1149) -- cocoapod integration [\#1148](https://github.com/nlohmann/json/issues/1148) -- wstring parsing [\#1147](https://github.com/nlohmann/json/issues/1147) -- Is it possible to dump a two-dimensional array to "\[\[null\],\[1,2,3\]\]"? [\#1146](https://github.com/nlohmann/json/issues/1146) -- Want to write a class member variable and a struct variable \( this structure is inside the class\) to the json file [\#1145](https://github.com/nlohmann/json/issues/1145) -- Does json support converting an instance of a struct into json string? [\#1143](https://github.com/nlohmann/json/issues/1143) -- \#Most efficient way to search for child parameters \(recursive find?\) [\#1141](https://github.com/nlohmann/json/issues/1141) -- could not find to\_json\(\) method in T's namespace [\#1140](https://github.com/nlohmann/json/issues/1140) -- chars get treated as JSON numbers not JSON strings [\#1139](https://github.com/nlohmann/json/issues/1139) -- How do I count number of objects in array? [\#1137](https://github.com/nlohmann/json/issues/1137) -- Serializing a vector of classes? [\#1136](https://github.com/nlohmann/json/issues/1136) -- Compile error. Unable convert form nullptr to nullptr&& [\#1135](https://github.com/nlohmann/json/issues/1135) -- std::unordered\_map in struct, serialization [\#1133](https://github.com/nlohmann/json/issues/1133) -- dump\(\) can't handle umlauts [\#1131](https://github.com/nlohmann/json/issues/1131) -- Add a way to get a key reference from the iterator [\#1127](https://github.com/nlohmann/json/issues/1127) -- can't not parse "\\“ string [\#1123](https://github.com/nlohmann/json/issues/1123) -- if json file contain Internationalization chars , get exception [\#1122](https://github.com/nlohmann/json/issues/1122) -- How to use a json::iterator dereferenced value in code? [\#1120](https://github.com/nlohmann/json/issues/1120) -- Disable implicit conversions from json to std::initializer\_list\ for any T [\#1118](https://github.com/nlohmann/json/issues/1118) -- Implicit conversions to complex types can lead to surprising and confusing errors [\#1116](https://github.com/nlohmann/json/issues/1116) -- How can I write from\_json for a complex datatype that is not default constructible? [\#1115](https://github.com/nlohmann/json/issues/1115) -- Compile error in VS2015 when compiling unit-conversions.cpp [\#1114](https://github.com/nlohmann/json/issues/1114) -- ADL Serializer for std::any / boost::any [\#1113](https://github.com/nlohmann/json/issues/1113) -- Unexpected behaviour of is\_null [\#1112](https://github.com/nlohmann/json/issues/1112) -- How to resolve " undefined reference to `std::\_\_throw\_bad\_cast\(\)'" [\#1111](https://github.com/nlohmann/json/issues/1111) -- cannot compile on ubuntu 18.04 and 16.04 [\#1110](https://github.com/nlohmann/json/issues/1110) -- JSON representation for floating point values has too many digits [\#1109](https://github.com/nlohmann/json/issues/1109) -- Not working for classes containing "\_declspec\(dllimport\)" in their declaration [\#1108](https://github.com/nlohmann/json/issues/1108) -- Get keys from json object [\#1107](https://github.com/nlohmann/json/issues/1107) -- Cannot deserialize types using std::ratio [\#1105](https://github.com/nlohmann/json/issues/1105) -- i want to learn json [\#1104](https://github.com/nlohmann/json/issues/1104) -- Type checking during compile [\#1103](https://github.com/nlohmann/json/issues/1103) -- Iterate through sub items [\#1102](https://github.com/nlohmann/json/issues/1102) -- cppcheck failing for version 3.1.2 [\#1101](https://github.com/nlohmann/json/issues/1101) -- Deserializing std::map [\#1100](https://github.com/nlohmann/json/issues/1100) -- accessing key by reference [\#1098](https://github.com/nlohmann/json/issues/1098) -- clang 3.8.0 croaks while trying to compile with debug symbols [\#1097](https://github.com/nlohmann/json/issues/1097) -- Serialize a list of class objects with json [\#1096](https://github.com/nlohmann/json/issues/1096) -- Small question [\#1094](https://github.com/nlohmann/json/issues/1094) -- Upgrading to 3.x: to\_/from\_json with enum class [\#1093](https://github.com/nlohmann/json/issues/1093) -- Q: few questions about json construction [\#1092](https://github.com/nlohmann/json/issues/1092) -- general crayCC compilation failure [\#1091](https://github.com/nlohmann/json/issues/1091) -- Merge Patch clears original data [\#1090](https://github.com/nlohmann/json/issues/1090) -- \[Question\] how to use nlohmann/json in c++? [\#1088](https://github.com/nlohmann/json/issues/1088) -- C++17 decomposition declaration support [\#1087](https://github.com/nlohmann/json/issues/1087) -- \[Question\] Access multi-level json objects [\#1086](https://github.com/nlohmann/json/issues/1086) -- Serializing vector [\#1085](https://github.com/nlohmann/json/issues/1085) -- update nested value in multi hierarchy json object [\#1084](https://github.com/nlohmann/json/issues/1084) -- Overriding default values? [\#1083](https://github.com/nlohmann/json/issues/1083) -- detail namespace collision with Cereal? [\#1082](https://github.com/nlohmann/json/issues/1082) -- Error using json.dump\(\); [\#1081](https://github.com/nlohmann/json/issues/1081) -- Consuming TCP Stream [\#1080](https://github.com/nlohmann/json/issues/1080) -- Compilation error with strong typed enums in map in combination with namespaces [\#1079](https://github.com/nlohmann/json/issues/1079) -- cassert error [\#1076](https://github.com/nlohmann/json/issues/1076) -- Valid json data not being parsed [\#1075](https://github.com/nlohmann/json/issues/1075) -- Feature request :: Better testing for key existance without try/catch [\#1074](https://github.com/nlohmann/json/issues/1074) -- Hi, I have input like a.b.c and want to convert it to \"a\"{\"b\": \"c\"} form. Any suggestions how do I do this? Thanks. [\#1073](https://github.com/nlohmann/json/issues/1073) -- ADL deserializer not picked up for non default-constructible type [\#1072](https://github.com/nlohmann/json/issues/1072) -- Deserializing std::array doesn't compiler \(no insert\(\)\) [\#1071](https://github.com/nlohmann/json/issues/1071) -- Serializing OpenCV Mat problem [\#1070](https://github.com/nlohmann/json/issues/1070) -- Compilation error with ICPC compiler [\#1068](https://github.com/nlohmann/json/issues/1068) -- Not existing value, crash [\#1065](https://github.com/nlohmann/json/issues/1065) -- cyryllic symbols [\#1064](https://github.com/nlohmann/json/issues/1064) -- newbie usage question [\#1063](https://github.com/nlohmann/json/issues/1063) -- Trying j\["strTest"\] = "%A" produces "strTest": "-0X1.CCCCCCCCCCCCCP+205" [\#1062](https://github.com/nlohmann/json/issues/1062) -- convert json value to std::string??? [\#1061](https://github.com/nlohmann/json/issues/1061) -- Commented out test cases, should they be removed? [\#1060](https://github.com/nlohmann/json/issues/1060) -- different behaviour between clang and gcc with braced initialization [\#1059](https://github.com/nlohmann/json/issues/1059) -- json array: initialize with prescribed size and `resize` method. [\#1057](https://github.com/nlohmann/json/issues/1057) -- Is it possible to use exceptions istead of assertions? [\#1056](https://github.com/nlohmann/json/issues/1056) -- when using assign operator in with json object a static assertion fails.. [\#1055](https://github.com/nlohmann/json/issues/1055) -- Iterate over leafs of a JSON data structure: enrich the JSON pointer API [\#1054](https://github.com/nlohmann/json/issues/1054) -- \[Feature request\] Access by path [\#1053](https://github.com/nlohmann/json/issues/1053) -- document that implicit js -\> primitive conversion does not work for std::string::value\_type and why [\#1052](https://github.com/nlohmann/json/issues/1052) -- error: ‘BasicJsonType’ in namespace ‘::’ does not name a type [\#1051](https://github.com/nlohmann/json/issues/1051) -- Destructor is called when filling object through assignement [\#1050](https://github.com/nlohmann/json/issues/1050) -- Is this thing thread safe for reads? [\#1049](https://github.com/nlohmann/json/issues/1049) -- clang-tidy: Call to virtual function during construction [\#1046](https://github.com/nlohmann/json/issues/1046) -- Using STL algorithms with JSON containers with expected results? [\#1045](https://github.com/nlohmann/json/issues/1045) -- Usage with gtest/gmock not working as expected [\#1044](https://github.com/nlohmann/json/issues/1044) -- Consequences of from\_json / to\_json being in namespace of data struct. [\#1042](https://github.com/nlohmann/json/issues/1042) -- const\_reference operator\[\]\(const typename object\_t::key\_type& key\) const throw instead of assert [\#1039](https://github.com/nlohmann/json/issues/1039) -- Trying to retrieve data from nested objects [\#1038](https://github.com/nlohmann/json/issues/1038) -- Direct download link for json\_fwd.hpp? [\#1037](https://github.com/nlohmann/json/issues/1037) -- I know the library supports UTF-8, but failed to dump the value [\#1036](https://github.com/nlohmann/json/issues/1036) -- Putting a Vec3-like vector into a json object [\#1035](https://github.com/nlohmann/json/issues/1035) -- Ternary operator crash [\#1034](https://github.com/nlohmann/json/issues/1034) -- Issued with Clion Inspection Resolution since 2018.1 [\#1033](https://github.com/nlohmann/json/issues/1033) -- Some testcases fail and one never finishes [\#1032](https://github.com/nlohmann/json/issues/1032) -- Can this class work with wchar\_t / std::wstring? [\#1031](https://github.com/nlohmann/json/issues/1031) -- Makefile: Valgrind flags have no effect [\#1030](https://github.com/nlohmann/json/issues/1030) -- 「==」 Should be 「\>」 [\#1029](https://github.com/nlohmann/json/issues/1029) -- HOCON reader? [\#1027](https://github.com/nlohmann/json/issues/1027) -- add json string in previous string?? [\#1025](https://github.com/nlohmann/json/issues/1025) -- RFC: fluent parsing interface [\#1023](https://github.com/nlohmann/json/issues/1023) -- Does it support chinese character? [\#1022](https://github.com/nlohmann/json/issues/1022) -- to/from\_msgpack only works with standard typization [\#1021](https://github.com/nlohmann/json/issues/1021) -- Build failure using latest clang and GCC compilers [\#1020](https://github.com/nlohmann/json/issues/1020) -- can two json objects be concatenated? [\#1019](https://github.com/nlohmann/json/issues/1019) -- Erase by integer index [\#1018](https://github.com/nlohmann/json/issues/1018) -- Function find overload taking a json\_pointer [\#1017](https://github.com/nlohmann/json/issues/1017) -- I think should implement an parser function [\#1016](https://github.com/nlohmann/json/issues/1016) -- Readme gif [\#1015](https://github.com/nlohmann/json/issues/1015) -- Python bindings [\#1014](https://github.com/nlohmann/json/issues/1014) -- how to add two json string in single object?? [\#1012](https://github.com/nlohmann/json/issues/1012) -- how to serialize class Object \(convert data in object into json\)?? [\#1011](https://github.com/nlohmann/json/issues/1011) -- Enable forward declaration of json by making json a class instead of a using declaration [\#997](https://github.com/nlohmann/json/issues/997) -- compilation error while using intel c++ compiler 2018 [\#994](https://github.com/nlohmann/json/issues/994) -- How to create a json variable? [\#990](https://github.com/nlohmann/json/issues/990) -- istream \>\> json --- 1st character skipped in stream [\#976](https://github.com/nlohmann/json/issues/976) -- Add a SAX parser [\#971](https://github.com/nlohmann/json/issues/971) -- How to solve large json file? [\#927](https://github.com/nlohmann/json/issues/927) -- json\_pointer public push\_back, pop\_back [\#837](https://github.com/nlohmann/json/issues/837) -- Using input\_adapter in a slightly unexpected way [\#834](https://github.com/nlohmann/json/issues/834) - -- Fix -Wno-sometimes-uninitialized by initializing "result" in parse\_sax [\#1200](https://github.com/nlohmann/json/pull/1200) ([thyu](https://github.com/thyu)) -- \[RFC\] Introduce a new macro function: JSON\_INTERNAL\_CATCH [\#1187](https://github.com/nlohmann/json/pull/1187) ([simnalamburt](https://github.com/simnalamburt)) -- Fix unit tests that were silently skipped or crashed \(depending on the compiler\) [\#1176](https://github.com/nlohmann/json/pull/1176) ([grembo](https://github.com/grembo)) -- Refactor/no virtual sax [\#1153](https://github.com/nlohmann/json/pull/1153) ([theodelrieu](https://github.com/theodelrieu)) -- Fixed compiler error in VS 2015 for debug mode [\#1151](https://github.com/nlohmann/json/pull/1151) ([sonulohani](https://github.com/sonulohani)) -- Fix links to cppreference named requirements \(formerly concepts\) [\#1144](https://github.com/nlohmann/json/pull/1144) ([jrakow](https://github.com/jrakow)) -- meson: fix include directory [\#1142](https://github.com/nlohmann/json/pull/1142) ([jrakow](https://github.com/jrakow)) -- Feature/unordered map conversion [\#1138](https://github.com/nlohmann/json/pull/1138) ([theodelrieu](https://github.com/theodelrieu)) -- fixed compile error for \#1045 [\#1134](https://github.com/nlohmann/json/pull/1134) ([Daniel599](https://github.com/Daniel599)) -- test \(non\)equality for alt\_string implementation [\#1130](https://github.com/nlohmann/json/pull/1130) ([agrianius](https://github.com/agrianius)) -- remove stringstream dependency [\#1117](https://github.com/nlohmann/json/pull/1117) ([TinyTinni](https://github.com/TinyTinni)) -- Provide a from\_json overload for std::map [\#1089](https://github.com/nlohmann/json/pull/1089) ([theodelrieu](https://github.com/theodelrieu)) -- fix typo in README [\#1078](https://github.com/nlohmann/json/pull/1078) ([martin-mfg](https://github.com/martin-mfg)) -- Fix typo [\#1058](https://github.com/nlohmann/json/pull/1058) ([dns13](https://github.com/dns13)) -- Misc cmake packaging enhancements [\#1048](https://github.com/nlohmann/json/pull/1048) ([chuckatkins](https://github.com/chuckatkins)) -- Fixed incorrect LLVM version number in README [\#1047](https://github.com/nlohmann/json/pull/1047) ([jammehcow](https://github.com/jammehcow)) -- Fix trivial typo in comment. [\#1043](https://github.com/nlohmann/json/pull/1043) ([coryan](https://github.com/coryan)) -- Package Manager: Spack [\#1041](https://github.com/nlohmann/json/pull/1041) ([ax3l](https://github.com/ax3l)) -- CMake: 3.8+ is Sufficient [\#1040](https://github.com/nlohmann/json/pull/1040) ([ax3l](https://github.com/ax3l)) -- Added support for string\_view in C++17 [\#1028](https://github.com/nlohmann/json/pull/1028) ([gracicot](https://github.com/gracicot)) -- Added public target\_compile\_features for auto and constexpr [\#1026](https://github.com/nlohmann/json/pull/1026) ([ktonon](https://github.com/ktonon)) - -## [v3.1.2](https://github.com/nlohmann/json/releases/tag/v3.1.2) (2018-03-14) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.1.2...v3.1.2) - -## [3.1.2](https://github.com/nlohmann/json/releases/tag/3.1.2) (2018-03-14) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.1.1...3.1.2) - -- STL containers are always serialized to a nested array like \[\[1,2,3\]\] [\#1013](https://github.com/nlohmann/json/issues/1013) -- The library doesn't want to insert an unordered\_map [\#1010](https://github.com/nlohmann/json/issues/1010) -- Convert Json to uint8\_t [\#1008](https://github.com/nlohmann/json/issues/1008) -- How to compare two JSON objects? [\#1007](https://github.com/nlohmann/json/issues/1007) -- Syntax checking [\#1003](https://github.com/nlohmann/json/issues/1003) -- more than one operator '=' matches these operands [\#1002](https://github.com/nlohmann/json/issues/1002) -- How to check if key existed [\#1000](https://github.com/nlohmann/json/issues/1000) -- nlohmann::json::parse exhaust memory in go binding [\#999](https://github.com/nlohmann/json/issues/999) -- Range-based iteration over a non-array object [\#998](https://github.com/nlohmann/json/issues/998) -- get\ for types that are not default constructible [\#996](https://github.com/nlohmann/json/issues/996) -- Prevent Null values to appear in .dump\(\) [\#995](https://github.com/nlohmann/json/issues/995) -- number parsing [\#993](https://github.com/nlohmann/json/issues/993) -- C2664 \(C++/CLR\) cannot convert 'nullptr' to 'nullptr &&' [\#987](https://github.com/nlohmann/json/issues/987) -- Uniform initialization from another json object differs between gcc and clang. [\#985](https://github.com/nlohmann/json/issues/985) -- Problem with adding the lib as a submodule [\#983](https://github.com/nlohmann/json/issues/983) -- UTF-8/Unicode error [\#982](https://github.com/nlohmann/json/issues/982) -- "forcing MSVC stacktrace to show which T we're talking about." error [\#980](https://github.com/nlohmann/json/issues/980) -- reverse order of serialization [\#979](https://github.com/nlohmann/json/issues/979) -- Assigning between different json types [\#977](https://github.com/nlohmann/json/issues/977) -- Support serialisation of `unique_ptr<>` and `shared_ptr<>` [\#975](https://github.com/nlohmann/json/issues/975) -- Unexpected end of input \(not same as one before\) [\#974](https://github.com/nlohmann/json/issues/974) -- Segfault on direct initializing json object [\#973](https://github.com/nlohmann/json/issues/973) -- Segmentation fault on G++ when trying to assign json string literal to custom json type. [\#972](https://github.com/nlohmann/json/issues/972) -- os\_defines.h:44:19: error: missing binary operator before token "\(" [\#970](https://github.com/nlohmann/json/issues/970) -- Passing an iteration object by reference to a function [\#967](https://github.com/nlohmann/json/issues/967) -- Json and fmt::lib's format\_arg\(\) [\#964](https://github.com/nlohmann/json/issues/964) - -- Allowing for user-defined string type in lexer/parser [\#1009](https://github.com/nlohmann/json/pull/1009) ([nlohmann](https://github.com/nlohmann)) -- dump to alternative string type, as defined in basic\_json template [\#1006](https://github.com/nlohmann/json/pull/1006) ([agrianius](https://github.com/agrianius)) -- Fix memory leak during parser callback [\#1001](https://github.com/nlohmann/json/pull/1001) ([nlohmann](https://github.com/nlohmann)) -- fixed misprinted condition detected by PVS Studio. [\#992](https://github.com/nlohmann/json/pull/992) ([bogemic](https://github.com/bogemic)) -- Fix/basic json conversion [\#986](https://github.com/nlohmann/json/pull/986) ([theodelrieu](https://github.com/theodelrieu)) -- Make integration section concise [\#981](https://github.com/nlohmann/json/pull/981) ([wla80](https://github.com/wla80)) - -## [v3.1.1](https://github.com/nlohmann/json/releases/tag/v3.1.1) (2018-02-13) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.1.0...v3.1.1) - -- Updation of child object isn't reflected in parent Object [\#968](https://github.com/nlohmann/json/issues/968) -- How to add user defined C++ path to sublime text [\#966](https://github.com/nlohmann/json/issues/966) -- fast number parsing [\#965](https://github.com/nlohmann/json/issues/965) -- With non-unique keys, later stored entries are not taken into account anymore [\#963](https://github.com/nlohmann/json/issues/963) -- Timeout \(OSS-Fuzz 6034\) [\#962](https://github.com/nlohmann/json/issues/962) -- Incorrect parsing of indefinite length CBOR strings. [\#961](https://github.com/nlohmann/json/issues/961) -- Reload a json file at runtime without emptying my std::ifstream [\#959](https://github.com/nlohmann/json/issues/959) -- Split headers should be part of the release [\#956](https://github.com/nlohmann/json/issues/956) -- Coveralls shows no coverage data [\#953](https://github.com/nlohmann/json/issues/953) -- Feature request: Implicit conversion to bool [\#951](https://github.com/nlohmann/json/issues/951) -- converting json to vector of type with templated constructor [\#924](https://github.com/nlohmann/json/issues/924) -- No structured bindings support? [\#901](https://github.com/nlohmann/json/issues/901) -- \[Request\] Macro generating from\_json\(\) and to\_json\(\) [\#895](https://github.com/nlohmann/json/issues/895) -- basic\_json::value throws exception instead of returning default value [\#871](https://github.com/nlohmann/json/issues/871) - -- Fix constraints on from\_json\(CompatibleArrayType\) [\#969](https://github.com/nlohmann/json/pull/969) ([theodelrieu](https://github.com/theodelrieu)) -- Make coveralls watch the include folder [\#957](https://github.com/nlohmann/json/pull/957) ([theodelrieu](https://github.com/theodelrieu)) -- Fix links in README.md [\#955](https://github.com/nlohmann/json/pull/955) ([patrikhuber](https://github.com/patrikhuber)) -- Add a note about installing the library with cget [\#954](https://github.com/nlohmann/json/pull/954) ([pfultz2](https://github.com/pfultz2)) - -## [v3.1.0](https://github.com/nlohmann/json/releases/tag/v3.1.0) (2018-02-01) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.1.0...v3.1.0) - -## [3.1.0](https://github.com/nlohmann/json/releases/tag/3.1.0) (2018-02-01) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.0.1...3.1.0) - -- I have a proposal [\#949](https://github.com/nlohmann/json/issues/949) -- VERSION define\(s\) [\#948](https://github.com/nlohmann/json/issues/948) -- v3.0.1 compile error in icc 16.0.4 [\#947](https://github.com/nlohmann/json/issues/947) -- Use in VS2017 15.5.5 [\#946](https://github.com/nlohmann/json/issues/946) -- Process for reporting Security Bugs? [\#945](https://github.com/nlohmann/json/issues/945) -- Please expose a NLOHMANN\_JSON\_VERSION macro [\#943](https://github.com/nlohmann/json/issues/943) -- Change header include directory to nlohmann/json [\#942](https://github.com/nlohmann/json/issues/942) -- string\_type in binary\_reader [\#941](https://github.com/nlohmann/json/issues/941) -- compile error with clang 5.0 -std=c++1z and no string\_view [\#939](https://github.com/nlohmann/json/issues/939) -- Allow overriding JSON\_THROW to something else than abort\(\) [\#938](https://github.com/nlohmann/json/issues/938) -- Handle invalid string in Json file [\#937](https://github.com/nlohmann/json/issues/937) -- Unused variable 'kMinExp' [\#935](https://github.com/nlohmann/json/issues/935) -- yytext is already defined [\#933](https://github.com/nlohmann/json/issues/933) -- Equality operator fails [\#931](https://github.com/nlohmann/json/issues/931) -- use in visual studio 2015 [\#929](https://github.com/nlohmann/json/issues/929) -- Relative includes of json\_fwd.hpp in detail/meta.hpp. \[Develop branch\] [\#928](https://github.com/nlohmann/json/issues/928) -- GCC 7.x issue [\#926](https://github.com/nlohmann/json/issues/926) -- json\_fwd.hpp not installed [\#923](https://github.com/nlohmann/json/issues/923) -- Use Google Benchmarks [\#921](https://github.com/nlohmann/json/issues/921) -- Move class json\_pointer to separate file [\#920](https://github.com/nlohmann/json/issues/920) -- Unable to locate 'to\_json\(\)' and 'from\_json\(\)' methods in the same namespace [\#917](https://github.com/nlohmann/json/issues/917) -- \[answered\]Read key1 from .value example [\#914](https://github.com/nlohmann/json/issues/914) -- Don't use `define private public` in test files [\#913](https://github.com/nlohmann/json/issues/913) -- value\(\) template argument type deduction [\#912](https://github.com/nlohmann/json/issues/912) -- Installation path is incorrect [\#910](https://github.com/nlohmann/json/issues/910) -- H [\#909](https://github.com/nlohmann/json/issues/909) -- Build failure using clang 5 [\#908](https://github.com/nlohmann/json/issues/908) -- Amalgate [\#907](https://github.com/nlohmann/json/issues/907) -- Update documentation and tests wrt. split headers [\#906](https://github.com/nlohmann/json/issues/906) -- Lib not working on ubuntu 16.04 [\#905](https://github.com/nlohmann/json/issues/905) -- Problem when writing to file. [\#904](https://github.com/nlohmann/json/issues/904) -- C2864 error when compiling with VS2015 and VS 2017 [\#903](https://github.com/nlohmann/json/issues/903) -- \[json.exception.type\_error.304\] cannot use at\(\) with object [\#902](https://github.com/nlohmann/json/issues/902) -- How do I forward nlohmann::json declaration? [\#899](https://github.com/nlohmann/json/issues/899) -- How to effectively store binary data? [\#898](https://github.com/nlohmann/json/issues/898) -- How to get the length of a JSON string without retrieving its std::string? [\#897](https://github.com/nlohmann/json/issues/897) -- Regression Tests Failure using "ctest" [\#887](https://github.com/nlohmann/json/issues/887) -- Discuss: add JSON Merge Patch \(RFC 7396\)? [\#877](https://github.com/nlohmann/json/issues/877) -- Discuss: replace static "iterator\_wrapper" function with "items" member function [\#874](https://github.com/nlohmann/json/issues/874) -- Make optional user-data available in from\_json [\#864](https://github.com/nlohmann/json/issues/864) -- Casting to std::string not working in VS2015 [\#861](https://github.com/nlohmann/json/issues/861) -- Sequential reading of JSON arrays [\#851](https://github.com/nlohmann/json/issues/851) -- Idea: Handle Multimaps Better [\#816](https://github.com/nlohmann/json/issues/816) -- Floating point rounding [\#777](https://github.com/nlohmann/json/issues/777) -- Loss of precision when serializing \ [\#360](https://github.com/nlohmann/json/issues/360) - -- Templatize std::string in binary\_reader \#941 [\#950](https://github.com/nlohmann/json/pull/950) ([kaidokert](https://github.com/kaidokert)) -- fix cmake install directory \(for real this time\) [\#944](https://github.com/nlohmann/json/pull/944) ([theodelrieu](https://github.com/theodelrieu)) -- Allow overriding THROW/CATCH/TRY macros with no-exceptions \#938 [\#940](https://github.com/nlohmann/json/pull/940) ([kaidokert](https://github.com/kaidokert)) -- Removed compiler warning about unused variable 'kMinExp' [\#936](https://github.com/nlohmann/json/pull/936) ([zerodefect](https://github.com/zerodefect)) -- Fix a typo in README.md [\#930](https://github.com/nlohmann/json/pull/930) ([Pipeliner](https://github.com/Pipeliner)) -- Howto installation of json\_fwd.hpp \(fixes \#923\) [\#925](https://github.com/nlohmann/json/pull/925) ([zerodefect](https://github.com/zerodefect)) -- fix sfinae on basic\_json UDT constructor [\#919](https://github.com/nlohmann/json/pull/919) ([theodelrieu](https://github.com/theodelrieu)) -- Floating-point formatting [\#915](https://github.com/nlohmann/json/pull/915) ([abolz](https://github.com/abolz)) -- Fix/cmake install [\#911](https://github.com/nlohmann/json/pull/911) ([theodelrieu](https://github.com/theodelrieu)) -- fix link to the documentation of the emplace function [\#900](https://github.com/nlohmann/json/pull/900) ([Dobiasd](https://github.com/Dobiasd)) -- JSON Merge Patch \(RFC 7396\) [\#876](https://github.com/nlohmann/json/pull/876) ([nlohmann](https://github.com/nlohmann)) -- Refactor/split it [\#700](https://github.com/nlohmann/json/pull/700) ([theodelrieu](https://github.com/theodelrieu)) - -## [v3.0.1](https://github.com/nlohmann/json/releases/tag/v3.0.1) (2017-12-29) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.0.1...v3.0.1) - -## [3.0.1](https://github.com/nlohmann/json/releases/tag/3.0.1) (2017-12-29) - -[Full Changelog](https://github.com/nlohmann/json/compare/v3.0.0...3.0.1) - -- Problem parsing array to global vector [\#896](https://github.com/nlohmann/json/issues/896) -- Invalid RFC6902 copy operation succeeds [\#894](https://github.com/nlohmann/json/issues/894) -- How to rename a key during looping? [\#893](https://github.com/nlohmann/json/issues/893) -- clang++-6.0 \(6.0.0-svn321357-1\) warning [\#892](https://github.com/nlohmann/json/issues/892) -- Make json.hpp aware of the modules TS? [\#891](https://github.com/nlohmann/json/issues/891) -- All enum values not handled in switch cases. \( -Wswitch-enum \) [\#889](https://github.com/nlohmann/json/issues/889) -- JSON Pointer resolve failure resulting in incorrect exception code [\#888](https://github.com/nlohmann/json/issues/888) -- Unexpected nested arrays from std::vector [\#886](https://github.com/nlohmann/json/issues/886) -- erase multiple elements from a json object [\#884](https://github.com/nlohmann/json/issues/884) -- Container function overview in Doxygen is not updated [\#883](https://github.com/nlohmann/json/issues/883) -- How to use this for binary file uploads [\#881](https://github.com/nlohmann/json/issues/881) -- Allow setting JSON\_BuildTests=OFF from parent CMakeLists.txt [\#846](https://github.com/nlohmann/json/issues/846) -- Unit test fails for local-independent str-to-num [\#845](https://github.com/nlohmann/json/issues/845) -- Another idea about type support [\#774](https://github.com/nlohmann/json/issues/774) - -- Includes CTest module/adds BUILD\_TESTING option [\#885](https://github.com/nlohmann/json/pull/885) ([TinyTinni](https://github.com/TinyTinni)) -- Fix MSVC warning C4819 [\#882](https://github.com/nlohmann/json/pull/882) ([erengy](https://github.com/erengy)) -- Merge branch 'develop' into coverity\_scan [\#880](https://github.com/nlohmann/json/pull/880) ([nlohmann](https://github.com/nlohmann)) -- :wrench: Fix up a few more effc++ items [\#858](https://github.com/nlohmann/json/pull/858) ([mattismyname](https://github.com/mattismyname)) - -## [v3.0.0](https://github.com/nlohmann/json/releases/tag/v3.0.0) (2017-12-17) - -[Full Changelog](https://github.com/nlohmann/json/compare/3.0.0...v3.0.0) - -## [3.0.0](https://github.com/nlohmann/json/releases/tag/3.0.0) (2017-12-17) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.1.1...3.0.0) - -- unicode strings [\#878](https://github.com/nlohmann/json/issues/878) -- Visual Studio 2017 15.5 C++17 std::allocator deprecations [\#872](https://github.com/nlohmann/json/issues/872) -- Typo "excpetion" [\#869](https://github.com/nlohmann/json/issues/869) -- Explicit array example in README.md incorrect [\#867](https://github.com/nlohmann/json/issues/867) -- why don't you release this from Feb. ? [\#865](https://github.com/nlohmann/json/issues/865) -- json::parse throws std::invalid\_argument when processing string generated by json::dump\(\) [\#863](https://github.com/nlohmann/json/issues/863) -- code analysis: potential bug? [\#859](https://github.com/nlohmann/json/issues/859) -- MSVC2017, 15.5 new issues. [\#857](https://github.com/nlohmann/json/issues/857) -- very basic: fetching string value/content without quotes [\#853](https://github.com/nlohmann/json/issues/853) -- Ambiguous function call to get with pointer type and constant json object in VS2015 \(15.4.4\) [\#852](https://github.com/nlohmann/json/issues/852) -- How to put object in the array as a member? [\#850](https://github.com/nlohmann/json/issues/850) -- misclick, please ignore [\#849](https://github.com/nlohmann/json/issues/849) -- Make XML great again. [\#847](https://github.com/nlohmann/json/issues/847) -- Converting to array not working [\#843](https://github.com/nlohmann/json/issues/843) -- Iteration weirdness [\#842](https://github.com/nlohmann/json/issues/842) -- Use reference or pointer as Object value [\#841](https://github.com/nlohmann/json/issues/841) -- Ambiguity in parsing nested maps [\#840](https://github.com/nlohmann/json/issues/840) -- could not find from\_json\(\) method in T's namespace [\#839](https://github.com/nlohmann/json/issues/839) -- Incorrect parse error with binary data in keys? [\#838](https://github.com/nlohmann/json/issues/838) -- using dump\(\) when std::wstring is StringType with VS2017 [\#836](https://github.com/nlohmann/json/issues/836) -- Show the path of the currently parsed value when an error occurs [\#835](https://github.com/nlohmann/json/issues/835) -- Repetitive data type while reading [\#833](https://github.com/nlohmann/json/issues/833) -- Storing multiple types inside map [\#831](https://github.com/nlohmann/json/issues/831) -- Application terminating [\#830](https://github.com/nlohmann/json/issues/830) -- Missing CMake hunter package? [\#828](https://github.com/nlohmann/json/issues/828) -- std::map\ from json object yields C2665: 'std::pair\::pair': none of the 2 overloads could convert all the argument types [\#827](https://github.com/nlohmann/json/issues/827) -- object.dump gives quoted string, want to use .dump\(\) to generate javascripts. [\#826](https://github.com/nlohmann/json/issues/826) -- Assertion failed on \["NoExistKey"\] of an not existing key of const json& [\#825](https://github.com/nlohmann/json/issues/825) -- vs2015 error : static member will remain uninitialized at runtime but use in constant-expressions is supported [\#824](https://github.com/nlohmann/json/issues/824) -- Code Checking Warnings from json.hpp on VS2017 Community [\#821](https://github.com/nlohmann/json/issues/821) -- Missing iostream in try online [\#820](https://github.com/nlohmann/json/issues/820) -- Floating point value loses decimal point during dump [\#818](https://github.com/nlohmann/json/issues/818) -- Conan package for the library [\#817](https://github.com/nlohmann/json/issues/817) -- stream error [\#815](https://github.com/nlohmann/json/issues/815) -- Link error when using find\(\) on the latest commit [\#814](https://github.com/nlohmann/json/issues/814) -- ABI issue with json object between 2 shared libraries [\#813](https://github.com/nlohmann/json/issues/813) -- scan\_string\(\) return token\_type::parse\_error; when parse ansi file [\#812](https://github.com/nlohmann/json/issues/812) -- segfault when using fifo\_map with json [\#810](https://github.com/nlohmann/json/issues/810) -- This shit is shit [\#809](https://github.com/nlohmann/json/issues/809) -- \_finite and \_isnan are no members of "std" [\#808](https://github.com/nlohmann/json/issues/808) -- how to print out the line which causing exception? [\#806](https://github.com/nlohmann/json/issues/806) -- {} uses copy constructor, while = does not [\#805](https://github.com/nlohmann/json/issues/805) -- json.hpp:8955: multiple definition of function that is not defined twice or more. [\#804](https://github.com/nlohmann/json/issues/804) -- \[question\] to\_json for base and derived class [\#803](https://github.com/nlohmann/json/issues/803) -- Misleading error message - unexpected '"' - on incorrect utf-8 symbol [\#802](https://github.com/nlohmann/json/issues/802) -- json data = std::string\_view\("hi"\); doesn't work? [\#801](https://github.com/nlohmann/json/issues/801) -- Thread safety of parse\(\) [\#800](https://github.com/nlohmann/json/issues/800) -- Numbers as strings [\#799](https://github.com/nlohmann/json/issues/799) -- Tests failing on arm [\#797](https://github.com/nlohmann/json/issues/797) -- Using your library \(without modification\) in another library [\#796](https://github.com/nlohmann/json/issues/796) -- Iterating over sub-object [\#794](https://github.com/nlohmann/json/issues/794) -- how to get the json object again from which printed by the method of dump\(\) [\#792](https://github.com/nlohmann/json/issues/792) -- ppa to include source [\#791](https://github.com/nlohmann/json/issues/791) -- Different include paths in macOS and Ubuntu [\#790](https://github.com/nlohmann/json/issues/790) -- Missing break after line 12886 in switch/case [\#789](https://github.com/nlohmann/json/issues/789) -- All unit tests fail? [\#787](https://github.com/nlohmann/json/issues/787) -- More use of move semantics in deserialization [\#786](https://github.com/nlohmann/json/issues/786) -- warning C4706 - Visual Studio 2017 \(/W4\) [\#784](https://github.com/nlohmann/json/issues/784) -- Compile error in clang 5.0 [\#782](https://github.com/nlohmann/json/issues/782) -- Error Installing appium\_lib with Ruby v2.4.2 Due to JSON [\#781](https://github.com/nlohmann/json/issues/781) -- ::get\\(\) fails in new\(er\) release \[MSVC\] [\#780](https://github.com/nlohmann/json/issues/780) -- Type Conversion [\#779](https://github.com/nlohmann/json/issues/779) -- Segfault on nested parsing [\#778](https://github.com/nlohmann/json/issues/778) -- Build warnings: shadowing exception id [\#776](https://github.com/nlohmann/json/issues/776) -- multi-level JSON support. [\#775](https://github.com/nlohmann/json/issues/775) -- SIGABRT on dump\(\) [\#773](https://github.com/nlohmann/json/issues/773) -- \[Question\] Custom StringType template parameter \(possibility for a KeyType template parameter\) [\#772](https://github.com/nlohmann/json/issues/772) -- constexpr ALL the Things! [\#771](https://github.com/nlohmann/json/issues/771) -- error: ‘BasicJsonType’ in namespace ‘::’ does not name a type [\#770](https://github.com/nlohmann/json/issues/770) -- Program calls abort function [\#769](https://github.com/nlohmann/json/issues/769) -- \[Question\] Floating point resolution config during dump\(\) ? [\#768](https://github.com/nlohmann/json/issues/768) -- make check - no test ran [\#767](https://github.com/nlohmann/json/issues/767) -- The library cannot work properly with custom allocator based containers [\#766](https://github.com/nlohmann/json/issues/766) -- Documentation or feature request. [\#763](https://github.com/nlohmann/json/issues/763) -- warnings in msvc about mix/max macro while windows.h is used in the project [\#762](https://github.com/nlohmann/json/issues/762) -- std::signbit ambiguous [\#761](https://github.com/nlohmann/json/issues/761) -- How to use value for std::experimental::optional type? [\#760](https://github.com/nlohmann/json/issues/760) -- Cannot load json file properly [\#759](https://github.com/nlohmann/json/issues/759) -- Compilation error with unordered\_map\< int, int \> [\#758](https://github.com/nlohmann/json/issues/758) -- CBOR string [\#757](https://github.com/nlohmann/json/issues/757) -- Proposal: out\_of\_range should be a subclass of std::out\_of\_range [\#756](https://github.com/nlohmann/json/issues/756) -- Getter is setting the value to null if the key does not exist [\#754](https://github.com/nlohmann/json/issues/754) -- parsing works sometimes and crashes others [\#752](https://github.com/nlohmann/json/issues/752) -- Static\_assert failed "incompatible pointer type" with Xcode [\#751](https://github.com/nlohmann/json/issues/751) -- user-defined literal operator not found [\#750](https://github.com/nlohmann/json/issues/750) -- getting clean string from it.key\(\) [\#748](https://github.com/nlohmann/json/issues/748) -- Best method for exploring and obtaining values of nested json objects when the names are not known beforehand? [\#747](https://github.com/nlohmann/json/issues/747) -- null char at the end of string [\#746](https://github.com/nlohmann/json/issues/746) -- Incorrect sample for operator \>\> in docs [\#745](https://github.com/nlohmann/json/issues/745) -- User-friendly documentation [\#744](https://github.com/nlohmann/json/issues/744) -- Retrieve all values that match a json path [\#743](https://github.com/nlohmann/json/issues/743) -- Compilation issue with gcc 7.2 [\#742](https://github.com/nlohmann/json/issues/742) -- CMake target nlohmann\_json does not have src into its interface includes [\#741](https://github.com/nlohmann/json/issues/741) -- Error when serializing empty json: type must be string, but is object [\#740](https://github.com/nlohmann/json/issues/740) -- Conversion error for std::map\ [\#739](https://github.com/nlohmann/json/issues/739) -- Dumping Json to file as array [\#738](https://github.com/nlohmann/json/issues/738) -- nesting json objects [\#737](https://github.com/nlohmann/json/issues/737) -- where to find general help? [\#736](https://github.com/nlohmann/json/issues/736) -- Compilation Error on Clang 5.0 Upgrade [\#735](https://github.com/nlohmann/json/issues/735) -- Compilation error with std::map\ on vs 2015 [\#734](https://github.com/nlohmann/json/issues/734) -- Benchmarks for Binary formats [\#733](https://github.com/nlohmann/json/issues/733) -- Support \n symbols in json string. [\#731](https://github.com/nlohmann/json/issues/731) -- Project's name is too generic and hard to search for [\#730](https://github.com/nlohmann/json/issues/730) -- Visual Studio 2015 IntelliTrace problems [\#729](https://github.com/nlohmann/json/issues/729) -- How to erase nested objects inside other objects? [\#728](https://github.com/nlohmann/json/issues/728) -- Serialization for CBOR [\#726](https://github.com/nlohmann/json/issues/726) -- Using json Object as value in a map [\#725](https://github.com/nlohmann/json/issues/725) -- std::regex and nlohmann::json value [\#724](https://github.com/nlohmann/json/issues/724) -- Warnings when compiling with VisualStudio 2015 [\#723](https://github.com/nlohmann/json/issues/723) -- Has this lib the unicode \(wstring\) support? [\#722](https://github.com/nlohmann/json/issues/722) -- When will be 3.0 in master? [\#721](https://github.com/nlohmann/json/issues/721) -- Determine the type from error message. [\#720](https://github.com/nlohmann/json/issues/720) -- Compile-Error C2100 \(MS VS2015\) in line 887 json.hpp [\#719](https://github.com/nlohmann/json/issues/719) -- from\_json not working for boost::optional example [\#718](https://github.com/nlohmann/json/issues/718) -- about from\_json and to\_json function [\#717](https://github.com/nlohmann/json/issues/717) -- How to detect parse failure? [\#715](https://github.com/nlohmann/json/issues/715) -- Parse throw std::ios\_base::failure exception when failbit set to true [\#714](https://github.com/nlohmann/json/issues/714) -- Is there a way of format just making a pretty print without changing the key's orders ? [\#713](https://github.com/nlohmann/json/issues/713) -- Serialization of array of not same model items [\#712](https://github.com/nlohmann/json/issues/712) -- pointer to json parse vector [\#711](https://github.com/nlohmann/json/issues/711) -- Gtest SEH Exception [\#709](https://github.com/nlohmann/json/issues/709) -- broken from\_json implementation for pair and tuple [\#707](https://github.com/nlohmann/json/issues/707) -- Unevaluated lambda in assert breaks gcc 7 build [\#705](https://github.com/nlohmann/json/issues/705) -- Issues when adding values to firebase database [\#704](https://github.com/nlohmann/json/issues/704) -- Floating point equality - revisited [\#703](https://github.com/nlohmann/json/issues/703) -- Conversion from valarray\ to json fails to build [\#702](https://github.com/nlohmann/json/issues/702) -- internal compiler error \(gcc7\) [\#701](https://github.com/nlohmann/json/issues/701) -- One build system to rule them all [\#698](https://github.com/nlohmann/json/issues/698) -- Generated nlohmann\_jsonConfig.cmake does not set JSON\_INCLUDE\_DIR [\#695](https://github.com/nlohmann/json/issues/695) -- support the Chinese language in json string [\#694](https://github.com/nlohmann/json/issues/694) -- NaN problem within develop branch [\#693](https://github.com/nlohmann/json/issues/693) -- Please post example of specialization for boost::filesystem [\#692](https://github.com/nlohmann/json/issues/692) -- Impossible to do an array of composite objects [\#691](https://github.com/nlohmann/json/issues/691) -- How to save json to file? [\#690](https://github.com/nlohmann/json/issues/690) -- my simple json parser [\#689](https://github.com/nlohmann/json/issues/689) -- problem with new struct parsing syntax [\#688](https://github.com/nlohmann/json/issues/688) -- Parse error while parse the json string contains UTF 8 encoded document bytes string [\#684](https://github.com/nlohmann/json/issues/684) -- \[question\] how to get a string value by pointer [\#683](https://github.com/nlohmann/json/issues/683) -- create json object from string variable [\#681](https://github.com/nlohmann/json/issues/681) -- adl\_serializer and CRTP [\#680](https://github.com/nlohmann/json/issues/680) -- Is there a way to control the precision of serialized floating point numbers? [\#677](https://github.com/nlohmann/json/issues/677) -- Is there a way to get the path of a value? [\#676](https://github.com/nlohmann/json/issues/676) -- Could the parser locate errors to line? [\#675](https://github.com/nlohmann/json/issues/675) -- There is performance inefficiency found by coverity tool json2.1.1/include/nlohmann/json.hpp [\#673](https://github.com/nlohmann/json/issues/673) -- include problem, when cmake on osx [\#672](https://github.com/nlohmann/json/issues/672) -- Operator= ambiguous in C++1z and GCC 7.1.1 [\#670](https://github.com/nlohmann/json/issues/670) -- should't the cmake install target be to nlohman/json.hpp [\#668](https://github.com/nlohmann/json/issues/668) -- deserialise from `std::vector` [\#667](https://github.com/nlohmann/json/issues/667) -- How to iterate? [\#665](https://github.com/nlohmann/json/issues/665) -- could this json lib work on windows? [\#664](https://github.com/nlohmann/json/issues/664) -- How does from\_json work? [\#662](https://github.com/nlohmann/json/issues/662) -- insert\(or merge\) object should replace same key , not ignore [\#661](https://github.com/nlohmann/json/issues/661) -- Parse method doesn't handle newlines. [\#659](https://github.com/nlohmann/json/issues/659) -- Compilation "note" on GCC 6 ARM [\#658](https://github.com/nlohmann/json/issues/658) -- Adding additional push\_back/operator+= rvalue overloads for JSON object [\#657](https://github.com/nlohmann/json/issues/657) -- dump's parameter "ensure\_ascii" creates too long sequences [\#656](https://github.com/nlohmann/json/issues/656) -- Question: parsing `void *` [\#655](https://github.com/nlohmann/json/issues/655) -- how should I check a string is valid JSON string ? [\#653](https://github.com/nlohmann/json/issues/653) -- Question: thread safety of read only accesses [\#651](https://github.com/nlohmann/json/issues/651) -- Eclipse: Method 'size' could not be resolved [\#649](https://github.com/nlohmann/json/issues/649) -- Update/Add object fields [\#648](https://github.com/nlohmann/json/issues/648) -- No exception raised for Out Of Range input of numbers [\#647](https://github.com/nlohmann/json/issues/647) -- Package Name [\#646](https://github.com/nlohmann/json/issues/646) -- What is the meaning of operator\[\]\(T\* key\) [\#645](https://github.com/nlohmann/json/issues/645) -- Which is the correct way to json objects as parameters to functions? [\#644](https://github.com/nlohmann/json/issues/644) -- Method to get string representations of values [\#642](https://github.com/nlohmann/json/issues/642) -- CBOR serialization of a given JSON value does not serialize [\#641](https://github.com/nlohmann/json/issues/641) -- Are we forced to use "-fexceptions" flag in android ndk project [\#640](https://github.com/nlohmann/json/issues/640) -- Comparison of objects containing floats [\#639](https://github.com/nlohmann/json/issues/639) -- 'localeconv' is not supported by NDK for SDK \<=20 [\#638](https://github.com/nlohmann/json/issues/638) -- \[Question\] cLion integration [\#637](https://github.com/nlohmann/json/issues/637) -- How to construct an iteratable usage in nlohmann json? [\#636](https://github.com/nlohmann/json/issues/636) -- \[Question\] copy assign json-container to vector [\#635](https://github.com/nlohmann/json/issues/635) -- Get size without .dump\(\) [\#634](https://github.com/nlohmann/json/issues/634) -- Segmentation fault when parsing invalid json file [\#633](https://github.com/nlohmann/json/issues/633) -- How to serialize from json to vector\? [\#632](https://github.com/nlohmann/json/issues/632) -- no member named 'thousands\_sep' in 'lconv' [\#631](https://github.com/nlohmann/json/issues/631) -- \[Question\] Any fork for \(the unsupported\) Visual Studio 2012 version? [\#628](https://github.com/nlohmann/json/issues/628) -- Dependency injection in serializer [\#627](https://github.com/nlohmann/json/issues/627) -- from\_json for std::array [\#625](https://github.com/nlohmann/json/issues/625) -- Discussion: How to structure the parsing function families [\#623](https://github.com/nlohmann/json/issues/623) -- Question: How to erase subtree [\#622](https://github.com/nlohmann/json/issues/622) -- Insertion into nested json field [\#621](https://github.com/nlohmann/json/issues/621) -- Question: return static json object from function [\#618](https://github.com/nlohmann/json/issues/618) -- icc16 error [\#617](https://github.com/nlohmann/json/issues/617) -- \[-Wdeprecated-declarations\] in row `j >> ss;` in file `json.hpp:7405:26` and FAILED unit tests with MinGWx64! [\#616](https://github.com/nlohmann/json/issues/616) -- to\_json for pairs, tuples [\#614](https://github.com/nlohmann/json/issues/614) -- Using uninitialized memory 'buf' in line 11173 v2.1.1? [\#613](https://github.com/nlohmann/json/issues/613) -- How to parse multiple same Keys of JSON and save them? [\#612](https://github.com/nlohmann/json/issues/612) -- "Multiple declarations" error when using types defined with `typedef` [\#611](https://github.com/nlohmann/json/issues/611) -- 2.1.1+ breaks compilation of shared\_ptr\ == 0 [\#610](https://github.com/nlohmann/json/issues/610) -- a bug of inheritance ? [\#608](https://github.com/nlohmann/json/issues/608) -- std::map key conversion with to\_json [\#607](https://github.com/nlohmann/json/issues/607) -- json.hpp:6384:62: error: wrong number of template arguments \(1, should be 2\) [\#606](https://github.com/nlohmann/json/issues/606) -- Incremental parsing: Where's the push version? [\#605](https://github.com/nlohmann/json/issues/605) -- Is there a way to validate the structure of a json object ? [\#604](https://github.com/nlohmann/json/issues/604) -- \[Question\] Issue when using Appveyor when compiling library [\#603](https://github.com/nlohmann/json/issues/603) -- BOM not skipped when using json:parse\(iterator\) [\#602](https://github.com/nlohmann/json/issues/602) -- Use of the binary type in CBOR and Message Pack [\#601](https://github.com/nlohmann/json/issues/601) -- Newbie issue: how does one convert a map in Json back to std::map? [\#600](https://github.com/nlohmann/json/issues/600) -- Plugin system [\#599](https://github.com/nlohmann/json/issues/599) -- Using custom types for scalars? [\#596](https://github.com/nlohmann/json/issues/596) -- Issues with the arithmetic in iterator and reverse iterator [\#593](https://github.com/nlohmann/json/issues/593) -- not enough examples [\#592](https://github.com/nlohmann/json/issues/592) -- in-class initialization for type 'const T' is not yet implemented [\#591](https://github.com/nlohmann/json/issues/591) -- compiling with gcc 7 -\> error on bool operator \< [\#590](https://github.com/nlohmann/json/issues/590) -- Parsing from stream leads to an array [\#589](https://github.com/nlohmann/json/issues/589) -- Buggy support for binary string data [\#587](https://github.com/nlohmann/json/issues/587) -- C++17's ambiguous conversion [\#586](https://github.com/nlohmann/json/issues/586) -- How does the messagepack encoding/decoding compare to msgpack-cpp in terms of performance? [\#585](https://github.com/nlohmann/json/issues/585) -- is it possible to check existence of a value deep in hierarchy? [\#584](https://github.com/nlohmann/json/issues/584) -- loading from a stream and exceptions [\#582](https://github.com/nlohmann/json/issues/582) -- Visual Studio seems not to have all min\(\) function versions [\#581](https://github.com/nlohmann/json/issues/581) -- Supporting of the json schema [\#580](https://github.com/nlohmann/json/issues/580) -- Stack-overflow \(OSS-Fuzz 1444\) [\#577](https://github.com/nlohmann/json/issues/577) -- Heap-buffer-overflow \(OSS-Fuzz 1400\) [\#575](https://github.com/nlohmann/json/issues/575) -- JSON escape quotes [\#574](https://github.com/nlohmann/json/issues/574) -- error: static\_assert failed [\#573](https://github.com/nlohmann/json/issues/573) -- Storing floats, and round trip serialisation/deserialisation diffs [\#572](https://github.com/nlohmann/json/issues/572) -- JSON.getLong produces inconsistent results [\#571](https://github.com/nlohmann/json/issues/571) -- Request: Object.at\(\) with default return value [\#570](https://github.com/nlohmann/json/issues/570) -- Internal structure gets corrupted while parsing [\#569](https://github.com/nlohmann/json/issues/569) -- create template \ basic\_json from\_cbor\(Iter begin, Iter end\) [\#568](https://github.com/nlohmann/json/issues/568) -- Conan.io [\#566](https://github.com/nlohmann/json/issues/566) -- contradictory documentation regarding json::find [\#565](https://github.com/nlohmann/json/issues/565) -- Unexpected '\"' in middle of array [\#564](https://github.com/nlohmann/json/issues/564) -- Support parse std::pair to Json object [\#563](https://github.com/nlohmann/json/issues/563) -- json and Microsoft Visual c++ Compiler Nov 2012 CTP [\#562](https://github.com/nlohmann/json/issues/562) -- from\_json declaration order and exceptions [\#561](https://github.com/nlohmann/json/issues/561) -- Tip: Don't upgrade to VS2017 if using json initializer list constructs [\#559](https://github.com/nlohmann/json/issues/559) -- parse error - unexpected end of input [\#558](https://github.com/nlohmann/json/issues/558) -- Cant modify existing numbers inside a json object [\#557](https://github.com/nlohmann/json/issues/557) -- Better support for SAX style serialize and deserialize in new version? [\#554](https://github.com/nlohmann/json/issues/554) -- Cannot convert from json array to std::array [\#553](https://github.com/nlohmann/json/issues/553) -- Do not define an unnamed namespace in a header file \(DCL59-CPP\) [\#552](https://github.com/nlohmann/json/issues/552) -- Parse error on known good json file [\#551](https://github.com/nlohmann/json/issues/551) -- Warning on Intel compiler \(icc 17\) [\#550](https://github.com/nlohmann/json/issues/550) -- multiple versions of 'vsnprintf' [\#549](https://github.com/nlohmann/json/issues/549) -- illegal indirection [\#548](https://github.com/nlohmann/json/issues/548) -- Ambiguous compare operators with clang-5.0 [\#547](https://github.com/nlohmann/json/issues/547) -- Using tsl::ordered\_map [\#546](https://github.com/nlohmann/json/issues/546) -- Compiler support errors are inconvenient [\#544](https://github.com/nlohmann/json/issues/544) -- Duplicate symbols error happens while to\_json/from\_json method implemented inside entity definition header file [\#542](https://github.com/nlohmann/json/issues/542) -- consider adding a bool json::is\_valid\(std::string const&\) non-member function [\#541](https://github.com/nlohmann/json/issues/541) -- Help request [\#539](https://github.com/nlohmann/json/issues/539) -- How to deal with missing keys in `from_json`? [\#538](https://github.com/nlohmann/json/issues/538) -- recursive from\_msgpack implementation will stack overflow [\#537](https://github.com/nlohmann/json/issues/537) -- Exception objects must be nothrow copy constructible \(ERR60-CPP\) [\#531](https://github.com/nlohmann/json/issues/531) -- Support for multiple root elements [\#529](https://github.com/nlohmann/json/issues/529) -- Port has\_shape from dropbox/json11 [\#528](https://github.com/nlohmann/json/issues/528) -- dump\_float: truncation from ptrdiff\_t to long [\#527](https://github.com/nlohmann/json/issues/527) -- Make exception base class visible in basic\_json [\#525](https://github.com/nlohmann/json/issues/525) -- msgpack unit test failures on ppc64 arch [\#524](https://github.com/nlohmann/json/issues/524) -- How about split the implementation out, and only leave the interface? [\#523](https://github.com/nlohmann/json/issues/523) -- VC++2017 not enough actual parameters for macro 'max' [\#522](https://github.com/nlohmann/json/issues/522) -- crash on empty ifstream [\#521](https://github.com/nlohmann/json/issues/521) -- Suggestion: Support tabs for indentation when serializing to stream. [\#520](https://github.com/nlohmann/json/issues/520) -- Abrt in get\_number \(OSS-Fuzz 885\) [\#519](https://github.com/nlohmann/json/issues/519) -- Abrt on unknown address \(OSS-Fuzz 884\) [\#518](https://github.com/nlohmann/json/issues/518) -- Stack-overflow \(OSS-Fuzz 869\) [\#517](https://github.com/nlohmann/json/issues/517) -- Assertion error \(OSS-Fuzz 868\) [\#516](https://github.com/nlohmann/json/issues/516) -- NaN to json and back [\#515](https://github.com/nlohmann/json/issues/515) -- Comparison of NaN [\#514](https://github.com/nlohmann/json/issues/514) -- why it's not possible to serialize c++11 enums directly [\#513](https://github.com/nlohmann/json/issues/513) -- clang compile error: use of overloaded operator '\<=' is ambiguous with \(nlohmann::json{{"a", 5}}\)\["a"\] \<= 10 [\#512](https://github.com/nlohmann/json/issues/512) -- Why not also look inside the type for \(static\) to\_json and from\_json funtions? [\#511](https://github.com/nlohmann/json/issues/511) -- Parser issues [\#509](https://github.com/nlohmann/json/issues/509) -- I may not understand [\#507](https://github.com/nlohmann/json/issues/507) -- VS2017 min / max problem for 2.1.1 [\#506](https://github.com/nlohmann/json/issues/506) -- CBOR/MessagePack is not read until the end [\#505](https://github.com/nlohmann/json/issues/505) -- Assertion error \(OSS-Fuzz 856\) [\#504](https://github.com/nlohmann/json/issues/504) -- Return position in parse error exceptions [\#503](https://github.com/nlohmann/json/issues/503) -- conversion from/to C array is not supported [\#502](https://github.com/nlohmann/json/issues/502) -- error C2338: could not find to\_json\(\) method in T's namespace [\#501](https://github.com/nlohmann/json/issues/501) -- Test suite fails in en\_GB.UTF-8 [\#500](https://github.com/nlohmann/json/issues/500) -- cannot use operator\[\] with number [\#499](https://github.com/nlohmann/json/issues/499) -- consider using \_\_cpp\_exceptions and/or \_\_EXCEPTIONS to disable/enable exception support [\#498](https://github.com/nlohmann/json/issues/498) -- Stack-overflow \(OSS-Fuzz issue 814\) [\#497](https://github.com/nlohmann/json/issues/497) -- Using in Unreal Engine - handling custom types conversion [\#495](https://github.com/nlohmann/json/issues/495) -- Conversion from vector\ to json fails to build [\#494](https://github.com/nlohmann/json/issues/494) -- fill\_line\_buffer incorrectly tests m\_stream for eof but not fail or bad bits [\#493](https://github.com/nlohmann/json/issues/493) -- Compiling with \_GLIBCXX\_DEBUG yields iterator-comparison warnings during tests [\#492](https://github.com/nlohmann/json/issues/492) -- crapy interface [\#491](https://github.com/nlohmann/json/issues/491) -- Fix Visual Studo 2013 builds. [\#490](https://github.com/nlohmann/json/issues/490) -- Failed to compile with -D\_GLIBCXX\_PARALLEL [\#489](https://github.com/nlohmann/json/issues/489) -- Input several field with the same name [\#488](https://github.com/nlohmann/json/issues/488) -- read in .json file yields strange sizes [\#487](https://github.com/nlohmann/json/issues/487) -- json::value\_t can't be a map's key type in VC++ 2015 [\#486](https://github.com/nlohmann/json/issues/486) -- Using fifo\_map [\#485](https://github.com/nlohmann/json/issues/485) -- Cannot get float pointer for value stored as `0` [\#484](https://github.com/nlohmann/json/issues/484) -- byte string support [\#483](https://github.com/nlohmann/json/issues/483) -- https://github.com/nlohmann/json\#execute-unit-tests [\#481](https://github.com/nlohmann/json/issues/481) -- Remove deprecated constructor basic\_json\(std::istream&\) [\#480](https://github.com/nlohmann/json/issues/480) -- writing the binary json file? [\#479](https://github.com/nlohmann/json/issues/479) -- CBOR/MessagePack from uint8\_t \* and size [\#478](https://github.com/nlohmann/json/issues/478) -- Streaming binary representations [\#477](https://github.com/nlohmann/json/issues/477) -- Reuse memory in to\_cbor and to\_msgpack functions [\#476](https://github.com/nlohmann/json/issues/476) -- Error Using JSON Library with arrays C++ [\#475](https://github.com/nlohmann/json/issues/475) -- Moving forward to version 3.0.0 [\#474](https://github.com/nlohmann/json/issues/474) -- Inconsistent behavior in conversion to array type [\#473](https://github.com/nlohmann/json/issues/473) -- Create a \[key:member\_pointer\] map to ease parsing custom types [\#471](https://github.com/nlohmann/json/issues/471) -- MSVC 2015 update 2 [\#469](https://github.com/nlohmann/json/issues/469) -- VS2017 implicit to std::string conversion fix. [\#464](https://github.com/nlohmann/json/issues/464) -- How to make sure a string or string literal is a valid JSON? [\#458](https://github.com/nlohmann/json/issues/458) -- basic\_json templated on a "policy" class [\#456](https://github.com/nlohmann/json/issues/456) -- json::value\(const json\_pointer&, ValueType\) requires exceptions to return the default value. [\#440](https://github.com/nlohmann/json/issues/440) -- is it possible merge two json object [\#428](https://github.com/nlohmann/json/issues/428) -- Is it possible to turn this into a shared library? [\#420](https://github.com/nlohmann/json/issues/420) -- Further thoughts on performance improvements [\#418](https://github.com/nlohmann/json/issues/418) -- nan number stored as null [\#388](https://github.com/nlohmann/json/issues/388) -- Behavior of operator\>\> should more closely resemble that of built-in overloads. [\#367](https://github.com/nlohmann/json/issues/367) -- Request: range-based-for over a json-object to expose .first/.second [\#350](https://github.com/nlohmann/json/issues/350) -- feature wish: JSONPath [\#343](https://github.com/nlohmann/json/issues/343) -- UTF-8/Unicode escape and dump [\#330](https://github.com/nlohmann/json/issues/330) -- Serialized value not always can be parsed. [\#329](https://github.com/nlohmann/json/issues/329) -- Is there a way to forward declare nlohmann::json? [\#314](https://github.com/nlohmann/json/issues/314) -- Exception line [\#301](https://github.com/nlohmann/json/issues/301) -- Do not throw exception when default\_value's type does not match the actual type [\#278](https://github.com/nlohmann/json/issues/278) -- dump\(\) method doesn't work with a custom allocator [\#268](https://github.com/nlohmann/json/issues/268) -- Readme documentation enhancements [\#248](https://github.com/nlohmann/json/issues/248) -- Use user-defined exceptions [\#244](https://github.com/nlohmann/json/issues/244) -- Incorrect C++11 allocator model support [\#161](https://github.com/nlohmann/json/issues/161) - -- :white\_check\_mark: re-added tests for algorithms [\#879](https://github.com/nlohmann/json/pull/879) ([nlohmann](https://github.com/nlohmann)) -- Overworked library toward 3.0.0 release [\#875](https://github.com/nlohmann/json/pull/875) ([nlohmann](https://github.com/nlohmann)) -- :rotating\_light: remove C4996 warnings \#872 [\#873](https://github.com/nlohmann/json/pull/873) ([nlohmann](https://github.com/nlohmann)) -- :boom: throwing an exception in case dump encounters a non-UTF-8 string \#838 [\#870](https://github.com/nlohmann/json/pull/870) ([nlohmann](https://github.com/nlohmann)) -- :memo: fixing documentation \#867 [\#868](https://github.com/nlohmann/json/pull/868) ([nlohmann](https://github.com/nlohmann)) -- iter\_impl template conformance with C++17 [\#860](https://github.com/nlohmann/json/pull/860) ([bogemic](https://github.com/bogemic)) -- Std allocator conformance cpp17 [\#856](https://github.com/nlohmann/json/pull/856) ([bogemic](https://github.com/bogemic)) -- cmake: use BUILD\_INTERFACE/INSTALL\_INTERFACE [\#855](https://github.com/nlohmann/json/pull/855) ([theodelrieu](https://github.com/theodelrieu)) -- to/from\_json: add a MSVC-specific static\_assert to force a stacktrace [\#854](https://github.com/nlohmann/json/pull/854) ([theodelrieu](https://github.com/theodelrieu)) -- Add .natvis for MSVC debug view [\#844](https://github.com/nlohmann/json/pull/844) ([TinyTinni](https://github.com/TinyTinni)) -- Updated hunter package links [\#829](https://github.com/nlohmann/json/pull/829) ([jowr](https://github.com/jowr)) -- Typos README [\#811](https://github.com/nlohmann/json/pull/811) ([Itja](https://github.com/Itja)) -- add forwarding references to json\_ref constructor [\#807](https://github.com/nlohmann/json/pull/807) ([theodelrieu](https://github.com/theodelrieu)) -- Add transparent comparator and perfect forwarding support to find\(\) and count\(\) [\#795](https://github.com/nlohmann/json/pull/795) ([jseward](https://github.com/jseward)) -- Error : 'identifier "size\_t" is undefined' in linux [\#793](https://github.com/nlohmann/json/pull/793) ([sonulohani](https://github.com/sonulohani)) -- Fix Visual Studio 2017 warnings [\#788](https://github.com/nlohmann/json/pull/788) ([jseward](https://github.com/jseward)) -- Fix warning C4706 on Visual Studio 2017 [\#785](https://github.com/nlohmann/json/pull/785) ([jseward](https://github.com/jseward)) -- Set GENERATE\_TAGFILE in Doxyfile [\#783](https://github.com/nlohmann/json/pull/783) ([eld00d](https://github.com/eld00d)) -- using more CMake [\#765](https://github.com/nlohmann/json/pull/765) ([nlohmann](https://github.com/nlohmann)) -- Simplified istream handing \#367 [\#764](https://github.com/nlohmann/json/pull/764) ([pjkundert](https://github.com/pjkundert)) -- Add info for the vcpkg package. [\#753](https://github.com/nlohmann/json/pull/753) ([gregmarr](https://github.com/gregmarr)) -- fix from\_json implementation for pair/tuple [\#708](https://github.com/nlohmann/json/pull/708) ([theodelrieu](https://github.com/theodelrieu)) -- Update json.hpp [\#686](https://github.com/nlohmann/json/pull/686) ([GoWebProd](https://github.com/GoWebProd)) -- Remove duplicate word [\#685](https://github.com/nlohmann/json/pull/685) ([daixtrose](https://github.com/daixtrose)) -- To fix compilation issue for intel OSX compiler [\#682](https://github.com/nlohmann/json/pull/682) ([kbthomp1](https://github.com/kbthomp1)) -- Digraph warning [\#679](https://github.com/nlohmann/json/pull/679) ([traits](https://github.com/traits)) -- massage -\> message [\#678](https://github.com/nlohmann/json/pull/678) ([DmitryKuk](https://github.com/DmitryKuk)) -- Fix "not constraint" grammar in docs [\#674](https://github.com/nlohmann/json/pull/674) ([wincent](https://github.com/wincent)) -- Add documentation for integration with CMake and hunter [\#671](https://github.com/nlohmann/json/pull/671) ([dan-42](https://github.com/dan-42)) -- REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse [\#669](https://github.com/nlohmann/json/pull/669) ([dan-42](https://github.com/dan-42)) -- enable\_testing only if the JSON\_BuildTests is ON [\#666](https://github.com/nlohmann/json/pull/666) ([effolkronium](https://github.com/effolkronium)) -- Support moving from rvalues in std::initializer\_list [\#663](https://github.com/nlohmann/json/pull/663) ([himikof](https://github.com/himikof)) -- add ensure\_ascii parameter to dump. \#330 [\#654](https://github.com/nlohmann/json/pull/654) ([ryanjmulder](https://github.com/ryanjmulder)) -- Rename BuildTests to JSON\_BuildTests [\#652](https://github.com/nlohmann/json/pull/652) ([olegendo](https://github.com/olegendo)) -- Don't include \, use std::make\_shared [\#650](https://github.com/nlohmann/json/pull/650) ([olegendo](https://github.com/olegendo)) -- Refacto/split basic json [\#643](https://github.com/nlohmann/json/pull/643) ([theodelrieu](https://github.com/theodelrieu)) -- fix typo in operator\_\_notequal example [\#630](https://github.com/nlohmann/json/pull/630) ([Chocobo1](https://github.com/Chocobo1)) -- Fix MSVC warning C4819 [\#629](https://github.com/nlohmann/json/pull/629) ([Chocobo1](https://github.com/Chocobo1)) -- \[BugFix\] Add parentheses around std::min [\#626](https://github.com/nlohmann/json/pull/626) ([koemeet](https://github.com/koemeet)) -- add pair/tuple conversions [\#624](https://github.com/nlohmann/json/pull/624) ([theodelrieu](https://github.com/theodelrieu)) -- remove std::pair support [\#615](https://github.com/nlohmann/json/pull/615) ([theodelrieu](https://github.com/theodelrieu)) -- Add pair support, fix CompatibleObject conversions \(fixes \#600\) [\#609](https://github.com/nlohmann/json/pull/609) ([theodelrieu](https://github.com/theodelrieu)) -- \#550 Fix iterator related compiling issues for Intel icc [\#598](https://github.com/nlohmann/json/pull/598) ([HenryRLee](https://github.com/HenryRLee)) -- Issue \#593 Fix the arithmetic operators in the iterator and reverse iterator [\#595](https://github.com/nlohmann/json/pull/595) ([HenryRLee](https://github.com/HenryRLee)) -- fix doxygen error of basic\_json::get\(\) [\#583](https://github.com/nlohmann/json/pull/583) ([zhaohuaxishi](https://github.com/zhaohuaxishi)) -- Fixing assignement for iterator wrapper second, and adding unit test [\#579](https://github.com/nlohmann/json/pull/579) ([Type1J](https://github.com/Type1J)) -- Adding first and second properties to iteration\_proxy\_internal [\#578](https://github.com/nlohmann/json/pull/578) ([Type1J](https://github.com/Type1J)) -- Adding support for Meson. [\#576](https://github.com/nlohmann/json/pull/576) ([Type1J](https://github.com/Type1J)) -- add enum class default conversions [\#545](https://github.com/nlohmann/json/pull/545) ([theodelrieu](https://github.com/theodelrieu)) -- Properly pop diagnostics [\#540](https://github.com/nlohmann/json/pull/540) ([tinloaf](https://github.com/tinloaf)) -- Add Visual Studio 17 image to appveyor build matrix [\#536](https://github.com/nlohmann/json/pull/536) ([vpetrigo](https://github.com/vpetrigo)) -- UTF8 encoding enhancement [\#534](https://github.com/nlohmann/json/pull/534) ([TedLyngmo](https://github.com/TedLyngmo)) -- Fix typo [\#530](https://github.com/nlohmann/json/pull/530) ([berkus](https://github.com/berkus)) -- Make exception base class visible in basic\_json [\#526](https://github.com/nlohmann/json/pull/526) ([ghost](https://github.com/ghost)) -- :art: Namespace `uint8_t` from the C++ stdlib [\#510](https://github.com/nlohmann/json/pull/510) ([alexweej](https://github.com/alexweej)) -- add to\_json method for C arrays [\#508](https://github.com/nlohmann/json/pull/508) ([theodelrieu](https://github.com/theodelrieu)) -- Fix -Weffc++ warnings \(GNU 6.3.1\) [\#496](https://github.com/nlohmann/json/pull/496) ([TedLyngmo](https://github.com/TedLyngmo)) - -## [v2.1.1](https://github.com/nlohmann/json/releases/tag/v2.1.1) (2017-02-25) - -[Full Changelog](https://github.com/nlohmann/json/compare/2.1.1...v2.1.1) - -## [2.1.1](https://github.com/nlohmann/json/releases/tag/2.1.1) (2017-02-25) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.1.0...2.1.1) - -- warning in the library [\#472](https://github.com/nlohmann/json/issues/472) -- How to create an array of Objects? [\#470](https://github.com/nlohmann/json/issues/470) -- \[Bug?\] Cannot get int pointer, but int64\_t works [\#468](https://github.com/nlohmann/json/issues/468) -- Illegal indirection [\#467](https://github.com/nlohmann/json/issues/467) -- in vs can't find linkageId [\#466](https://github.com/nlohmann/json/issues/466) -- Roundtrip error while parsing "1000000000000000010E5" [\#465](https://github.com/nlohmann/json/issues/465) -- C4996 error and warning with Visual Studio [\#463](https://github.com/nlohmann/json/issues/463) -- Support startIndex for from\_cbor/from\_msgpack [\#462](https://github.com/nlohmann/json/issues/462) -- question: monospace font used in feature slideshow? [\#460](https://github.com/nlohmann/json/issues/460) -- Object.keys\(\) [\#459](https://github.com/nlohmann/json/issues/459) -- Use “, “ as delimiter for json-objects. [\#457](https://github.com/nlohmann/json/issues/457) -- Enum -\> string during serialization and vice versa [\#455](https://github.com/nlohmann/json/issues/455) -- doubles are printed as integers [\#454](https://github.com/nlohmann/json/issues/454) -- Warnings with Visual Studio c++ \(VS2015 Update 3\) [\#453](https://github.com/nlohmann/json/issues/453) -- Heap-buffer-overflow \(OSS-Fuzz issue 585\) [\#452](https://github.com/nlohmann/json/issues/452) -- use of undeclared identifier 'UINT8\_MAX' [\#451](https://github.com/nlohmann/json/issues/451) -- Question on the lifetime managment of objects at the lower levels [\#449](https://github.com/nlohmann/json/issues/449) -- Json should not be constructible with 'json\*' [\#448](https://github.com/nlohmann/json/issues/448) -- Move value\_t to namespace scope [\#447](https://github.com/nlohmann/json/issues/447) -- Typo in README.md [\#446](https://github.com/nlohmann/json/issues/446) -- make check compilation is unneccesarily slow [\#445](https://github.com/nlohmann/json/issues/445) -- Problem in dump\(\) in json.h caused by ss.imbue [\#444](https://github.com/nlohmann/json/issues/444) -- I want to create Windows Application in Visual Studio 2015 c++, and i have a problem [\#443](https://github.com/nlohmann/json/issues/443) -- Implicit conversion issues [\#442](https://github.com/nlohmann/json/issues/442) -- Parsing of floats locale dependent [\#302](https://github.com/nlohmann/json/issues/302) - -- Speedup CI builds using cotire [\#461](https://github.com/nlohmann/json/pull/461) ([tusharpm](https://github.com/tusharpm)) -- TurpentineDistillery feature/locale independent str to num [\#450](https://github.com/nlohmann/json/pull/450) ([nlohmann](https://github.com/nlohmann)) -- README: adjust boost::optional example [\#439](https://github.com/nlohmann/json/pull/439) ([jaredgrubb](https://github.com/jaredgrubb)) -- fix \#414 - comparing to 0 literal [\#415](https://github.com/nlohmann/json/pull/415) ([stanmihai4](https://github.com/stanmihai4)) -- locale-independent num-to-str [\#378](https://github.com/nlohmann/json/pull/378) ([TurpentineDistillery](https://github.com/TurpentineDistillery)) - -## [v2.1.0](https://github.com/nlohmann/json/releases/tag/v2.1.0) (2017-01-28) - -[Full Changelog](https://github.com/nlohmann/json/compare/2.1.0...v2.1.0) - -## [2.1.0](https://github.com/nlohmann/json/releases/tag/2.1.0) (2017-01-28) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.10...2.1.0) - -- Parsing multiple JSON objects from a string or stream [\#438](https://github.com/nlohmann/json/issues/438) -- Use-of-uninitialized-value \(OSS-Fuzz issue 477\) [\#437](https://github.com/nlohmann/json/issues/437) -- add `reserve` function for array to reserve memory before adding json values into it [\#436](https://github.com/nlohmann/json/issues/436) -- Typo in examples page [\#434](https://github.com/nlohmann/json/issues/434) -- avoid malformed json [\#433](https://github.com/nlohmann/json/issues/433) -- How to add json objects to a map? [\#432](https://github.com/nlohmann/json/issues/432) -- create json instance from raw json \(unsigned char\*\) [\#431](https://github.com/nlohmann/json/issues/431) -- Getting std::invalid\_argument: stream error when following example [\#429](https://github.com/nlohmann/json/issues/429) -- Forward declare-only header? [\#427](https://github.com/nlohmann/json/issues/427) -- Implicit conversion from array to object [\#425](https://github.com/nlohmann/json/issues/425) -- error C4996: 'strerror' when reading file [\#422](https://github.com/nlohmann/json/issues/422) -- Get an error - JSON pointer must be empty or begin with '/' [\#421](https://github.com/nlohmann/json/issues/421) -- size parameter for parse\(\) [\#419](https://github.com/nlohmann/json/issues/419) -- json.hpp forcibly defines GCC\_VERSION [\#417](https://github.com/nlohmann/json/issues/417) -- Use-of-uninitialized-value \(OSS-Fuzz issue 377\) [\#416](https://github.com/nlohmann/json/issues/416) -- comparing to 0 literal [\#414](https://github.com/nlohmann/json/issues/414) -- Single char converted to ASCII code instead of string [\#413](https://github.com/nlohmann/json/issues/413) -- How to know if a string was parsed as utf-8? [\#406](https://github.com/nlohmann/json/issues/406) -- Overloaded += to add objects to an array makes no sense? [\#404](https://github.com/nlohmann/json/issues/404) -- Finding a value in an array [\#399](https://github.com/nlohmann/json/issues/399) -- add release information in static function [\#397](https://github.com/nlohmann/json/issues/397) -- Optimize memory usage of json objects in combination with binary serialization [\#373](https://github.com/nlohmann/json/issues/373) -- Conversion operators not considered [\#369](https://github.com/nlohmann/json/issues/369) -- Append ".0" to serialized floating\_point values that are digits-only. [\#362](https://github.com/nlohmann/json/issues/362) -- Add a customization point for user-defined types [\#328](https://github.com/nlohmann/json/issues/328) -- Conformance report for reference [\#307](https://github.com/nlohmann/json/issues/307) -- Document the best way to serialize/deserialize user defined types to json [\#298](https://github.com/nlohmann/json/issues/298) -- Add StringView template typename to basic\_json [\#297](https://github.com/nlohmann/json/issues/297) -- \[Improvement\] Add option to remove exceptions [\#296](https://github.com/nlohmann/json/issues/296) -- Performance in miloyip/nativejson-benchmark [\#202](https://github.com/nlohmann/json/issues/202) - -- conversion from/to user-defined types [\#435](https://github.com/nlohmann/json/pull/435) ([nlohmann](https://github.com/nlohmann)) -- Fix documentation error [\#430](https://github.com/nlohmann/json/pull/430) ([vjon](https://github.com/vjon)) - -## [v2.0.10](https://github.com/nlohmann/json/releases/tag/v2.0.10) (2017-01-02) - -[Full Changelog](https://github.com/nlohmann/json/compare/2.0.10...v2.0.10) - -## [2.0.10](https://github.com/nlohmann/json/releases/tag/2.0.10) (2017-01-02) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.9...2.0.10) - -- Heap-buffer-overflow \(OSS-Fuzz issue 367\) [\#412](https://github.com/nlohmann/json/issues/412) -- Heap-buffer-overflow \(OSS-Fuzz issue 366\) [\#411](https://github.com/nlohmann/json/issues/411) -- Use-of-uninitialized-value \(OSS-Fuzz issue 347\) [\#409](https://github.com/nlohmann/json/issues/409) -- Heap-buffer-overflow \(OSS-Fuzz issue 344\) [\#408](https://github.com/nlohmann/json/issues/408) -- Heap-buffer-overflow \(OSS-Fuzz issue 343\) [\#407](https://github.com/nlohmann/json/issues/407) -- Heap-buffer-overflow \(OSS-Fuzz issue 342\) [\#405](https://github.com/nlohmann/json/issues/405) -- strerror throwing error in compiler VS2015 [\#403](https://github.com/nlohmann/json/issues/403) -- json::parse of std::string being underlined by Visual Studio [\#402](https://github.com/nlohmann/json/issues/402) -- Explicitly getting string without .dump\(\) [\#401](https://github.com/nlohmann/json/issues/401) -- Possible to speed up json::parse? [\#398](https://github.com/nlohmann/json/issues/398) -- the alphabetic order in the code influence console\_output. [\#396](https://github.com/nlohmann/json/issues/396) -- Execute tests with clang sanitizers [\#394](https://github.com/nlohmann/json/issues/394) -- Check if library can be used with ETL [\#361](https://github.com/nlohmann/json/issues/361) - -- Feature/clang sanitize [\#410](https://github.com/nlohmann/json/pull/410) ([Daniel599](https://github.com/Daniel599)) -- Add Doozer build badge [\#400](https://github.com/nlohmann/json/pull/400) ([andoma](https://github.com/andoma)) - -## [v2.0.9](https://github.com/nlohmann/json/releases/tag/v2.0.9) (2016-12-16) - -[Full Changelog](https://github.com/nlohmann/json/compare/2.0.9...v2.0.9) - -## [2.0.9](https://github.com/nlohmann/json/releases/tag/2.0.9) (2016-12-16) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.8...2.0.9) - -- \#pragma GCC diagnostic ignored "-Wdocumentation" [\#393](https://github.com/nlohmann/json/issues/393) -- How to parse this json file and write separate sub object as json files? [\#392](https://github.com/nlohmann/json/issues/392) -- Integer-overflow \(OSS-Fuzz issue 267\) [\#389](https://github.com/nlohmann/json/issues/389) -- Implement indefinite-length types from RFC 7049 [\#387](https://github.com/nlohmann/json/issues/387) -- template parameter "T" is not used in declaring the parameter types of function template [\#386](https://github.com/nlohmann/json/issues/386) -- Serializing json instances containing already serialized string values without escaping [\#385](https://github.com/nlohmann/json/issues/385) -- Add test cases from RFC 7049 [\#384](https://github.com/nlohmann/json/issues/384) -- Add a table of contents to the README file [\#383](https://github.com/nlohmann/json/issues/383) -- Update FAQ section in the guidelines for contributing [\#382](https://github.com/nlohmann/json/issues/382) -- Allow for forward declaring nlohmann::json [\#381](https://github.com/nlohmann/json/issues/381) -- Bug in overflow detection when parsing integers [\#380](https://github.com/nlohmann/json/issues/380) -- A unique name to mention the library? [\#377](https://github.com/nlohmann/json/issues/377) -- Non-unique keys in objects. [\#375](https://github.com/nlohmann/json/issues/375) -- Request: binary serialization/deserialization [\#358](https://github.com/nlohmann/json/issues/358) - -- Replace class iterator and const\_iterator by using a single template class to reduce code. [\#395](https://github.com/nlohmann/json/pull/395) ([Bosswestfalen](https://github.com/Bosswestfalen)) -- Clang: quiet a warning [\#391](https://github.com/nlohmann/json/pull/391) ([jaredgrubb](https://github.com/jaredgrubb)) -- Fix issue \#380: Signed integer overflow check [\#390](https://github.com/nlohmann/json/pull/390) ([qwename](https://github.com/qwename)) - -## [v2.0.8](https://github.com/nlohmann/json/releases/tag/v2.0.8) (2016-12-02) - -[Full Changelog](https://github.com/nlohmann/json/compare/2.0.8...v2.0.8) - -## [2.0.8](https://github.com/nlohmann/json/releases/tag/2.0.8) (2016-12-02) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.7...2.0.8) - -- Reading from file [\#374](https://github.com/nlohmann/json/issues/374) -- Compiler warnings? [\#372](https://github.com/nlohmann/json/issues/372) -- docs: how to release a json object in memory? [\#371](https://github.com/nlohmann/json/issues/371) -- crash in dump [\#370](https://github.com/nlohmann/json/issues/370) -- Coverity issue \(FORWARD\_NULL\) in lexer\(std::istream& s\) [\#368](https://github.com/nlohmann/json/issues/368) -- json::parse on failed stream gets stuck [\#366](https://github.com/nlohmann/json/issues/366) -- Performance improvements [\#365](https://github.com/nlohmann/json/issues/365) -- 'to\_string' is not a member of 'std' [\#364](https://github.com/nlohmann/json/issues/364) -- Crash in dump\(\) from a static object [\#359](https://github.com/nlohmann/json/issues/359) -- json::parse\(...\) vs json j; j.parse\(...\) [\#357](https://github.com/nlohmann/json/issues/357) -- Hi, is there any method to dump json to string with the insert order rather than alphabets [\#356](https://github.com/nlohmann/json/issues/356) -- Provide an example of reading from an json with only a key that has an array of strings. [\#354](https://github.com/nlohmann/json/issues/354) -- Request: access with default value. [\#353](https://github.com/nlohmann/json/issues/353) -- {} and \[\] causes parser error. [\#352](https://github.com/nlohmann/json/issues/352) -- Reading a JSON file into a JSON object [\#351](https://github.com/nlohmann/json/issues/351) -- Request: 'emplace\_back' [\#349](https://github.com/nlohmann/json/issues/349) -- Is it possible to stream data through the json parser without storing everything in memory? [\#347](https://github.com/nlohmann/json/issues/347) -- pure virtual conversion operator [\#346](https://github.com/nlohmann/json/issues/346) -- Floating point precision lost [\#345](https://github.com/nlohmann/json/issues/345) -- unit-conversions SIGSEGV on armv7hl [\#303](https://github.com/nlohmann/json/issues/303) -- Coverity scan fails [\#299](https://github.com/nlohmann/json/issues/299) -- Using QString as string type [\#274](https://github.com/nlohmann/json/issues/274) - -## [v2.0.7](https://github.com/nlohmann/json/releases/tag/v2.0.7) (2016-11-02) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.6...v2.0.7) - -- JSON5 [\#348](https://github.com/nlohmann/json/issues/348) -- Check "Parsing JSON is a Minefield" [\#344](https://github.com/nlohmann/json/issues/344) -- Allow hex numbers [\#342](https://github.com/nlohmann/json/issues/342) -- Convert strings to numbers [\#341](https://github.com/nlohmann/json/issues/341) -- ""-operators ignore the length parameter [\#340](https://github.com/nlohmann/json/issues/340) -- JSON into std::tuple [\#339](https://github.com/nlohmann/json/issues/339) -- JSON into vector [\#335](https://github.com/nlohmann/json/issues/335) -- Installing with Homebrew on Mac Errors \(El Capitan\) [\#331](https://github.com/nlohmann/json/issues/331) -- g++ make check results in error [\#312](https://github.com/nlohmann/json/issues/312) -- Cannot convert from 'json' to 'char' [\#276](https://github.com/nlohmann/json/issues/276) -- Please add a Pretty-Print option for arrays to stay always in one line [\#229](https://github.com/nlohmann/json/issues/229) -- Conversion to STL map\\> gives error [\#220](https://github.com/nlohmann/json/issues/220) -- std::unorderd\_map cannot be used as ObjectType [\#164](https://github.com/nlohmann/json/issues/164) - -- fix minor grammar/style issue in README.md [\#336](https://github.com/nlohmann/json/pull/336) ([seeekr](https://github.com/seeekr)) - -## [v2.0.6](https://github.com/nlohmann/json/releases/tag/v2.0.6) (2016-10-15) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.5...v2.0.6) - -- How to handle json files? [\#333](https://github.com/nlohmann/json/issues/333) -- This file requires compiler and library support .... [\#332](https://github.com/nlohmann/json/issues/332) -- Segmentation fault on saving json to file [\#326](https://github.com/nlohmann/json/issues/326) -- parse error - unexpected \ with 2.0.5 [\#325](https://github.com/nlohmann/json/issues/325) -- Add nested object capability to pointers [\#323](https://github.com/nlohmann/json/issues/323) -- Fix usage examples' comments for std::multiset [\#322](https://github.com/nlohmann/json/issues/322) -- json\_unit runs forever when executed in build directory [\#319](https://github.com/nlohmann/json/issues/319) -- Visual studio 2015 update3 true != TRUE [\#317](https://github.com/nlohmann/json/issues/317) -- releasing single header file in compressed format [\#316](https://github.com/nlohmann/json/issues/316) -- json object from std::ifstream [\#315](https://github.com/nlohmann/json/issues/315) - -- make has\_mapped\_type struct friendly [\#324](https://github.com/nlohmann/json/pull/324) ([vpetrigo](https://github.com/vpetrigo)) -- Fix usage examples' comments for std::multiset [\#321](https://github.com/nlohmann/json/pull/321) ([vasild](https://github.com/vasild)) -- Include dir relocation [\#318](https://github.com/nlohmann/json/pull/318) ([ChristophJud](https://github.com/ChristophJud)) -- trivial documentation fix [\#313](https://github.com/nlohmann/json/pull/313) ([5tefan](https://github.com/5tefan)) - -## [v2.0.5](https://github.com/nlohmann/json/releases/tag/v2.0.5) (2016-09-14) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.4...v2.0.5) - -- \[feature request\]: schema validator and comments [\#311](https://github.com/nlohmann/json/issues/311) -- make json\_benchmarks no longer working in 2.0.4 [\#310](https://github.com/nlohmann/json/issues/310) -- Segmentation fault \(core dumped\) [\#309](https://github.com/nlohmann/json/issues/309) -- No matching member function for call to 'get\_impl' [\#308](https://github.com/nlohmann/json/issues/308) - -## [v2.0.4](https://github.com/nlohmann/json/releases/tag/v2.0.4) (2016-09-11) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.3...v2.0.4) - -- Parsing fails without space at end of file [\#306](https://github.com/nlohmann/json/issues/306) -- json schema validator [\#305](https://github.com/nlohmann/json/issues/305) -- Unused variable warning [\#304](https://github.com/nlohmann/json/issues/304) - -## [v2.0.3](https://github.com/nlohmann/json/releases/tag/v2.0.3) (2016-08-31) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.2...v2.0.3) - -- warning C4706: assignment within conditional expression [\#295](https://github.com/nlohmann/json/issues/295) -- Q: Is it possible to build json tree from already UTF8 encoded values? [\#293](https://github.com/nlohmann/json/issues/293) -- Equality operator results in array when assigned object [\#292](https://github.com/nlohmann/json/issues/292) -- Support for integers not from the range \[-\(2\*\*53\)+1, \(2\*\*53\)-1\] in parser [\#291](https://github.com/nlohmann/json/issues/291) -- Support for iterator-range parsing [\#290](https://github.com/nlohmann/json/issues/290) -- Horribly inconsistent behavior between const/non-const reference in operator \[\] \(\) [\#289](https://github.com/nlohmann/json/issues/289) -- Silently get numbers into smaller types [\#288](https://github.com/nlohmann/json/issues/288) -- Incorrect parsing of large int64\_t numbers [\#287](https://github.com/nlohmann/json/issues/287) -- \[question\]: macro to disable floating point support [\#284](https://github.com/nlohmann/json/issues/284) - -- unit-constructor1.cpp: Fix floating point truncation warning [\#300](https://github.com/nlohmann/json/pull/300) ([t-b](https://github.com/t-b)) - -## [v2.0.2](https://github.com/nlohmann/json/releases/tag/v2.0.2) (2016-07-31) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.1...v2.0.2) - -- can function dump\(\) return string in the order I push in the json object ? [\#286](https://github.com/nlohmann/json/issues/286) -- Error on the Mac: Undefined symbols for architecture x86\_64 [\#285](https://github.com/nlohmann/json/issues/285) -- value\(\) does not work with \_json\_pointer types [\#283](https://github.com/nlohmann/json/issues/283) -- Build error for std::int64 [\#282](https://github.com/nlohmann/json/issues/282) -- strings can't be accessed after dump\(\)-\>parse\(\) - type is lost [\#281](https://github.com/nlohmann/json/issues/281) -- Easy serialization of classes [\#280](https://github.com/nlohmann/json/issues/280) -- recursive data structures [\#277](https://github.com/nlohmann/json/issues/277) -- hexify\(\) function emits conversion warning [\#270](https://github.com/nlohmann/json/issues/270) - -- let the makefile choose the correct sed [\#279](https://github.com/nlohmann/json/pull/279) ([murinicanor](https://github.com/murinicanor)) -- Update hexify to use array lookup instead of ternary \(\#270\) [\#275](https://github.com/nlohmann/json/pull/275) ([dtoma](https://github.com/dtoma)) - -## [v2.0.1](https://github.com/nlohmann/json/releases/tag/v2.0.1) (2016-06-28) - -[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.0...v2.0.1) - -- Compilation error. [\#273](https://github.com/nlohmann/json/issues/273) -- dump\(\) performance degradation in v2 [\#272](https://github.com/nlohmann/json/issues/272) - -- fixed a tiny typo [\#271](https://github.com/nlohmann/json/pull/271) ([feroldi](https://github.com/feroldi)) - -## [v2.0.0](https://github.com/nlohmann/json/releases/tag/v2.0.0) (2016-06-23) - -[Full Changelog](https://github.com/nlohmann/json/compare/v1.1.0...v2.0.0) - -- json::diff generates incorrect patch when removing multiple array elements. [\#269](https://github.com/nlohmann/json/issues/269) -- Docs - What does Json\[key\] return? [\#267](https://github.com/nlohmann/json/issues/267) -- Compiler Errors With JSON.hpp [\#265](https://github.com/nlohmann/json/issues/265) -- Ambiguous push\_back and operator+= overloads [\#263](https://github.com/nlohmann/json/issues/263) -- Preseving order of items in json [\#262](https://github.com/nlohmann/json/issues/262) -- '\' char problem in strings [\#261](https://github.com/nlohmann/json/issues/261) -- VS2015 compile fail [\#260](https://github.com/nlohmann/json/issues/260) -- -Wconversion warning [\#259](https://github.com/nlohmann/json/issues/259) -- Maybe a bug [\#258](https://github.com/nlohmann/json/issues/258) -- Few tests failed on Visual C++ 2015 [\#257](https://github.com/nlohmann/json/issues/257) -- Access keys when iteration with new for loop C++11 [\#256](https://github.com/nlohmann/json/issues/256) -- multiline text values [\#255](https://github.com/nlohmann/json/issues/255) -- Error when using json in g++ [\#254](https://github.com/nlohmann/json/issues/254) -- is the release 2.0? [\#253](https://github.com/nlohmann/json/issues/253) -- concatenate objects [\#252](https://github.com/nlohmann/json/issues/252) -- Encoding [\#251](https://github.com/nlohmann/json/issues/251) -- Unable to build example for constructing json object with stringstreams [\#250](https://github.com/nlohmann/json/issues/250) -- Hexadecimal support [\#249](https://github.com/nlohmann/json/issues/249) -- Update long-term goals [\#246](https://github.com/nlohmann/json/issues/246) -- Contribution To This Json Project [\#245](https://github.com/nlohmann/json/issues/245) -- Trouble using parser with initial dictionary [\#243](https://github.com/nlohmann/json/issues/243) -- Unit test fails when doing a CMake out-of-tree build [\#241](https://github.com/nlohmann/json/issues/241) -- -Wconversion warnings [\#239](https://github.com/nlohmann/json/issues/239) -- Additional integration options [\#237](https://github.com/nlohmann/json/issues/237) -- .get\\(\) works for non spaced string but returns as array for spaced/longer strings [\#236](https://github.com/nlohmann/json/issues/236) -- ambiguous overload for 'push\_back' and 'operator+=' [\#235](https://github.com/nlohmann/json/issues/235) -- Can't use basic\_json::iterator as a base iterator for std::move\_iterator [\#233](https://github.com/nlohmann/json/issues/233) -- json object's creation can freezes execution [\#231](https://github.com/nlohmann/json/issues/231) -- Incorrect dumping of parsed numbers with exponents, but without decimal places [\#230](https://github.com/nlohmann/json/issues/230) -- double values are serialized with commas as decimal points [\#228](https://github.com/nlohmann/json/issues/228) -- Move semantics with std::initializer\_list [\#225](https://github.com/nlohmann/json/issues/225) -- replace emplace [\#224](https://github.com/nlohmann/json/issues/224) -- abort during getline in yyfill [\#223](https://github.com/nlohmann/json/issues/223) -- free\(\): invalid pointer error in GCC 5.2.1 [\#221](https://github.com/nlohmann/json/issues/221) -- Error compile Android NDK error: 'strtof' is not a member of 'std' [\#219](https://github.com/nlohmann/json/issues/219) -- Wrong link in the README.md [\#217](https://github.com/nlohmann/json/issues/217) -- Wide character strings not supported [\#216](https://github.com/nlohmann/json/issues/216) -- Memory allocations using range-based for loops [\#214](https://github.com/nlohmann/json/issues/214) -- would you like to support gcc 4.8.1? [\#211](https://github.com/nlohmann/json/issues/211) -- Reading concatenated json's from an istream [\#210](https://github.com/nlohmann/json/issues/210) -- Conflicting typedef of ssize\_t on Windows 32 bit when using Boost.Python [\#204](https://github.com/nlohmann/json/issues/204) -- Inconsistency between operator\[\] and push\_back [\#203](https://github.com/nlohmann/json/issues/203) -- Small bugs in json.hpp \(get\_number\) and unit.cpp \(non-standard integer type test\) [\#199](https://github.com/nlohmann/json/issues/199) -- GCC/clang floating point parsing bug in strtod\(\) [\#195](https://github.com/nlohmann/json/issues/195) -- What is within scope? [\#192](https://github.com/nlohmann/json/issues/192) -- Bugs in miloyip/nativejson-benchmark: roundtrips [\#187](https://github.com/nlohmann/json/issues/187) -- Floating point exceptions [\#181](https://github.com/nlohmann/json/issues/181) -- Integer conversion to unsigned [\#178](https://github.com/nlohmann/json/issues/178) -- map string string fails to compile [\#176](https://github.com/nlohmann/json/issues/176) -- In basic\_json::basic\_json\(const CompatibleArrayType& val\), the requirement of CompatibleArrayType is not strict enough. [\#174](https://github.com/nlohmann/json/issues/174) -- Provide a FAQ [\#163](https://github.com/nlohmann/json/issues/163) -- Implicit assignment to std::string fails [\#144](https://github.com/nlohmann/json/issues/144) - -- Fix Issue \#265 [\#266](https://github.com/nlohmann/json/pull/266) ([06needhamt](https://github.com/06needhamt)) -- Define CMake/CTest tests [\#247](https://github.com/nlohmann/json/pull/247) ([robertmrk](https://github.com/robertmrk)) -- Out of tree builds and a few other miscellaneous CMake cleanups. [\#242](https://github.com/nlohmann/json/pull/242) ([ChrisKitching](https://github.com/ChrisKitching)) -- Implement additional integration options [\#238](https://github.com/nlohmann/json/pull/238) ([robertmrk](https://github.com/robertmrk)) -- make serialization locale-independent [\#232](https://github.com/nlohmann/json/pull/232) ([nlohmann](https://github.com/nlohmann)) -- fixes \#223 by updating README.md [\#227](https://github.com/nlohmann/json/pull/227) ([kevin--](https://github.com/kevin--)) -- Use namespace std for int64\_t and uint64\_t [\#226](https://github.com/nlohmann/json/pull/226) ([lv-zheng](https://github.com/lv-zheng)) -- Added missing cerrno header to fix ERANGE compile error on android [\#222](https://github.com/nlohmann/json/pull/222) ([Teemperor](https://github.com/Teemperor)) -- Corrected readme [\#218](https://github.com/nlohmann/json/pull/218) ([Annihil](https://github.com/Annihil)) -- Create PULL\_REQUEST\_TEMPLATE.md [\#213](https://github.com/nlohmann/json/pull/213) ([whackashoe](https://github.com/whackashoe)) -- fixed noexcept; added constexpr [\#208](https://github.com/nlohmann/json/pull/208) ([nlohmann](https://github.com/nlohmann)) -- Add support for afl-fuzz testing [\#207](https://github.com/nlohmann/json/pull/207) ([mykter](https://github.com/mykter)) -- replaced ssize\_t occurrences with auto \(addresses \#204\) [\#205](https://github.com/nlohmann/json/pull/205) ([nlohmann](https://github.com/nlohmann)) -- Fixed issue \#199 - Small bugs in json.hpp \(get\_number\) and unit.cpp \(non-standard integer type test\) [\#200](https://github.com/nlohmann/json/pull/200) ([twelsby](https://github.com/twelsby)) -- Fix broken link [\#197](https://github.com/nlohmann/json/pull/197) ([vog](https://github.com/vog)) -- Issue \#195 - update Travis to Trusty due to gcc/clang strtod\(\) bug [\#196](https://github.com/nlohmann/json/pull/196) ([twelsby](https://github.com/twelsby)) -- Issue \#178 - Extending support to full uint64\_t/int64\_t range and unsigned type \(updated\) [\#193](https://github.com/nlohmann/json/pull/193) ([twelsby](https://github.com/twelsby)) - -## [v1.1.0](https://github.com/nlohmann/json/releases/tag/v1.1.0) (2016-01-24) - -[Full Changelog](https://github.com/nlohmann/json/compare/v1.0.0...v1.1.0) - -- Small error in pull \#185 [\#194](https://github.com/nlohmann/json/issues/194) -- Bugs in miloyip/nativejson-benchmark: floating-point parsing [\#186](https://github.com/nlohmann/json/issues/186) -- Floating point equality [\#185](https://github.com/nlohmann/json/issues/185) -- Unused variables in catch [\#180](https://github.com/nlohmann/json/issues/180) -- Typo in documentation [\#179](https://github.com/nlohmann/json/issues/179) -- JSON performance benchmark comparision [\#177](https://github.com/nlohmann/json/issues/177) -- Since re2c is often ignored in pull requests, it may make sense to make a contributing.md file [\#175](https://github.com/nlohmann/json/issues/175) -- Question about exceptions [\#173](https://github.com/nlohmann/json/issues/173) -- Android? [\#172](https://github.com/nlohmann/json/issues/172) -- Cannot index by key of type static constexpr const char\* [\#171](https://github.com/nlohmann/json/issues/171) -- Add assertions [\#168](https://github.com/nlohmann/json/issues/168) -- MSVC 2015 build fails when attempting to compare object\_t [\#167](https://github.com/nlohmann/json/issues/167) -- Member detector is not portable [\#166](https://github.com/nlohmann/json/issues/166) -- Unnecessary const\_cast [\#162](https://github.com/nlohmann/json/issues/162) -- Question about get\_ref\(\) [\#128](https://github.com/nlohmann/json/issues/128) -- range based for loop for objects [\#83](https://github.com/nlohmann/json/issues/83) -- Consider submitting this to the Boost Library Incubator [\#66](https://github.com/nlohmann/json/issues/66) - -- Fixed Issue \#186 - add strto\(f|d|ld\) overload wrappers, "-0.0" special case and FP trailing zero [\#191](https://github.com/nlohmann/json/pull/191) ([twelsby](https://github.com/twelsby)) -- Issue \#185 - remove approx\(\) and use \#pragma to kill warnings [\#190](https://github.com/nlohmann/json/pull/190) ([twelsby](https://github.com/twelsby)) -- Fixed Issue \#171 - added two extra template overloads of operator\[\] for T\* arguments [\#189](https://github.com/nlohmann/json/pull/189) ([twelsby](https://github.com/twelsby)) -- Fixed issue \#167 - removed operator ValueType\(\) condition for VS2015 [\#188](https://github.com/nlohmann/json/pull/188) ([twelsby](https://github.com/twelsby)) -- Implementation of get\_ref\(\) [\#184](https://github.com/nlohmann/json/pull/184) ([dariomt](https://github.com/dariomt)) -- Fixed some typos in CONTRIBUTING.md [\#182](https://github.com/nlohmann/json/pull/182) ([nibroc](https://github.com/nibroc)) - -## [v1.0.0](https://github.com/nlohmann/json/releases/tag/v1.0.0) (2015-12-27) - -[Full Changelog](https://github.com/nlohmann/json/compare/v1.0.0-rc1...v1.0.0) - -- add key name to exception [\#160](https://github.com/nlohmann/json/issues/160) -- Getting member discarding qualifyer [\#159](https://github.com/nlohmann/json/issues/159) -- basic\_json::iterator::value\(\) output includes quotes while basic\_json::iterator::key\(\) doesn't [\#158](https://github.com/nlohmann/json/issues/158) -- Indexing `const basic_json<>` with `const basic_string` [\#157](https://github.com/nlohmann/json/issues/157) -- token\_type\_name\(token\_type t\): not all control paths return a value [\#156](https://github.com/nlohmann/json/issues/156) -- prevent json.hpp from emitting compiler warnings [\#154](https://github.com/nlohmann/json/issues/154) -- json::parse\(string\) does not check utf8 bom [\#152](https://github.com/nlohmann/json/issues/152) -- unsigned 64bit values output as signed [\#151](https://github.com/nlohmann/json/issues/151) -- Wish feature: json5 [\#150](https://github.com/nlohmann/json/issues/150) -- Unable to compile on MSVC 2015 with SDL checking enabled: This function or variable may be unsafe. [\#149](https://github.com/nlohmann/json/issues/149) -- "Json Object" type does not keep object order [\#148](https://github.com/nlohmann/json/issues/148) -- dump\(\) convert strings encoded by utf-8 to shift-jis on windows 10. [\#147](https://github.com/nlohmann/json/issues/147) -- Unable to get field names in a json object [\#145](https://github.com/nlohmann/json/issues/145) -- Question: Is the use of incomplete type correct? [\#138](https://github.com/nlohmann/json/issues/138) -- json.hpp:5746:32: error: 'to\_string' is not a member of 'std' [\#136](https://github.com/nlohmann/json/issues/136) -- Bug in basic\_json::operator\[\] const overload [\#135](https://github.com/nlohmann/json/issues/135) -- wrong enable\_if for const pointer \(instead of pointer-to-const\) [\#134](https://github.com/nlohmann/json/issues/134) -- overload of at\(\) with default value [\#133](https://github.com/nlohmann/json/issues/133) -- Splitting source [\#132](https://github.com/nlohmann/json/issues/132) -- Question about get\_ptr\(\) [\#127](https://github.com/nlohmann/json/issues/127) -- Visual Studio 14 Debug assertion failed [\#125](https://github.com/nlohmann/json/issues/125) -- Memory leak in face of exceptions [\#118](https://github.com/nlohmann/json/issues/118) -- Find and Count for arrays [\#117](https://github.com/nlohmann/json/issues/117) -- dynamically constructing an arbitrarily nested object [\#114](https://github.com/nlohmann/json/issues/114) -- Returning any data type [\#113](https://github.com/nlohmann/json/issues/113) -- Compile error with g++ 4.9.3 cygwin 64-bit [\#112](https://github.com/nlohmann/json/issues/112) -- insert json array issue with gcc4.8.2 [\#110](https://github.com/nlohmann/json/issues/110) -- error: unterminated raw string [\#109](https://github.com/nlohmann/json/issues/109) -- vector\ copy constructor really weird [\#108](https://github.com/nlohmann/json/issues/108) -- \[clang-3.6.2\] string/sstream with number to json issue [\#107](https://github.com/nlohmann/json/issues/107) -- object field accessors [\#103](https://github.com/nlohmann/json/issues/103) -- v8pp and json [\#95](https://github.com/nlohmann/json/issues/95) -- Wishlist [\#65](https://github.com/nlohmann/json/issues/65) -- Windows/Visual Studio \(through 2013\) is unsupported [\#62](https://github.com/nlohmann/json/issues/62) - -- Replace sprintf with hex function, this fixes \#149 [\#153](https://github.com/nlohmann/json/pull/153) ([whackashoe](https://github.com/whackashoe)) -- Fix character skipping after a surrogate pair [\#146](https://github.com/nlohmann/json/pull/146) ([robertmrk](https://github.com/robertmrk)) -- Detect correctly pointer-to-const [\#137](https://github.com/nlohmann/json/pull/137) ([dariomt](https://github.com/dariomt)) -- disabled "CopyAssignable" test for MSVC in Debug mode, see \#125 [\#131](https://github.com/nlohmann/json/pull/131) ([dariomt](https://github.com/dariomt)) -- removed stream operator for iterator, resolution for \#125 [\#130](https://github.com/nlohmann/json/pull/130) ([dariomt](https://github.com/dariomt)) -- fixed typos in comments for examples [\#129](https://github.com/nlohmann/json/pull/129) ([dariomt](https://github.com/dariomt)) -- Remove superfluous inefficiency [\#126](https://github.com/nlohmann/json/pull/126) ([d-frey](https://github.com/d-frey)) -- remove invalid parameter '-stdlib=libc++' in CMakeLists.txt [\#124](https://github.com/nlohmann/json/pull/124) ([emvivre](https://github.com/emvivre)) -- exception-safe object creation, fixes \#118 [\#122](https://github.com/nlohmann/json/pull/122) ([d-frey](https://github.com/d-frey)) -- Fix small oversight. [\#121](https://github.com/nlohmann/json/pull/121) ([ColinH](https://github.com/ColinH)) -- Overload parse\(\) to accept an rvalue reference [\#120](https://github.com/nlohmann/json/pull/120) ([silverweed](https://github.com/silverweed)) -- Use the right variable name in doc string [\#115](https://github.com/nlohmann/json/pull/115) ([whoshuu](https://github.com/whoshuu)) - -## [v1.0.0-rc1](https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1) (2015-07-26) - -[Full Changelog](https://github.com/nlohmann/json/compare/4502e7e51c0569419c26e75fbdd5748170603e54...v1.0.0-rc1) - -- Finish documenting the public interface in Doxygen [\#102](https://github.com/nlohmann/json/issues/102) -- Binary string causes numbers to be dumped as hex [\#101](https://github.com/nlohmann/json/issues/101) -- failed to iterator json object with reverse\_iterator [\#100](https://github.com/nlohmann/json/issues/100) -- 'noexcept' : unknown override specifier [\#99](https://github.com/nlohmann/json/issues/99) -- json float parsing problem [\#98](https://github.com/nlohmann/json/issues/98) -- Adjust wording to JSON RFC [\#97](https://github.com/nlohmann/json/issues/97) -- static analysis warnings [\#94](https://github.com/nlohmann/json/issues/94) -- reverse\_iterator operator inheritance problem [\#93](https://github.com/nlohmann/json/issues/93) -- init error [\#92](https://github.com/nlohmann/json/issues/92) -- access by \(const\) reference [\#91](https://github.com/nlohmann/json/issues/91) -- is\_integer and is\_float tests [\#90](https://github.com/nlohmann/json/issues/90) -- Nonstandard integer type [\#89](https://github.com/nlohmann/json/issues/89) -- static library build [\#84](https://github.com/nlohmann/json/issues/84) -- lexer::get\_number return NAN [\#82](https://github.com/nlohmann/json/issues/82) -- MinGW have no std::to\_string [\#80](https://github.com/nlohmann/json/issues/80) -- Incorrect behaviour of basic\_json::count method [\#78](https://github.com/nlohmann/json/issues/78) -- Invoking is\_array\(\) function creates "null" value [\#77](https://github.com/nlohmann/json/issues/77) -- dump\(\) / parse\(\) not idempotent [\#76](https://github.com/nlohmann/json/issues/76) -- Handle infinity and NaN cases [\#70](https://github.com/nlohmann/json/issues/70) -- errors in g++-4.8.1 [\#68](https://github.com/nlohmann/json/issues/68) -- Keys when iterating over objects [\#67](https://github.com/nlohmann/json/issues/67) -- Compilation results in tons of warnings [\#64](https://github.com/nlohmann/json/issues/64) -- Complete brief documentation [\#61](https://github.com/nlohmann/json/issues/61) -- Double quotation mark is not parsed correctly [\#60](https://github.com/nlohmann/json/issues/60) -- Get coverage back to 100% [\#58](https://github.com/nlohmann/json/issues/58) -- erase elements using iterators [\#57](https://github.com/nlohmann/json/issues/57) -- Removing item from array [\#56](https://github.com/nlohmann/json/issues/56) -- Serialize/Deserialize like PHP? [\#55](https://github.com/nlohmann/json/issues/55) -- Numbers as keys [\#54](https://github.com/nlohmann/json/issues/54) -- Why are elements alphabetized on key while iterating? [\#53](https://github.com/nlohmann/json/issues/53) -- Document erase, count, and iterators key and value [\#52](https://github.com/nlohmann/json/issues/52) -- Do not use std::to\_string [\#51](https://github.com/nlohmann/json/issues/51) -- Supported compilers [\#50](https://github.com/nlohmann/json/issues/50) -- Confused about iterating through json objects [\#49](https://github.com/nlohmann/json/issues/49) -- Use non-member begin/end [\#48](https://github.com/nlohmann/json/issues/48) -- Erase key [\#47](https://github.com/nlohmann/json/issues/47) -- Key iterator [\#46](https://github.com/nlohmann/json/issues/46) -- Add count member function [\#45](https://github.com/nlohmann/json/issues/45) -- Problem getting vector \(array\) of strings [\#44](https://github.com/nlohmann/json/issues/44) -- Compilation error due to assuming that private=public [\#43](https://github.com/nlohmann/json/issues/43) -- Use of deprecated implicit copy constructor [\#42](https://github.com/nlohmann/json/issues/42) -- Printing attribute names [\#39](https://github.com/nlohmann/json/issues/39) -- dumping a small number\_float just outputs 0.000000 [\#37](https://github.com/nlohmann/json/issues/37) -- find is error [\#32](https://github.com/nlohmann/json/issues/32) -- Avoid using spaces when encoding without pretty print [\#31](https://github.com/nlohmann/json/issues/31) -- Cannot encode long numbers [\#30](https://github.com/nlohmann/json/issues/30) -- segmentation fault when iterating over empty arrays/objects [\#28](https://github.com/nlohmann/json/issues/28) -- Creating an empty array [\#27](https://github.com/nlohmann/json/issues/27) -- Custom allocator support [\#25](https://github.com/nlohmann/json/issues/25) -- make the type of the used string container customizable [\#20](https://github.com/nlohmann/json/issues/20) -- Improper parsing of JSON string "\\" [\#17](https://github.com/nlohmann/json/issues/17) -- create a header-only version [\#16](https://github.com/nlohmann/json/issues/16) -- Don't return "const values" [\#15](https://github.com/nlohmann/json/issues/15) -- Add to\_string overload for indentation [\#13](https://github.com/nlohmann/json/issues/13) -- string parser does not recognize uncompliant strings [\#12](https://github.com/nlohmann/json/issues/12) -- possible double-free in find function [\#11](https://github.com/nlohmann/json/issues/11) -- UTF-8 encoding/deconding/testing [\#10](https://github.com/nlohmann/json/issues/10) -- move code into namespace [\#9](https://github.com/nlohmann/json/issues/9) -- free functions for explicit objects and arrays in initializer lists [\#8](https://github.com/nlohmann/json/issues/8) -- unique\_ptr for ownership [\#7](https://github.com/nlohmann/json/issues/7) -- Add unit tests [\#4](https://github.com/nlohmann/json/issues/4) -- Drop C++98 support [\#3](https://github.com/nlohmann/json/issues/3) -- Test case coverage [\#2](https://github.com/nlohmann/json/issues/2) -- Runtime error in Travis job [\#1](https://github.com/nlohmann/json/issues/1) - -- Keyword 'inline' is useless when member functions are defined in headers [\#87](https://github.com/nlohmann/json/pull/87) ([ahamez](https://github.com/ahamez)) -- Remove useless typename [\#86](https://github.com/nlohmann/json/pull/86) ([ahamez](https://github.com/ahamez)) -- Avoid warning with Xcode's clang [\#85](https://github.com/nlohmann/json/pull/85) ([ahamez](https://github.com/ahamez)) -- Fix typos [\#73](https://github.com/nlohmann/json/pull/73) ([aqnouch](https://github.com/aqnouch)) -- Replace `default_callback` function with `nullptr` and check for null… [\#72](https://github.com/nlohmann/json/pull/72) ([aburgh](https://github.com/aburgh)) -- support enum [\#71](https://github.com/nlohmann/json/pull/71) ([likebeta](https://github.com/likebeta)) -- Fix performance regression introduced with the parsing callback feature. [\#69](https://github.com/nlohmann/json/pull/69) ([aburgh](https://github.com/aburgh)) -- Improve the implementations of the comparission-operators [\#63](https://github.com/nlohmann/json/pull/63) ([Florianjw](https://github.com/Florianjw)) -- Fix compilation of json\_unit with GCC 5 [\#59](https://github.com/nlohmann/json/pull/59) ([dkopecek](https://github.com/dkopecek)) -- Parse streams incrementally. [\#40](https://github.com/nlohmann/json/pull/40) ([aburgh](https://github.com/aburgh)) -- Feature/small float serialization [\#38](https://github.com/nlohmann/json/pull/38) ([jrandall](https://github.com/jrandall)) -- template version with re2c scanner [\#36](https://github.com/nlohmann/json/pull/36) ([nlohmann](https://github.com/nlohmann)) -- more descriptive documentation in example [\#33](https://github.com/nlohmann/json/pull/33) ([luxe](https://github.com/luxe)) -- Fix string conversion under Clang [\#26](https://github.com/nlohmann/json/pull/26) ([wancw](https://github.com/wancw)) -- Fixed dumping of strings [\#24](https://github.com/nlohmann/json/pull/24) ([Teemperor](https://github.com/Teemperor)) -- Added a remark to the readme that coverage is GCC only for now [\#23](https://github.com/nlohmann/json/pull/23) ([Teemperor](https://github.com/Teemperor)) -- Unicode escaping [\#22](https://github.com/nlohmann/json/pull/22) ([Teemperor](https://github.com/Teemperor)) -- Implemented the JSON spec for string parsing for everything but the \uXXXX escaping [\#21](https://github.com/nlohmann/json/pull/21) ([Teemperor](https://github.com/Teemperor)) -- add the std iterator typedefs to iterator and const\_iterator [\#19](https://github.com/nlohmann/json/pull/19) ([kirkshoop](https://github.com/kirkshoop)) -- Fixed escaped quotes [\#18](https://github.com/nlohmann/json/pull/18) ([Teemperor](https://github.com/Teemperor)) -- Fix double delete on std::bad\_alloc exception [\#14](https://github.com/nlohmann/json/pull/14) ([elliotgoodrich](https://github.com/elliotgoodrich)) -- Added CMake and lcov [\#6](https://github.com/nlohmann/json/pull/6) ([Teemperor](https://github.com/Teemperor)) -- Version 2.0 [\#5](https://github.com/nlohmann/json/pull/5) ([nlohmann](https://github.com/nlohmann)) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/extern/nlohmann-json/LICENSE.MIT b/extern/nlohmann-json/LICENSE.MIT deleted file mode 100644 index 1c1f7a690..000000000 --- a/extern/nlohmann-json/LICENSE.MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-2022 Niels Lohmann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/extern/nlohmann-json/LICENSES/Apache-2.0.txt b/extern/nlohmann-json/LICENSES/Apache-2.0.txt deleted file mode 100644 index 137069b82..000000000 --- a/extern/nlohmann-json/LICENSES/Apache-2.0.txt +++ /dev/null @@ -1,73 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - - (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - - You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/extern/nlohmann-json/LICENSES/BSD-3-Clause.txt b/extern/nlohmann-json/LICENSES/BSD-3-Clause.txt deleted file mode 100644 index ea890afbc..000000000 --- a/extern/nlohmann-json/LICENSES/BSD-3-Clause.txt +++ /dev/null @@ -1,11 +0,0 @@ -Copyright (c) . - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/extern/nlohmann-json/LICENSES/GPL-3.0-only.txt b/extern/nlohmann-json/LICENSES/GPL-3.0-only.txt deleted file mode 100644 index d41c0bd98..000000000 --- a/extern/nlohmann-json/LICENSES/GPL-3.0-only.txt +++ /dev/null @@ -1,232 +0,0 @@ -GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. - -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. - -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. - -A “covered work” means either the unmodified Program or a work based on the Program. - -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. - -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. - - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. - -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/extern/nlohmann-json/LICENSES/MIT.txt b/extern/nlohmann-json/LICENSES/MIT.txt deleted file mode 100644 index 2071b23b0..000000000 --- a/extern/nlohmann-json/LICENSES/MIT.txt +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/extern/nlohmann-json/Makefile b/extern/nlohmann-json/Makefile deleted file mode 100644 index 18b08a51a..000000000 --- a/extern/nlohmann-json/Makefile +++ /dev/null @@ -1,282 +0,0 @@ -.PHONY: pretty clean ChangeLog.md release - -########################################################################## -# configuration -########################################################################## - -# find GNU sed to use `-i` parameter -SED:=$(shell command -v gsed || which sed) - - -########################################################################## -# source files -########################################################################## - -# the list of sources in the include folder -SRCS=$(shell find include -type f | sort) - -# the list of sources in the tests folder -TESTS_SRCS=$(shell find tests -type f \( -name '*.hpp' -o -name '*.cpp' -o -name '*.cu' \) -not -path 'tests/thirdparty/*' -not -path 'tests/abi/include/nlohmann/*' | sort) - -# the single headers (amalgamated from the source files) -AMALGAMATED_FILE=single_include/nlohmann/json.hpp -AMALGAMATED_FWD_FILE=single_include/nlohmann/json_fwd.hpp - - -########################################################################## -# documentation of the Makefile's targets -########################################################################## - -# main target -all: - @echo "amalgamate - amalgamate files single_include/nlohmann/json{,_fwd}.hpp from the include/nlohmann sources" - @echo "ChangeLog.md - generate ChangeLog file" - @echo "check-amalgamation - check whether sources have been amalgamated" - @echo "clean - remove built files" - @echo "doctest - compile example files and check their output" - @echo "fuzz_testing - prepare fuzz testing of the JSON parser" - @echo "fuzz_testing_bson - prepare fuzz testing of the BSON parser" - @echo "fuzz_testing_cbor - prepare fuzz testing of the CBOR parser" - @echo "fuzz_testing_msgpack - prepare fuzz testing of the MessagePack parser" - @echo "fuzz_testing_ubjson - prepare fuzz testing of the UBJSON parser" - @echo "pretty - beautify code with Artistic Style" - @echo "run_benchmarks - build and run benchmarks" - - -########################################################################## -# documentation tests -########################################################################## - -# compile example files and check output -doctest: - $(MAKE) check_output -C docs - - -########################################################################## -# benchmarks -########################################################################## - -run_benchmarks: - rm -fr cmake-build-benchmarks - mkdir cmake-build-benchmarks - cd cmake-build-benchmarks ; cmake ../tests/benchmarks -GNinja -DCMAKE_BUILD_TYPE=Release - cd cmake-build-benchmarks ; ninja - cd cmake-build-benchmarks ; ./json_benchmarks - - -########################################################################## -# fuzzing -########################################################################## - -# the overall fuzz testing target -fuzz_testing: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) parse_afl_fuzzer -C tests CXX=afl-clang++ - mv tests/parse_afl_fuzzer fuzz-testing/fuzzer - find tests/data/json_tests -size -5k -name *json | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - -fuzz_testing_bson: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) parse_bson_fuzzer -C tests CXX=afl-clang++ - mv tests/parse_bson_fuzzer fuzz-testing/fuzzer - find tests/data -size -5k -name *.bson | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - -fuzz_testing_cbor: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) parse_cbor_fuzzer -C tests CXX=afl-clang++ - mv tests/parse_cbor_fuzzer fuzz-testing/fuzzer - find tests/data -size -5k -name *.cbor | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - -fuzz_testing_msgpack: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) parse_msgpack_fuzzer -C tests CXX=afl-clang++ - mv tests/parse_msgpack_fuzzer fuzz-testing/fuzzer - find tests/data -size -5k -name *.msgpack | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - -fuzz_testing_ubjson: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) parse_ubjson_fuzzer -C tests CXX=afl-clang++ - mv tests/parse_ubjson_fuzzer fuzz-testing/fuzzer - find tests/data -size -5k -name *.ubjson | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - -fuzzing-start: - afl-fuzz -S fuzzer1 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer2 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer3 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer4 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer5 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer6 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -S fuzzer7 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & - afl-fuzz -M fuzzer0 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer - -fuzzing-stop: - -killall fuzzer - -killall afl-fuzz - - -########################################################################## -# Static analysis -########################################################################## - -# call PVS-Studio Analyzer -pvs_studio: - rm -fr cmake-build-pvs-studio - mkdir cmake-build-pvs-studio - cd cmake-build-pvs-studio ; cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DJSON_MultipleHeaders=ON - cd cmake-build-pvs-studio ; pvs-studio-analyzer analyze -j 10 - cd cmake-build-pvs-studio ; plog-converter -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs - open cmake-build-pvs-studio/pvs/index.html - - -########################################################################## -# Code format and source amalgamation -########################################################################## - -# call the Artistic Style pretty printer on all source files -pretty: - astyle \ - --style=allman \ - --indent=spaces=4 \ - --indent-modifiers \ - --indent-switches \ - --indent-preproc-block \ - --indent-preproc-define \ - --indent-col1-comments \ - --pad-oper \ - --pad-header \ - --align-pointer=type \ - --align-reference=type \ - --add-brackets \ - --convert-tabs \ - --close-templates \ - --lineend=linux \ - --preserve-date \ - --suffix=none \ - --formatted \ - $(SRCS) $(TESTS_SRCS) $(AMALGAMATED_FILE) $(AMALGAMATED_FWD_FILE) docs/examples/*.cpp - -# call the Clang-Format on all source files -pretty_format: - for FILE in $(SRCS) $(TESTS_SRCS) $(AMALGAMATED_FILE) docs/examples/*.cpp; do echo $$FILE; clang-format -i $$FILE; done - -# create single header files and pretty print -amalgamate: $(AMALGAMATED_FILE) $(AMALGAMATED_FWD_FILE) - $(MAKE) pretty - -# call the amalgamation tool for json.hpp -$(AMALGAMATED_FILE): $(SRCS) - tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json.json -s . --verbose=yes - -# call the amalgamation tool for json_fwd.hpp -$(AMALGAMATED_FWD_FILE): $(SRCS) - tools/amalgamate/amalgamate.py -c tools/amalgamate/config_json_fwd.json -s . --verbose=yes - -# check if file single_include/nlohmann/json.hpp has been amalgamated from the nlohmann sources -# Note: this target is called by Travis -check-amalgamation: - @mv $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ - @mv $(AMALGAMATED_FWD_FILE) $(AMALGAMATED_FWD_FILE)~ - @$(MAKE) amalgamate - @diff $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) ; false) - @diff $(AMALGAMATED_FWD_FILE) $(AMALGAMATED_FWD_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FWD_FILE)~ $(AMALGAMATED_FWD_FILE) ; false) - @mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) - @mv $(AMALGAMATED_FWD_FILE)~ $(AMALGAMATED_FWD_FILE) - - -########################################################################## -# ChangeLog -########################################################################## - -# Create a ChangeLog based on the git log using the GitHub Changelog Generator -# (). - -# variable to control the diffs between the last released version and the current repository state -NEXT_VERSION ?= "unreleased" - -ChangeLog.md: - github_changelog_generator -o ChangeLog.md --user nlohmann --project json --simple-list --release-url https://github.com/nlohmann/json/releases/tag/%s --future-release $(NEXT_VERSION) - $(SED) -i 's|https://github.com/nlohmann/json/releases/tag/HEAD|https://github.com/nlohmann/json/tree/HEAD|' ChangeLog.md - $(SED) -i '2i All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).' ChangeLog.md - - -########################################################################## -# Release files -########################################################################## - -# Create a tar.gz archive that contains sufficient files to be used as CMake project (e.g., using FetchContent). The -# archive is created according to the advices of . -json.tar.xz: - mkdir json - rsync -R $(shell find LICENSE.MIT nlohmann_json.natvis CMakeLists.txt cmake/*.in include single_include -type f) json - gtar --sort=name --mtime="@$(shell git log -1 --pretty=%ct)" --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime --create --file - json | xz --compress -9e --threads=2 - > json.tar.xz - rm -fr json - -# We use `-X` to make the resulting ZIP file reproducible, see -# . -include.zip: - zip -9 --recurse-paths -X include.zip $(SRCS) $(AMALGAMATED_FILE) meson.build LICENSE.MIT - -# Create the files for a release and add signatures and hashes. -release: include.zip json.tar.xz - rm -fr release_files - mkdir release_files - gpg --armor --detach-sig include.zip - gpg --armor --detach-sig $(AMALGAMATED_FILE) - gpg --armor --detach-sig $(AMALGAMATED_FWD_FILE) - gpg --armor --detach-sig json.tar.xz - cp $(AMALGAMATED_FILE) release_files - cp $(AMALGAMATED_FWD_FILE) release_files - mv $(AMALGAMATED_FILE).asc $(AMALGAMATED_FWD_FILE).asc json.tar.xz json.tar.xz.asc include.zip include.zip.asc release_files - cd release_files ; shasum -a 256 json.hpp include.zip json.tar.xz > hashes.txt - - -########################################################################## -# Maintenance -########################################################################## - -# clean up -clean: - rm -fr fuzz fuzz-testing *.dSYM tests/*.dSYM - rm -fr benchmarks/files/numbers/*.json - rm -fr cmake-build-benchmarks fuzz-testing cmake-build-pvs-studio release_files - $(MAKE) clean -Cdocs - - -########################################################################## -# Thirdparty code -########################################################################## - -update_hedley: - rm -f include/nlohmann/thirdparty/hedley/hedley.hpp include/nlohmann/thirdparty/hedley/hedley_undef.hpp - curl https://raw.githubusercontent.com/nemequ/hedley/master/hedley.h -o include/nlohmann/thirdparty/hedley/hedley.hpp - $(SED) -i 's/HEDLEY_/JSON_HEDLEY_/g' include/nlohmann/thirdparty/hedley/hedley.hpp - grep "[[:blank:]]*#[[:blank:]]*undef" include/nlohmann/thirdparty/hedley/hedley.hpp | grep -v "__" | sort | uniq | $(SED) 's/ //g' | $(SED) 's/undef/undef /g' > include/nlohmann/thirdparty/hedley/hedley_undef.hpp - $(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley.hpp - $(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley_undef.hpp - $(MAKE) amalgamate - -########################################################################## -# serve_header.py -########################################################################## - -serve_header: - ./tools/serve_header/serve_header.py --make $(MAKE) - -########################################################################## -# REUSE -########################################################################## - -reuse: - pipx run reuse addheader --recursive single_include include -tjson --license MIT --copyright "Niels Lohmann " --year "2013-2022" - pipx run reuse addheader $(TESTS_SRCS) --style=c -tjson_support --license MIT --copyright "Niels Lohmann " --year "2013-2022" - pipx run reuse lint diff --git a/extern/nlohmann-json/README.md b/extern/nlohmann-json/README.md deleted file mode 100644 index d74aa7b1f..000000000 --- a/extern/nlohmann-json/README.md +++ /dev/null @@ -1,1846 +0,0 @@ -[![JSON for Modern C++](docs/json.gif)](https://github.com/nlohmann/json/releases) - -[![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json) -[![Ubuntu](https://github.com/nlohmann/json/workflows/Ubuntu/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AUbuntu) -[![macOS](https://github.com/nlohmann/json/workflows/macOS/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AmacOS) -[![Windows](https://github.com/nlohmann/json/workflows/Windows/badge.svg)](https://github.com/nlohmann/json/actions?query=workflow%3AWindows) -[![Coverage Status](https://coveralls.io/repos/github/nlohmann/json/badge.svg?branch=develop)](https://coveralls.io/github/nlohmann/json?branch=develop) -[![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) -[![Codacy Badge](https://app.codacy.com/project/badge/Grade/e0d1a9d5d6fd46fcb655c4cb930bb3e8)](https://www.codacy.com/gh/nlohmann/json/dashboard?utm_source=github.com&utm_medium=referral&utm_content=nlohmann/json&utm_campaign=Badge_Grade) -[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/nlohmann/json.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/nlohmann/json/context:cpp) -[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/json.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:json) -[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/1mp10JbaANo6FUc7) -[![Documentation](https://img.shields.io/badge/docs-mkdocs-blue.svg)](https://json.nlohmann.me) -[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) -[![GitHub Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) -[![Packaging status](https://repology.org/badge/tiny-repos/nlohmann-json.svg)](https://repology.org/project/nlohmann-json/versions) -[![GitHub Downloads](https://img.shields.io/github/downloads/nlohmann/json/total)](https://github.com/nlohmann/json/releases) -[![GitHub Issues](https://img.shields.io/github/issues/nlohmann/json.svg)](https://github.com/nlohmann/json/issues) -[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/nlohmann/json.svg)](https://isitmaintained.com/project/nlohmann/json "Average time to resolve an issue") -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/289/badge)](https://bestpractices.coreinfrastructure.org/projects/289) -[![GitHub Sponsors](https://img.shields.io/badge/GitHub-Sponsors-ff69b4)](https://github.com/sponsors/nlohmann) -[![REUSE status](https://api.reuse.software/badge/github.com/nlohmann/json)](https://api.reuse.software/info/github.com/nlohmann/json) -[![Discord](https://img.shields.io/discord/1003743314341793913)](https://discord.gg/6mrGXKvX7y) - -- [Design goals](#design-goals) -- [Sponsors](#sponsors) -- [Support](#support) ([documentation](https://json.nlohmann.me), [FAQ](https://json.nlohmann.me/home/faq/), [discussions](https://github.com/nlohmann/json/discussions), [API](https://json.nlohmann.me/api/basic_json/), [bug issues](https://github.com/nlohmann/json/issues)) -- [Examples](#examples) - - [Read JSON from a file](#read-json-from-a-file) - - [Creating `json` objects from JSON literals](#creating-json-objects-from-json-literals) - - [JSON as first-class data type](#json-as-first-class-data-type) - - [Serialization / Deserialization](#serialization--deserialization) - - [STL-like access](#stl-like-access) - - [Conversion from STL containers](#conversion-from-stl-containers) - - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) - - [JSON Merge Patch](#json-merge-patch) - - [Implicit conversions](#implicit-conversions) - - [Conversions to/from arbitrary types](#arbitrary-types-conversions) - - [Specializing enum conversion](#specializing-enum-conversion) - - [Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData)](#binary-formats-bson-cbor-messagepack-ubjson-and-bjdata) -- [Supported compilers](#supported-compilers) -- [Integration](#integration) - - [CMake](#cmake) - - [Package Managers](#package-managers) - - [Pkg-config](#pkg-config) -- [License](#license) -- [Contact](#contact) -- [Thanks](#thanks) -- [Used third-party tools](#used-third-party-tools) -- [Projects using JSON for Modern C++](#projects-using-json-for-modern-c) -- [Notes](#notes) -- [Execute unit tests](#execute-unit-tests) - -## Design goals - -There are myriads of [JSON](https://json.org) libraries out there, and each may even have its reason to exist. Our class had these design goals: - -- **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean. - -- **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. - -- **Serious testing**. Our code is heavily [unit-tested](https://github.com/nlohmann/json/tree/develop/tests/src) and covers [100%](https://coveralls.io/r/nlohmann/json) of the code, including all exceptional behavior. Furthermore, we checked with [Valgrind](https://valgrind.org) and the [Clang Sanitizers](https://clang.llvm.org/docs/index.html) that there are no memory leaks. [Google OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/json) additionally runs fuzz tests against all parsers 24/7, effectively executing billions of tests so far. To maintain high quality, the project is following the [Core Infrastructure Initiative (CII) best practices](https://bestpractices.coreinfrastructure.org/projects/289). - -Other aspects were not so important to us: - -- **Memory efficiency**. Each JSON object has an overhead of one pointer (the maximal size of a union) and one enumeration element (1 byte). The default generalization uses the following C++ data types: `std::string` for strings, `int64_t`, `uint64_t` or `double` for numbers, `std::map` for objects, `std::vector` for arrays, and `bool` for Booleans. However, you can template the generalized class `basic_json` to your needs. - -- **Speed**. There are certainly [faster JSON libraries](https://github.com/miloyip/nativejson-benchmark#parsing-time) out there. However, if your goal is to speed up your development by adding JSON support with a single header, then this library is the way to go. If you know how to use a `std::vector` or `std::map`, you are already set. - -See the [contribution guidelines](https://github.com/nlohmann/json/blob/master/.github/CONTRIBUTING.md#please-dont) for more information. - - -## Sponsors - -You can sponsor this library at [GitHub Sponsors](https://github.com/sponsors/nlohmann). - -### :office: Corporate Sponsor - -[![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Codacy-logo-black.svg/320px-Codacy-logo-black.svg.png)](https://github.com/codacy) - -### :label: Named Sponsors - -- [Michael Hartmann](https://github.com/reFX-Mike) -- [Stefan Hagen](https://github.com/sthagen) -- [Steve Sperandeo](https://github.com/homer6) -- [Robert Jefe Lindstädt](https://github.com/eljefedelrodeodeljefe) -- [Steve Wagner](https://github.com/ciroque) - -Thanks everyone! - -## Support - -:question: If you have a **question**, please check if it is already answered in the [**FAQ**](https://json.nlohmann.me/home/faq/) or the [**Q&A**](https://github.com/nlohmann/json/discussions/categories/q-a) section. If not, please [**ask a new question**](https://github.com/nlohmann/json/discussions/new) there. - -:books: If you want to **learn more** about how to use the library, check out the rest of the [**README**](#examples), have a look at [**code examples**](https://github.com/nlohmann/json/tree/develop/docs/examples), or browse through the [**help pages**](https://json.nlohmann.me). - -:construction: If you want to understand the **API** better, check out the [**API Reference**](https://json.nlohmann.me/api/basic_json/). - -:bug: If you found a **bug**, please check the [**FAQ**](https://json.nlohmann.me/home/faq/) if it is a known issue or the result of a design decision. Please also have a look at the [**issue list**](https://github.com/nlohmann/json/issues) before you [**create a new issue**](https://github.com/nlohmann/json/issues/new/choose). Please provide as much information as possible to help us understand and reproduce your issue. - -There is also a [**docset**](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for the documentation browsers [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), and [Zeal](https://zealdocs.org) that contains the full [documentation](https://json.nlohmann.me) as offline resource. - -## Examples - -Here are some examples to give you an idea how to use the class. - -Beside the examples below, you may want to: - -→ Check the [documentation](https://json.nlohmann.me/)\ -→ Browse the [standalone example files](https://github.com/nlohmann/json/tree/develop/docs/examples) - -Every API function (documented in the [API Documentation](https://json.nlohmann.me/api/basic_json/)) has a corresponding standalone example file. For example, the [`emplace()`](https://json.nlohmann.me/api/basic_json/emplace/) function has a matching [emplace.cpp](https://github.com/nlohmann/json/blob/develop/docs/examples/emplace.cpp) example file. - -### Read JSON from a file - -The `json` class provides an API for manipulating a JSON value. To create a `json` object by reading a JSON file: - -```cpp -#include -#include -using json = nlohmann::json; - -// ... - -std::ifstream f("example.json"); -json data = json::parse(f); -``` - -### Creating `json` objects from JSON literals - -Assume you want to create hard-code this literal JSON value in a file, as a `json` object: - -```json -{ - "pi": 3.141, - "happy": true -} -``` - -There are various options: - -```cpp -// Using (raw) string literals and json::parse -json ex1 = json::parse(R"( - { - "pi": 3.141, - "happy": true - } -)"); - -// Using user-defined (raw) string literals -using namespace nlohmann::literals; -json ex2 = R"( - { - "pi": 3.141, - "happy": true - } -)"_json; - -// Using initializer lists -json ex3 = { - {"happy", true}, - {"pi", 3.141}, -}; -``` - -### JSON as first-class data type - -Here are some examples to give you an idea how to use the class. - -Assume you want to create the JSON object - -```json -{ - "pi": 3.141, - "happy": true, - "name": "Niels", - "nothing": null, - "answer": { - "everything": 42 - }, - "list": [1, 0, 2], - "object": { - "currency": "USD", - "value": 42.99 - } -} -``` - -With this library, you could write: - -```cpp -// create an empty structure (null) -json j; - -// add a number that is stored as double (note the implicit conversion of j to an object) -j["pi"] = 3.141; - -// add a Boolean that is stored as bool -j["happy"] = true; - -// add a string that is stored as std::string -j["name"] = "Niels"; - -// add another null object by passing nullptr -j["nothing"] = nullptr; - -// add an object inside the object -j["answer"]["everything"] = 42; - -// add an array that is stored as std::vector (using an initializer list) -j["list"] = { 1, 0, 2 }; - -// add another object (using an initializer list of pairs) -j["object"] = { {"currency", "USD"}, {"value", 42.99} }; - -// instead, you could also write (which looks very similar to the JSON above) -json j2 = { - {"pi", 3.141}, - {"happy", true}, - {"name", "Niels"}, - {"nothing", nullptr}, - {"answer", { - {"everything", 42} - }}, - {"list", {1, 0, 2}}, - {"object", { - {"currency", "USD"}, - {"value", 42.99} - }} -}; -``` - -Note that in all these cases, you never need to "tell" the compiler which JSON value type you want to use. If you want to be explicit or express some edge cases, the functions [`json::array()`](https://json.nlohmann.me/api/basic_json/array/) and [`json::object()`](https://json.nlohmann.me/api/basic_json/object/) will help: - -```cpp -// a way to express the empty array [] -json empty_array_explicit = json::array(); - -// ways to express the empty object {} -json empty_object_implicit = json({}); -json empty_object_explicit = json::object(); - -// a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]] -json array_not_object = json::array({ {"currency", "USD"}, {"value", 42.99} }); -``` - -### Serialization / Deserialization - -#### To/from strings - -You can create a JSON value (deserialization) by appending `_json` to a string literal: - -```cpp -// create object from string literal -json j = "{ \"happy\": true, \"pi\": 3.141 }"_json; - -// or even nicer with a raw string literal -auto j2 = R"( - { - "happy": true, - "pi": 3.141 - } -)"_json; -``` - -Note that without appending the `_json` suffix, the passed string literal is not parsed, but just used as JSON string -value. That is, `json j = "{ \"happy\": true, \"pi\": 3.141 }"` would just store the string -`"{ "happy": true, "pi": 3.141 }"` rather than parsing the actual object. - -The string literal should be brought into scope with with `using namespace nlohmann::literals;` -(see [`json::parse()`](https://json.nlohmann.me/api/operator_literal_json/)). - -The above example can also be expressed explicitly using [`json::parse()`](https://json.nlohmann.me/api/basic_json/parse/): - -```cpp -// parse explicitly -auto j3 = json::parse(R"({"happy": true, "pi": 3.141})"); -``` - -You can also get a string representation of a JSON value (serialize): - -```cpp -// explicit conversion to string -std::string s = j.dump(); // {"happy":true,"pi":3.141} - -// serialization with pretty printing -// pass in the amount of spaces to indent -std::cout << j.dump(4) << std::endl; -// { -// "happy": true, -// "pi": 3.141 -// } -``` - -Note the difference between serialization and assignment: - -```cpp -// store a string in a JSON value -json j_string = "this is a string"; - -// retrieve the string value -auto cpp_string = j_string.get(); -// retrieve the string value (alternative when a variable already exists) -std::string cpp_string2; -j_string.get_to(cpp_string2); - -// retrieve the serialized value (explicit JSON serialization) -std::string serialized_string = j_string.dump(); - -// output of original string -std::cout << cpp_string << " == " << cpp_string2 << " == " << j_string.get() << '\n'; -// output of serialized value -std::cout << j_string << " == " << serialized_string << std::endl; -``` - -[`.dump()`](https://json.nlohmann.me/api/basic_json/dump/) returns the originally stored string value. - -Note the library only supports UTF-8. When you store strings with different encodings in the library, calling [`dump()`](https://json.nlohmann.me/api/basic_json/dump/) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers. - -#### To/from streams (e.g. files, string streams) - -You can also use streams to serialize and deserialize: - -```cpp -// deserialize from standard input -json j; -std::cin >> j; - -// serialize to standard output -std::cout << j; - -// the setw manipulator was overloaded to set the indentation for pretty printing -std::cout << std::setw(4) << j << std::endl; -``` - -These operators work for any subclasses of `std::istream` or `std::ostream`. Here is the same example with files: - -```cpp -// read a JSON file -std::ifstream i("file.json"); -json j; -i >> j; - -// write prettified JSON to another file -std::ofstream o("pretty.json"); -o << std::setw(4) << j << std::endl; -``` - -Please note that setting the exception bit for `failbit` is inappropriate for this use case. It will result in program termination due to the `noexcept` specifier in use. - -#### Read from iterator range - -You can also parse JSON from an iterator range; that is, from any container accessible by iterators whose `value_type` is an integral type of 1, 2 or 4 bytes, which will be interpreted as UTF-8, UTF-16 and UTF-32 respectively. For instance, a `std::vector`, or a `std::list`: - -```cpp -std::vector v = {'t', 'r', 'u', 'e'}; -json j = json::parse(v.begin(), v.end()); -``` - -You may leave the iterators for the range [begin, end): - -```cpp -std::vector v = {'t', 'r', 'u', 'e'}; -json j = json::parse(v); -``` - -#### Custom data source - -Since the parse function accepts arbitrary iterator ranges, you can provide your own data sources by implementing the `LegacyInputIterator` concept. - -```cpp -struct MyContainer { - void advance(); - const char& get_current(); -}; - -struct MyIterator { - using difference_type = std::ptrdiff_t; - using value_type = char; - using pointer = const char*; - using reference = const char&; - using iterator_category = std::input_iterator_tag; - - MyIterator& operator++() { - MyContainer.advance(); - return *this; - } - - bool operator!=(const MyIterator& rhs) const { - return rhs.target != target; - } - - reference operator*() const { - return target.get_current(); - } - - MyContainer* target = nullptr; -}; - -MyIterator begin(MyContainer& tgt) { - return MyIterator{&tgt}; -} - -MyIterator end(const MyContainer&) { - return {}; -} - -void foo() { - MyContainer c; - json j = json::parse(c); -} -``` - -#### SAX interface - -The library uses a SAX-like interface with the following functions: - -```cpp -// called when null is parsed -bool null(); - -// called when a boolean is parsed; value is passed -bool boolean(bool val); - -// called when a signed or unsigned integer number is parsed; value is passed -bool number_integer(number_integer_t val); -bool number_unsigned(number_unsigned_t val); - -// called when a floating-point number is parsed; value and original string is passed -bool number_float(number_float_t val, const string_t& s); - -// called when a string is parsed; value is passed and can be safely moved away -bool string(string_t& val); -// called when a binary value is parsed; value is passed and can be safely moved away -bool binary(binary_t& val); - -// called when an object or array begins or ends, resp. The number of elements is passed (or -1 if not known) -bool start_object(std::size_t elements); -bool end_object(); -bool start_array(std::size_t elements); -bool end_array(); -// called when an object key is parsed; value is passed and can be safely moved away -bool key(string_t& val); - -// called when a parse error occurs; byte position, the last token, and an exception is passed -bool parse_error(std::size_t position, const std::string& last_token, const detail::exception& ex); -``` - -The return value of each function determines whether parsing should proceed. - -To implement your own SAX handler, proceed as follows: - -1. Implement the SAX interface in a class. You can use class `nlohmann::json_sax` as base class, but you can also use any class where the functions described above are implemented and public. -2. Create an object of your SAX interface class, e.g. `my_sax`. -3. Call `bool json::sax_parse(input, &my_sax)`; where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface. - -Note the `sax_parse` function only returns a `bool` indicating the result of the last executed SAX event. It does not return a `json` value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your `parse_error` implementation. Internally, the SAX interface is used for the DOM parser (class `json_sax_dom_parser`) as well as the acceptor (`json_sax_acceptor`), see file [`json_sax.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/detail/input/json_sax.hpp). - -### STL-like access - -We designed the JSON class to behave just like an STL container. In fact, it satisfies the [**ReversibleContainer**](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) requirement. - -```cpp -// create an array using push_back -json j; -j.push_back("foo"); -j.push_back(1); -j.push_back(true); - -// also use emplace_back -j.emplace_back(1.78); - -// iterate the array -for (json::iterator it = j.begin(); it != j.end(); ++it) { - std::cout << *it << '\n'; -} - -// range-based for -for (auto& element : j) { - std::cout << element << '\n'; -} - -// getter/setter -const auto tmp = j[0].get(); -j[1] = 42; -bool foo = j.at(2); - -// comparison -j == R"(["foo", 1, true, 1.78])"_json; // true - -// other stuff -j.size(); // 4 entries -j.empty(); // false -j.type(); // json::value_t::array -j.clear(); // the array is empty again - -// convenience type checkers -j.is_null(); -j.is_boolean(); -j.is_number(); -j.is_object(); -j.is_array(); -j.is_string(); - -// create an object -json o; -o["foo"] = 23; -o["bar"] = false; -o["baz"] = 3.141; - -// also use emplace -o.emplace("weather", "sunny"); - -// special iterator member functions for objects -for (json::iterator it = o.begin(); it != o.end(); ++it) { - std::cout << it.key() << " : " << it.value() << "\n"; -} - -// the same code as range for -for (auto& el : o.items()) { - std::cout << el.key() << " : " << el.value() << "\n"; -} - -// even easier with structured bindings (C++17) -for (auto& [key, value] : o.items()) { - std::cout << key << " : " << value << "\n"; -} - -// find an entry -if (o.contains("foo")) { - // there is an entry with key "foo" -} - -// or via find and an iterator -if (o.find("foo") != o.end()) { - // there is an entry with key "foo" -} - -// or simpler using count() -int foo_present = o.count("foo"); // 1 -int fob_present = o.count("fob"); // 0 - -// delete an entry -o.erase("foo"); -``` - - -### Conversion from STL containers - -Any sequence container (`std::array`, `std::vector`, `std::deque`, `std::forward_list`, `std::list`) whose values can be used to construct JSON values (e.g., integers, floating point numbers, Booleans, string types, or again STL containers described in this section) can be used to create a JSON array. The same holds for similar associative containers (`std::set`, `std::multiset`, `std::unordered_set`, `std::unordered_multiset`), but in these cases the order of the elements of the array depends on how the elements are ordered in the respective STL container. - -```cpp -std::vector c_vector {1, 2, 3, 4}; -json j_vec(c_vector); -// [1, 2, 3, 4] - -std::deque c_deque {1.2, 2.3, 3.4, 5.6}; -json j_deque(c_deque); -// [1.2, 2.3, 3.4, 5.6] - -std::list c_list {true, true, false, true}; -json j_list(c_list); -// [true, true, false, true] - -std::forward_list c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543}; -json j_flist(c_flist); -// [12345678909876, 23456789098765, 34567890987654, 45678909876543] - -std::array c_array {{1, 2, 3, 4}}; -json j_array(c_array); -// [1, 2, 3, 4] - -std::set c_set {"one", "two", "three", "four", "one"}; -json j_set(c_set); // only one entry for "one" is used -// ["four", "one", "three", "two"] - -std::unordered_set c_uset {"one", "two", "three", "four", "one"}; -json j_uset(c_uset); // only one entry for "one" is used -// maybe ["two", "three", "four", "one"] - -std::multiset c_mset {"one", "two", "one", "four"}; -json j_mset(c_mset); // both entries for "one" are used -// maybe ["one", "two", "one", "four"] - -std::unordered_multiset c_umset {"one", "two", "one", "four"}; -json j_umset(c_umset); // both entries for "one" are used -// maybe ["one", "two", "one", "four"] -``` - -Likewise, any associative key-value containers (`std::map`, `std::multimap`, `std::unordered_map`, `std::unordered_multimap`) whose keys can construct an `std::string` and whose values can be used to construct JSON values (see examples above) can be used to create a JSON object. Note that in case of multimaps only one key is used in the JSON object and the value depends on the internal order of the STL container. - -```cpp -std::map c_map { {"one", 1}, {"two", 2}, {"three", 3} }; -json j_map(c_map); -// {"one": 1, "three": 3, "two": 2 } - -std::unordered_map c_umap { {"one", 1.2}, {"two", 2.3}, {"three", 3.4} }; -json j_umap(c_umap); -// {"one": 1.2, "two": 2.3, "three": 3.4} - -std::multimap c_mmap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; -json j_mmap(c_mmap); // only one entry for key "three" is used -// maybe {"one": true, "two": true, "three": true} - -std::unordered_multimap c_ummap { {"one", true}, {"two", true}, {"three", false}, {"three", true} }; -json j_ummap(c_ummap); // only one entry for key "three" is used -// maybe {"one": true, "two": true, "three": true} -``` - -### JSON Pointer and JSON Patch - -The library supports **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) as alternative means to address structured values. On top of this, **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) allows describing differences between two JSON values - effectively allowing patch and diff operations known from Unix. - -```cpp -// a JSON value -json j_original = R"({ - "baz": ["one", "two", "three"], - "foo": "bar" -})"_json; - -// access members with a JSON pointer (RFC 6901) -j_original["/baz/1"_json_pointer]; -// "two" - -// a JSON patch (RFC 6902) -json j_patch = R"([ - { "op": "replace", "path": "/baz", "value": "boo" }, - { "op": "add", "path": "/hello", "value": ["world"] }, - { "op": "remove", "path": "/foo"} -])"_json; - -// apply the patch -json j_result = j_original.patch(j_patch); -// { -// "baz": "boo", -// "hello": ["world"] -// } - -// calculate a JSON patch from two JSON values -json::diff(j_result, j_original); -// [ -// { "op":" replace", "path": "/baz", "value": ["one", "two", "three"] }, -// { "op": "remove","path": "/hello" }, -// { "op": "add", "path": "/foo", "value": "bar" } -// ] -``` - -### JSON Merge Patch - -The library supports **JSON Merge Patch** ([RFC 7386](https://tools.ietf.org/html/rfc7386)) as a patch format. Instead of using JSON Pointer (see above) to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified. - -```cpp -// a JSON value -json j_document = R"({ - "a": "b", - "c": { - "d": "e", - "f": "g" - } -})"_json; - -// a patch -json j_patch = R"({ - "a":"z", - "c": { - "f": null - } -})"_json; - -// apply the patch -j_document.merge_patch(j_patch); -// { -// "a": "z", -// "c": { -// "d": "e" -// } -// } -``` - -### Implicit conversions - -Supported types can be implicitly converted to JSON values. - -It is recommended to **NOT USE** implicit conversions **FROM** a JSON value. -You can find more details about this recommendation [here](https://www.github.com/nlohmann/json/issues/958). -You can switch off implicit conversions by defining `JSON_USE_IMPLICIT_CONVERSIONS` to `0` before including the `json.hpp` header. When using CMake, you can also achieve this by setting the option `JSON_ImplicitConversions` to `OFF`. - -```cpp -// strings -std::string s1 = "Hello, world!"; -json js = s1; -auto s2 = js.get(); -// NOT RECOMMENDED -std::string s3 = js; -std::string s4; -s4 = js; - -// Booleans -bool b1 = true; -json jb = b1; -auto b2 = jb.get(); -// NOT RECOMMENDED -bool b3 = jb; -bool b4; -b4 = jb; - -// numbers -int i = 42; -json jn = i; -auto f = jn.get(); -// NOT RECOMMENDED -double f2 = jb; -double f3; -f3 = jb; - -// etc. -``` - -Note that `char` types are not automatically converted to JSON strings, but to integer numbers. A conversion to a string must be specified explicitly: - -```cpp -char ch = 'A'; // ASCII value 65 -json j_default = ch; // stores integer number 65 -json j_string = std::string(1, ch); // stores string "A" -``` - -### Arbitrary types conversions - -Every type can be serialized in JSON, not just STL containers and scalar types. Usually, you would do something along those lines: - -```cpp -namespace ns { - // a simple struct to model a person - struct person { - std::string name; - std::string address; - int age; - }; -} - -ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60}; - -// convert to JSON: copy each value into the JSON object -json j; -j["name"] = p.name; -j["address"] = p.address; -j["age"] = p.age; - -// ... - -// convert from JSON: copy each value from the JSON object -ns::person p { - j["name"].get(), - j["address"].get(), - j["age"].get() -}; -``` - -It works, but that's quite a lot of boilerplate... Fortunately, there's a better way: - -```cpp -// create a person -ns::person p {"Ned Flanders", "744 Evergreen Terrace", 60}; - -// conversion: person -> json -json j = p; - -std::cout << j << std::endl; -// {"address":"744 Evergreen Terrace","age":60,"name":"Ned Flanders"} - -// conversion: json -> person -auto p2 = j.get(); - -// that's it -assert(p == p2); -``` - -#### Basic usage - -To make this work with one of your types, you only need to provide two functions: - -```cpp -using json = nlohmann::json; - -namespace ns { - void to_json(json& j, const person& p) { - j = json{{"name", p.name}, {"address", p.address}, {"age", p.age}}; - } - - void from_json(const json& j, person& p) { - j.at("name").get_to(p.name); - j.at("address").get_to(p.address); - j.at("age").get_to(p.age); - } -} // namespace ns -``` - -That's all! When calling the `json` constructor with your type, your custom `to_json` method will be automatically called. -Likewise, when calling `get()` or `get_to(your_type&)`, the `from_json` method will be called. - -Some important things: - -* Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). -* Those methods **MUST** be available (e.g., proper headers must be included) everywhere you use these conversions. Look at [issue 1108](https://github.com/nlohmann/json/issues/1108) for errors that may occur otherwise. -* When using `get()`, `your_type` **MUST** be [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). (There is a way to bypass this requirement described later.) -* In function `from_json`, use function [`at()`](https://json.nlohmann.me/api/basic_json/at/) to access the object values rather than `operator[]`. In case a key does not exist, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior. -* You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these. - -#### Simplify your life with macros - -If you just want to serialize/deserialize some structs, the `to_json`/`from_json` functions can be a lot of boilerplate. - -There are two macros to make your life easier as long as you (1) want to use a JSON object as serialization and (2) want to use the member variable names as object keys in that object: - -- `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(name, member1, member2, ...)` is to be defined inside the namespace of the class/struct to create code for. -- `NLOHMANN_DEFINE_TYPE_INTRUSIVE(name, member1, member2, ...)` is to be defined inside the class/struct to create code for. This macro can also access private members. - -In both macros, the first parameter is the name of the class/struct, and all remaining parameters name the members. - -##### Examples - -The `to_json`/`from_json` functions for the `person` struct above can be created with: - -```cpp -namespace ns { - NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(person, name, address, age) -} -``` - -Here is an example with private members, where `NLOHMANN_DEFINE_TYPE_INTRUSIVE` is needed: - -```cpp -namespace ns { - class address { - private: - std::string street; - int housenumber; - int postcode; - - public: - NLOHMANN_DEFINE_TYPE_INTRUSIVE(address, street, housenumber, postcode) - }; -} -``` - -#### How do I convert third-party types? - -This requires a bit more advanced technique. But first, let's see how this conversion mechanism works: - -The library uses **JSON Serializers** to convert types to json. -The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)). - -It is implemented like this (simplified): - -```cpp -template -struct adl_serializer { - static void to_json(json& j, const T& value) { - // calls the "to_json" method in T's namespace - } - - static void from_json(const json& j, T& value) { - // same thing, but with the "from_json" method - } -}; -``` - -This serializer works fine when you have control over the type's namespace. However, what about `boost::optional` or `std::filesystem::path` (C++17)? Hijacking the `boost` namespace is pretty bad, and it's illegal to add something other than template specializations to `std`... - -To solve this, you need to add a specialization of `adl_serializer` to the `nlohmann` namespace, here's an example: - -```cpp -// partial specialization (full specialization works too) -namespace nlohmann { - template - struct adl_serializer> { - static void to_json(json& j, const boost::optional& opt) { - if (opt == boost::none) { - j = nullptr; - } else { - j = *opt; // this will call adl_serializer::to_json which will - // find the free function to_json in T's namespace! - } - } - - static void from_json(const json& j, boost::optional& opt) { - if (j.is_null()) { - opt = boost::none; - } else { - opt = j.get(); // same as above, but with - // adl_serializer::from_json - } - } - }; -} -``` - -#### How can I use `get()` for non-default constructible/non-copyable types? - -There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: - -```cpp -struct move_only_type { - move_only_type() = delete; - move_only_type(int ii): i(ii) {} - move_only_type(const move_only_type&) = delete; - move_only_type(move_only_type&&) = default; - - int i; -}; - -namespace nlohmann { - template <> - struct adl_serializer { - // note: the return type is no longer 'void', and the method only takes - // one argument - static move_only_type from_json(const json& j) { - return {j.get()}; - } - - // Here's the catch! You must provide a to_json method! Otherwise, you - // will not be able to convert move_only_type to json, since you fully - // specialized adl_serializer on that type - static void to_json(json& j, move_only_type t) { - j = t.i; - } - }; -} -``` - -#### Can I write my own serializer? (Advanced use) - -Yes. You might want to take a look at [`unit-udt.cpp`](https://github.com/nlohmann/json/blob/develop/tests/src/unit-udt.cpp) in the test suite, to see a few examples. - -If you write your own serializer, you'll need to do a few things: - -- use a different `basic_json` alias than `nlohmann::json` (the last template parameter of `basic_json` is the `JSONSerializer`) -- use your `basic_json` alias (or a template parameter) in all your `to_json`/`from_json` methods -- use `nlohmann::to_json` and `nlohmann::from_json` when you need ADL - -Here is an example, without simplifications, that only accepts types with a size <= 32, and uses ADL. - -```cpp -// You should use void as a second template argument -// if you don't need compile-time checks on T -template::type> -struct less_than_32_serializer { - template - static void to_json(BasicJsonType& j, T value) { - // we want to use ADL, and call the correct to_json overload - using nlohmann::to_json; // this method is called by adl_serializer, - // this is where the magic happens - to_json(j, value); - } - - template - static void from_json(const BasicJsonType& j, T& value) { - // same thing here - using nlohmann::from_json; - from_json(j, value); - } -}; -``` - -Be **very** careful when reimplementing your serializer, you can stack overflow if you don't pay attention: - -```cpp -template -struct bad_serializer -{ - template - static void to_json(BasicJsonType& j, const T& value) { - // this calls BasicJsonType::json_serializer::to_json(j, value); - // if BasicJsonType::json_serializer == bad_serializer ... oops! - j = value; - } - - template - static void to_json(const BasicJsonType& j, T& value) { - // this calls BasicJsonType::json_serializer::from_json(j, value); - // if BasicJsonType::json_serializer == bad_serializer ... oops! - value = j.template get(); // oops! - } -}; -``` - -### Specializing enum conversion - -By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended. - -It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below: - -```cpp -// example enum type declaration -enum TaskState { - TS_STOPPED, - TS_RUNNING, - TS_COMPLETED, - TS_INVALID=-1, -}; - -// map TaskState values to JSON as strings -NLOHMANN_JSON_SERIALIZE_ENUM( TaskState, { - {TS_INVALID, nullptr}, - {TS_STOPPED, "stopped"}, - {TS_RUNNING, "running"}, - {TS_COMPLETED, "completed"}, -}) -``` - -The `NLOHMANN_JSON_SERIALIZE_ENUM()` macro declares a set of `to_json()` / `from_json()` functions for type `TaskState` while avoiding repetition and boilerplate serialization code. - -**Usage:** - -```cpp -// enum to JSON as string -json j = TS_STOPPED; -assert(j == "stopped"); - -// json string to enum -json j3 = "running"; -assert(j3.get() == TS_RUNNING); - -// undefined json value to enum (where the first map entry above is the default) -json jPi = 3.14; -assert(jPi.get() == TS_INVALID ); -``` - -Just as in [Arbitrary Type Conversions](#arbitrary-types-conversions) above, -- `NLOHMANN_JSON_SERIALIZE_ENUM()` MUST be declared in your enum type's namespace (which can be the global namespace), or the library will not be able to locate it, and it will default to integer serialization. -- It MUST be available (e.g., proper headers must be included) everywhere you use the conversions. - -Other Important points: -- When using `get()`, undefined JSON values will default to the first pair specified in your map. Select this default pair carefully. -- If an enum or JSON value is specified more than once in your map, the first matching occurrence from the top of the map will be returned when converting to or from JSON. - -### Binary formats (BSON, CBOR, MessagePack, UBJSON, and BJData) - -Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports [BSON](https://bsonspec.org) (Binary JSON), [CBOR](https://cbor.io) (Concise Binary Object Representation), [MessagePack](https://msgpack.org), [UBJSON](https://ubjson.org) (Universal Binary JSON Specification) and [BJData](https://neurojson.org/bjdata) (Binary JData) to efficiently encode JSON values to byte vectors and to decode such vectors. - -```cpp -// create a JSON value -json j = R"({"compact": true, "schema": 0})"_json; - -// serialize to BSON -std::vector v_bson = json::to_bson(j); - -// 0x1B, 0x00, 0x00, 0x00, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x00, 0x01, 0x10, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -// roundtrip -json j_from_bson = json::from_bson(v_bson); - -// serialize to CBOR -std::vector v_cbor = json::to_cbor(j); - -// 0xA2, 0x67, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xF5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 - -// roundtrip -json j_from_cbor = json::from_cbor(v_cbor); - -// serialize to MessagePack -std::vector v_msgpack = json::to_msgpack(j); - -// 0x82, 0xA7, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xC3, 0xA6, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 - -// roundtrip -json j_from_msgpack = json::from_msgpack(v_msgpack); - -// serialize to UBJSON -std::vector v_ubjson = json::to_ubjson(j); - -// 0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D - -// roundtrip -json j_from_ubjson = json::from_ubjson(v_ubjson); -``` - -The library also supports binary types from BSON, CBOR (byte strings), and MessagePack (bin, ext, fixext). They are stored by default as `std::vector` to be processed outside the library. - -```cpp -// CBOR byte string with payload 0xCAFE -std::vector v = {0x42, 0xCA, 0xFE}; - -// read value -json j = json::from_cbor(v); - -// the JSON value has type binary -j.is_binary(); // true - -// get reference to stored binary value -auto& binary = j.get_binary(); - -// the binary value has no subtype (CBOR has no binary subtypes) -binary.has_subtype(); // false - -// access std::vector member functions -binary.size(); // 2 -binary[0]; // 0xCA -binary[1]; // 0xFE - -// set subtype to 0x10 -binary.set_subtype(0x10); - -// serialize to MessagePack -auto cbor = json::to_msgpack(j); // 0xD5 (fixext2), 0x10, 0xCA, 0xFE -``` - - -## Supported compilers - -Though it's 2022 already, the support for C++11 is still a bit sparse. Currently, the following compilers are known to work: - -- GCC 4.8 - 12.0 (and possibly later) -- Clang 3.4 - 15.0 (and possibly later) -- Apple Clang 9.1 - 13.1 (and possibly later) -- Intel C++ Compiler 17.0.2 (and possibly later) -- Nvidia CUDA Compiler 11.0.221 (and possibly later) -- Microsoft Visual C++ 2015 / Build Tools 14.0.25123.0 (and possibly later) -- Microsoft Visual C++ 2017 / Build Tools 15.5.180.51428 (and possibly later) -- Microsoft Visual C++ 2019 / Build Tools 16.3.1+1def00d3d (and possibly later) -- Microsoft Visual C++ 2022 / Build Tools 19.30.30709.0 (and possibly later) - -I would be happy to learn about other compilers/versions. - -Please note: - -- GCC 4.8 has a bug [57824](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824)): multiline raw strings cannot be the arguments to macros. Don't use multiline raw strings directly in macros with this compiler. -- Android defaults to using very old compilers and C++ libraries. To fix this, add the following to your `Application.mk`. This will switch to the LLVM C++ library, the Clang compiler, and enable C++11 and other features disabled by default. - - ``` - APP_STL := c++_shared - NDK_TOOLCHAIN_VERSION := clang3.6 - APP_CPPFLAGS += -frtti -fexceptions - ``` - - The code compiles successfully with [Android NDK](https://developer.android.com/ndk/index.html?hl=ml), Revision 9 - 11 (and possibly later) and [CrystaX's Android NDK](https://www.crystax.net/en/android/ndk) version 10. - -- For GCC running on MinGW or Android SDK, the error `'to_string' is not a member of 'std'` (or similarly, for `strtod` or `strtof`) may occur. Note this is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to [this site](https://tehsausage.com/mingw-to-string) and [this discussion](https://github.com/nlohmann/json/issues/136) for information on how to fix this bug. For Android NDK using `APP_STL := gnustl_static`, please refer to [this discussion](https://github.com/nlohmann/json/issues/219). - -- Unsupported versions of GCC and Clang are rejected by `#error` directives. This can be switched off by defining `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK`. Note that you can expect no support in this case. - -The following compilers are currently used in continuous integration at [AppVeyor](https://ci.appveyor.com/project/nlohmann/json), [Drone CI](https://cloud.drone.io/nlohmann/json), and [GitHub Actions](https://github.com/nlohmann/json/actions): - -| Compiler | Operating System | CI Provider | -|--------------------------------------------------------------------------------------------------------|--------------------|----------------| -| Apple Clang 11.0.3 (clang-1103.0.32.62); Xcode 11.7 | macOS 11.6.8 | GitHub Actions | -| Apple Clang 12.0.0 (clang-1200.0.32.29); Xcode 12.4 | macOS 11.6.8 | GitHub Actions | -| Apple Clang 12.0.5 (clang-1205.0.22.11); Xcode 12.5.1 | macOS 11.6.8 | GitHub Actions | -| Apple Clang 13.0.0 (clang-1300.0.29.3); Xcode 13.0 | macOS 11.6.8 | GitHub Actions | -| Apple Clang 13.0.0 (clang-1300.0.29.3); Xcode 13.1 | macOS 12.4 | GitHub Actions | -| Apple Clang 13.0.0 (clang-1300.0.29.30); Xcode 13.2.1 | macOS 12.4 | GitHub Actions | -| Apple Clang 13.1.6 (clang-1316.0.21.2.3); Xcode 13.3.1 | macOS 12.4 | GitHub Actions | -| Apple Clang 13.1.6 (clang-1316.0.21.2.5); Xcode 13.4.1 | macOS 12.4 | GitHub Actions | -| Clang 3.5.2 (3.5.2-3ubuntu1) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 3.6.2 (3.6.2-3ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 3.7.1 (3.7.1-2ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 3.8.0 (3.8.0-2ubuntu4) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 3.9.1 (3.9.1-4ubuntu3\~16.04.2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 4.0.0 (4.0.0-1ubuntu1\~16.04.2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 5.0.0 (5.0.0-3\~16.04.1) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 6.0.1 (6.0.1-14) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 7.0.1 (7.0.1-12) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 8.0.1 (8.0.1-9) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 9.0.1 (9.0.1-12) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 10.0.0 (10.0.0-4ubuntu1) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 10.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | -| Clang 11.0.0 with GNU-like command-line | Windows-10.0.17763 | GitHub Actions | -| Clang 11.0.0 with MSVC-like command-line | Windows-10.0.17763 | GitHub Actions | -| Clang 11.0.0 (11.0.0-2~ubuntu20.04.1) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 12.0.0 (12.0.0-3ubuntu1~20.04.3) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 13.0.1 (13.0.1-++20211015123032+cf15ccdeb6d5-1exp120211015003613.5) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 14.0.5-++20220603124341+2f0a69c32a4c-1~exp1~20220603124352.149 | Ubuntu 20.04.3 LTS | GitHub Actions | -| Clang 15.0.0 (15.0.0-++20220530052901+b7d2b160c3ba-1~exp1~20220530172952.268) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 4.8.5 (Ubuntu 4.8.5-4ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 4.9.3 (Ubuntu 4.9.3-13ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 6.4.0 (Ubuntu 6.4.0-17ubuntu1) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 7.5.0 (Ubuntu 7.5.0-6ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project) | Windows-10.0.17763 | GitHub Actions | -| GCC 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) | Windows-10.0.17763 | GitHub Actions | -| GCC 8.4.0 (Ubuntu 8.4.0-3ubuntu2) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 10.2.0 (Ubuntu 10.2.0-5ubuntu1~20.04) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 11.1.0 | Ubuntu (aarch64) | Drone CI | -| GCC 11.1.0 (Ubuntu 11.1.0-1ubuntu1~20.04) | Ubuntu 20.04.3 LTS | GitHub Actions | -| GCC 13.0.0 13.0.0 20220605 (experimental) | Ubuntu 20.04.3 LTS | GitHub Actions | -| Intel C++ Compiler 2021.5.0.20211109 | Ubuntu 20.04.3 LTS | GitHub Actions | -| NVCC 11.0.221 | Ubuntu 20.04.3 LTS | GitHub Actions | -| Visual Studio 14 2015 MSVC 19.0.24241.7 (Build Engine version 14.0.25420.1) | Windows-6.3.9600 | AppVeyor | -| Visual Studio 15 2017 MSVC 19.16.27035.0 (Build Engine version 15.9.21+g9802d43bc3 for .NET Framework) | Windows-10.0.14393 | AppVeyor | -| Visual Studio 16 2019 MSVC 19.28.29912.0 (Build Engine version 16.9.0+57a23d249 for .NET Framework) | Windows-10.0.17763 | GitHub Actions | -| Visual Studio 16 2019 MSVC 19.28.29912.0 (Build Engine version 16.9.0+57a23d249 for .NET Framework) | Windows-10.0.17763 | AppVeyor | -| Visual Studio 17 2022 MSVC 19.30.30709.0 (Build Engine version 17.0.31804.368 for .NET Framework) | Windows-10.0.20348 | GitHub Actions | - - -## Integration - -[`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) is the single required file in `single_include/nlohmann` or [released here](https://github.com/nlohmann/json/releases). You need to add - -```cpp -#include - -// for convenience -using json = nlohmann::json; -``` - -to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). - -You can further use file [`include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`. - -### CMake - -You can also use the `nlohmann_json::nlohmann_json` interface target in CMake. This target populates the appropriate usage requirements for `INTERFACE_INCLUDE_DIRECTORIES` to point to the appropriate include directories and `INTERFACE_COMPILE_FEATURES` for the necessary C++11 flags. - -#### External - -To use this library from a CMake project, you can locate it directly with `find_package()` and use the namespaced imported target from the generated package configuration: - -```cmake -# CMakeLists.txt -find_package(nlohmann_json 3.2.0 REQUIRED) -... -add_library(foo ...) -... -target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) -``` - -The package configuration file, `nlohmann_jsonConfig.cmake`, can be used either from an install tree or directly out of the build tree. - -#### Embedded - -To embed the library directly into an existing CMake project, place the entire source tree in a subdirectory and call `add_subdirectory()` in your `CMakeLists.txt` file: - -```cmake -# Typically you don't care so much for a third party library's tests to be -# run from your own project's code. -set(JSON_BuildTests OFF CACHE INTERNAL "") - -# If you only include this third party in PRIVATE source files, you do not -# need to install it when your main project gets installed. -# set(JSON_Install OFF CACHE INTERNAL "") - -# Don't use include(nlohmann_json/CMakeLists.txt) since that carries with it -# unintended consequences that will break the build. It's generally -# discouraged (although not necessarily well documented as such) to use -# include(...) for pulling in other CMake projects anyways. -add_subdirectory(nlohmann_json) -... -add_library(foo ...) -... -target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) -``` - -##### Embedded (FetchContent) - -Since CMake v3.11, -[FetchContent](https://cmake.org/cmake/help/v3.11/module/FetchContent.html) can -be used to automatically download a release as a dependency at configure time. - -Example: -```cmake -include(FetchContent) - -FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz) -FetchContent_MakeAvailable(json) - -target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) -``` - -**Note**: It is recommended to use the URL approach described above which is supported as of version 3.10.0. See - for more information. - -#### Supporting Both - -To allow your project to support either an externally supplied or an embedded JSON library, you can use a pattern akin to the following: - -``` cmake -# Top level CMakeLists.txt -project(FOO) -... -option(FOO_USE_EXTERNAL_JSON "Use an external JSON library" OFF) -... -add_subdirectory(thirdparty) -... -add_library(foo ...) -... -# Note that the namespaced target will always be available regardless of the -# import method -target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json) -``` -```cmake -# thirdparty/CMakeLists.txt -... -if(FOO_USE_EXTERNAL_JSON) - find_package(nlohmann_json 3.2.0 REQUIRED) -else() - set(JSON_BuildTests OFF CACHE INTERNAL "") - add_subdirectory(nlohmann_json) -endif() -... -``` - -`thirdparty/nlohmann_json` is then a complete copy of this source tree. - -### Package Managers - -:beer: If you are using OS X and [Homebrew](https://brew.sh), just type `brew install nlohmann-json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann-json --HEAD`. See [nlohmann-json](https://formulae.brew.sh/formula/nlohmann-json) for more information. - -If you are using the [Meson Build System](https://mesonbuild.com), add this source tree as a [meson subproject](https://mesonbuild.com/Subprojects.html#using-a-subproject). You may also use the `include.zip` published in this project's [Releases](https://github.com/nlohmann/json/releases) to reduce the size of the vendored source tree. Alternatively, you can get a wrap file by downloading it from [Meson WrapDB](https://wrapdb.mesonbuild.com/nlohmann_json), or simply use `meson wrap install nlohmann_json`. Please see the meson project for any issues regarding the packaging. - -The provided `meson.build` can also be used as an alternative to cmake for installing `nlohmann_json` system-wide in which case a pkg-config file is installed. To use it, simply have your build system require the `nlohmann_json` pkg-config dependency. In Meson, it is preferred to use the [`dependency()`](https://mesonbuild.com/Reference-manual.html#dependency) object with a subproject fallback, rather than using the subproject directly. - -If you are using [Conan](https://www.conan.io/) to manage your dependencies, merely add [`nlohmann_json/x.y.z`](https://conan.io/center/nlohmann_json) to your `conanfile`'s requires, where `x.y.z` is the release version you want to use. Please file issues [here](https://github.com/conan-io/conan-center-index/issues) if you experience problems with the packages. - -If you are using [Spack](https://www.spack.io/) to manage your dependencies, you can use the [`nlohmann-json` package](https://spack.readthedocs.io/en/latest/package_list.html#nlohmann-json). Please see the [spack project](https://github.com/spack/spack) for any issues regarding the packaging. - -If you are using [hunter](https://github.com/cpp-pm/hunter) on your project for external dependencies, then you can use the [nlohmann_json package](https://hunter.readthedocs.io/en/latest/packages/pkg/nlohmann_json.html). Please see the hunter project for any issues regarding the packaging. - -If you are using [Buckaroo](https://buckaroo.pm), you can install this library's module with `buckaroo add github.com/buckaroo-pm/nlohmann-json`. Please file issues [here](https://github.com/buckaroo-pm/nlohmann-json). There is a demo repo [here](https://github.com/njlr/buckaroo-nholmann-json-example). - -If you are using [vcpkg](https://github.com/Microsoft/vcpkg/) on your project for external dependencies, then you can install the [nlohmann-json package](https://github.com/Microsoft/vcpkg/tree/master/ports/nlohmann-json) with `vcpkg install nlohmann-json` and follow the then displayed descriptions. Please see the vcpkg project for any issues regarding the packaging. - -If you are using [cget](https://cget.readthedocs.io/en/latest/), you can install the latest development version with `cget install nlohmann/json`. A specific version can be installed with `cget install nlohmann/json@v3.1.0`. Also, the multiple header version can be installed by adding the `-DJSON_MultipleHeaders=ON` flag (i.e., `cget install nlohmann/json -DJSON_MultipleHeaders=ON`). - -If you are using [CocoaPods](https://cocoapods.org), you can use the library by adding pod `"nlohmann_json", '~>3.1.2'` to your podfile (see [an example](https://bitbucket.org/benman/nlohmann_json-cocoapod/src/master/)). Please file issues [here](https://bitbucket.org/benman/nlohmann_json-cocoapod/issues?status=new&status=open). - -If you are using [NuGet](https://www.nuget.org), you can use the package [nlohmann.json](https://www.nuget.org/packages/nlohmann.json/). Please check [this extensive description](https://github.com/nlohmann/json/issues/1132#issuecomment-452250255) on how to use the package. Please file issues [here](https://github.com/hnkb/nlohmann-json-nuget/issues). - -If you are using [conda](https://conda.io/), you can use the package [nlohmann_json](https://github.com/conda-forge/nlohmann_json-feedstock) from [conda-forge](https://conda-forge.org) executing `conda install -c conda-forge nlohmann_json`. Please file issues [here](https://github.com/conda-forge/nlohmann_json-feedstock/issues). - -If you are using [MSYS2](https://www.msys2.org/), you can use the [mingw-w64-nlohmann-json](https://packages.msys2.org/base/mingw-w64-nlohmann-json) package, just type `pacman -S mingw-w64-i686-nlohmann-json` or `pacman -S mingw-w64-x86_64-nlohmann-json` for installation. Please file issues [here](https://github.com/msys2/MINGW-packages/issues/new?title=%5Bnlohmann-json%5D) if you experience problems with the packages. - -If you are using [MacPorts](https://ports.macports.org), execute `sudo port install nlohmann-json` to install the [nlohmann-json](https://ports.macports.org/port/nlohmann-json/) package. - -If you are using [`build2`](https://build2.org), you can use the [`nlohmann-json`](https://cppget.org/nlohmann-json) package from the public repository https://cppget.org or directly from the [package's sources repository](https://github.com/build2-packaging/nlohmann-json). In your project's `manifest` file, just add `depends: nlohmann-json` (probably with some [version constraints](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-add-remove-deps)). If you are not familiar with using dependencies in `build2`, [please read this introduction](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml). -Please file issues [here](https://github.com/build2-packaging/nlohmann-json) if you experience problems with the packages. - -If you are using [`wsjcpp`](https://wsjcpp.org), you can use the command `wsjcpp install "https://github.com/nlohmann/json:develop"` to get the latest version. Note you can change the branch ":develop" to an existing tag or another branch. - -If you are using [`CPM.cmake`](https://github.com/TheLartians/CPM.cmake), you can check this [`example`](https://github.com/TheLartians/CPM.cmake/tree/master/examples/json). After [adding CPM script](https://github.com/TheLartians/CPM.cmake#adding-cpm) to your project, implement the following snippet to your CMake: - -```cmake -CPMAddPackage( - NAME nlohmann_json - GITHUB_REPOSITORY nlohmann/json - VERSION 3.9.1) -``` - -### Pkg-config - -If you are using bare Makefiles, you can use `pkg-config` to generate the include flags that point to where the library is installed: - -```sh -pkg-config nlohmann_json --cflags -``` - -Users of the Meson build system will also be able to use a system-wide library, which will be found by `pkg-config`: - -```meson -json = dependency('nlohmann_json', required: true) -``` - - -## License - - - -The class is licensed under the [MIT License](https://opensource.org/licenses/MIT): - -Copyright © 2013-2022 [Niels Lohmann](https://nlohmann.me) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -* * * - -The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2008-2009 [Björn Hoehrmann](https://bjoern.hoehrmann.de/) - -The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](https://opensource.org/licenses/MIT) (see above). Copyright © 2009 [Florian Loitsch](https://florian.loitsch.com/) - -The class contains a copy of [Hedley](https://nemequ.github.io/hedley/) from Evan Nemerson which is licensed as [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). - -The class contains parts of [Google Abseil](https://github.com/abseil/abseil-cpp) which is licensed under the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0). - -## Contact - -If you have questions regarding the library, I would like to invite you to [open an issue at GitHub](https://github.com/nlohmann/json/issues/new/choose). Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at GitHub allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the [closed issues](https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed), you will see that we react quite timely in most cases. - -Only if your request would contain confidential information, please [send me an email](mailto:mail@nlohmann.me). For encrypted messages, please use [this key](https://keybase.io/nlohmann/pgp_keys.asc). - -## Security - -[Commits by Niels Lohmann](https://github.com/nlohmann/json/commits) and [releases](https://github.com/nlohmann/json/releases) are signed with this [PGP Key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69). - -## Thanks - -I deeply appreciate the help of the following people. - - - -1. [Teemperor](https://github.com/Teemperor) implemented CMake support and lcov integration, realized escape and Unicode handling in the string parser, and fixed the JSON serialization. -2. [elliotgoodrich](https://github.com/elliotgoodrich) fixed an issue with double deletion in the iterator classes. -3. [kirkshoop](https://github.com/kirkshoop) made the iterators of the class composable to other libraries. -4. [wancw](https://github.com/wanwc) fixed a bug that hindered the class to compile with Clang. -5. Tomas Åblad found a bug in the iterator implementation. -6. [Joshua C. Randall](https://github.com/jrandall) fixed a bug in the floating-point serialization. -7. [Aaron Burghardt](https://github.com/aburgh) implemented code to parse streams incrementally. Furthermore, he greatly improved the parser class by allowing the definition of a filter function to discard undesired elements while parsing. -8. [Daniel Kopeček](https://github.com/dkopecek) fixed a bug in the compilation with GCC 5.0. -9. [Florian Weber](https://github.com/Florianjw) fixed a bug in and improved the performance of the comparison operators. -10. [Eric Cornelius](https://github.com/EricMCornelius) pointed out a bug in the handling with NaN and infinity values. He also improved the performance of the string escaping. -11. [易思龙](https://github.com/likebeta) implemented a conversion from anonymous enums. -12. [kepkin](https://github.com/kepkin) patiently pushed forward the support for Microsoft Visual studio. -13. [gregmarr](https://github.com/gregmarr) simplified the implementation of reverse iterators and helped with numerous hints and improvements. In particular, he pushed forward the implementation of user-defined types. -14. [Caio Luppi](https://github.com/caiovlp) fixed a bug in the Unicode handling. -15. [dariomt](https://github.com/dariomt) fixed some typos in the examples. -16. [Daniel Frey](https://github.com/d-frey) cleaned up some pointers and implemented exception-safe memory allocation. -17. [Colin Hirsch](https://github.com/ColinH) took care of a small namespace issue. -18. [Huu Nguyen](https://github.com/whoshuu) correct a variable name in the documentation. -19. [Silverweed](https://github.com/silverweed) overloaded `parse()` to accept an rvalue reference. -20. [dariomt](https://github.com/dariomt) fixed a subtlety in MSVC type support and implemented the `get_ref()` function to get a reference to stored values. -21. [ZahlGraf](https://github.com/ZahlGraf) added a workaround that allows compilation using Android NDK. -22. [whackashoe](https://github.com/whackashoe) replaced a function that was marked as unsafe by Visual Studio. -23. [406345](https://github.com/406345) fixed two small warnings. -24. [Glen Fernandes](https://github.com/glenfe) noted a potential portability problem in the `has_mapped_type` function. -25. [Corbin Hughes](https://github.com/nibroc) fixed some typos in the contribution guidelines. -26. [twelsby](https://github.com/twelsby) fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers and implemented better roundtrip support for parsed numbers. -27. [Volker Diels-Grabsch](https://github.com/vog) fixed a link in the README file. -28. [msm-](https://github.com/msm-) added support for American Fuzzy Lop. -29. [Annihil](https://github.com/Annihil) fixed an example in the README file. -30. [Themercee](https://github.com/Themercee) noted a wrong URL in the README file. -31. [Lv Zheng](https://github.com/lv-zheng) fixed a namespace issue with `int64_t` and `uint64_t`. -32. [abc100m](https://github.com/abc100m) analyzed the issues with GCC 4.8 and proposed a [partial solution](https://github.com/nlohmann/json/pull/212). -33. [zewt](https://github.com/zewt) added useful notes to the README file about Android. -34. [Róbert Márki](https://github.com/robertmrk) added a fix to use move iterators and improved the integration via CMake. -35. [Chris Kitching](https://github.com/ChrisKitching) cleaned up the CMake files. -36. [Tom Needham](https://github.com/06needhamt) fixed a subtle bug with MSVC 2015 which was also proposed by [Michael K.](https://github.com/Epidal). -37. [Mário Feroldi](https://github.com/thelostt) fixed a small typo. -38. [duncanwerner](https://github.com/duncanwerner) found a really embarrassing performance regression in the 2.0.0 release. -39. [Damien](https://github.com/dtoma) fixed one of the last conversion warnings. -40. [Thomas Braun](https://github.com/t-b) fixed a warning in a test case and adjusted MSVC calls in the CI. -41. [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). He also implemented the magic behind the serialization/deserialization of user-defined types and split the single header file into smaller chunks. -42. [Stefan](https://github.com/5tefan) fixed a minor issue in the documentation. -43. [Vasil Dimov](https://github.com/vasild) fixed the documentation regarding conversions from `std::multiset`. -44. [ChristophJud](https://github.com/ChristophJud) overworked the CMake files to ease project inclusion. -45. [Vladimir Petrigo](https://github.com/vpetrigo) made a SFINAE hack more readable and added Visual Studio 17 to the build matrix. -46. [Denis Andrejew](https://github.com/seeekr) fixed a grammar issue in the README file. -47. [Pierre-Antoine Lacaze](https://github.com/palacaze) found a subtle bug in the `dump()` function. -48. [TurpentineDistillery](https://github.com/TurpentineDistillery) pointed to [`std::locale::classic()`](https://en.cppreference.com/w/cpp/locale/locale/classic) to avoid too much locale joggling, found some nice performance improvements in the parser, improved the benchmarking code, and realized locale-independent number parsing and printing. -49. [cgzones](https://github.com/cgzones) had an idea how to fix the Coverity scan. -50. [Jared Grubb](https://github.com/jaredgrubb) silenced a nasty documentation warning. -51. [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check. -52. [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one. -53. [Daniel599](https://github.com/Daniel599) helped to get Travis execute the tests with Clang's sanitizers. -54. [Jonathan Lee](https://github.com/vjon) fixed an example in the README file. -55. [gnzlbg](https://github.com/gnzlbg) supported the implementation of user-defined types. -56. [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio. -57. [Jared Grubb](https://github.com/jaredgrubb) supported the implementation of user-defined types. -58. [EnricoBilla](https://github.com/EnricoBilla) noted a typo in an example. -59. [Martin Hořeňovský](https://github.com/horenmar) found a way for a 2x speedup for the compilation time of the test suite. -60. [ukhegg](https://github.com/ukhegg) found proposed an improvement for the examples section. -61. [rswanson-ihi](https://github.com/rswanson-ihi) noted a typo in the README. -62. [Mihai Stan](https://github.com/stanmihai4) fixed a bug in the comparison with `nullptr`s. -63. [Tushar Maheshwari](https://github.com/tusharpm) added [cotire](https://github.com/sakra/cotire) support to speed up the compilation. -64. [TedLyngmo](https://github.com/TedLyngmo) noted a typo in the README, removed unnecessary bit arithmetic, and fixed some `-Weffc++` warnings. -65. [Krzysztof Woś](https://github.com/krzysztofwos) made exceptions more visible. -66. [ftillier](https://github.com/ftillier) fixed a compiler warning. -67. [tinloaf](https://github.com/tinloaf) made sure all pushed warnings are properly popped. -68. [Fytch](https://github.com/Fytch) found a bug in the documentation. -69. [Jay Sistar](https://github.com/Type1J) implemented a Meson build description. -70. [Henry Lee](https://github.com/HenryRLee) fixed a warning in ICC and improved the iterator implementation. -71. [Vincent Thiery](https://github.com/vthiery) maintains a package for the Conan package manager. -72. [Steffen](https://github.com/koemeet) fixed a potential issue with MSVC and `std::min`. -73. [Mike Tzou](https://github.com/Chocobo1) fixed some typos. -74. [amrcode](https://github.com/amrcode) noted a misleading documentation about comparison of floats. -75. [Oleg Endo](https://github.com/olegendo) reduced the memory consumption by replacing `` with ``. -76. [dan-42](https://github.com/dan-42) cleaned up the CMake files to simplify including/reusing of the library. -77. [Nikita Ofitserov](https://github.com/himikof) allowed for moving values from initializer lists. -78. [Greg Hurrell](https://github.com/wincent) fixed a typo. -79. [Dmitry Kukovinets](https://github.com/DmitryKuk) fixed a typo. -80. [kbthomp1](https://github.com/kbthomp1) fixed an issue related to the Intel OSX compiler. -81. [Markus Werle](https://github.com/daixtrose) fixed a typo. -82. [WebProdPP](https://github.com/WebProdPP) fixed a subtle error in a precondition check. -83. [Alex](https://github.com/leha-bot) noted an error in a code sample. -84. [Tom de Geus](https://github.com/tdegeus) reported some warnings with ICC and helped to fix them. -85. [Perry Kundert](https://github.com/pjkundert) simplified reading from input streams. -86. [Sonu Lohani](https://github.com/sonulohani) fixed a small compilation error. -87. [Jamie Seward](https://github.com/jseward) fixed all MSVC warnings. -88. [Nate Vargas](https://github.com/eld00d) added a Doxygen tag file. -89. [pvleuven](https://github.com/pvleuven) helped to fix a warning in ICC. -90. [Pavel](https://github.com/crea7or) helped to fix some warnings in MSVC. -91. [Jamie Seward](https://github.com/jseward) avoided unnecessary string copies in `find()` and `count()`. -92. [Mitja](https://github.com/Itja) fixed some typos. -93. [Jorrit Wronski](https://github.com/jowr) updated the Hunter package links. -94. [Matthias Möller](https://github.com/TinyTinni) added a `.natvis` for the MSVC debug view. -95. [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings. -96. [Eren Okka](https://github.com/erengy) fixed some MSVC warnings. -97. [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. -98. [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README. -99. [zerodefect](https://github.com/zerodefect) fixed a compiler warning. -100. [Kert](https://github.com/kaidokert) allowed to template the string type in the serialization and added the possibility to override the exceptional behavior. -101. [mark-99](https://github.com/mark-99) helped fixing an ICC error. -102. [Patrik Huber](https://github.com/patrikhuber) fixed links in the README file. -103. [johnfb](https://github.com/johnfb) found a bug in the implementation of CBOR's indefinite length strings. -104. [Paul Fultz II](https://github.com/pfultz2) added a note on the cget package manager. -105. [Wilson Lin](https://github.com/wla80) made the integration section of the README more concise. -106. [RalfBielig](https://github.com/ralfbielig) detected and fixed a memory leak in the parser callback. -107. [agrianius](https://github.com/agrianius) allowed to dump JSON to an alternative string type. -108. [Kevin Tonon](https://github.com/ktonon) overworked the C++11 compiler checks in CMake. -109. [Axel Huebl](https://github.com/ax3l) simplified a CMake check and added support for the [Spack package manager](https://spack.io). -110. [Carlos O'Ryan](https://github.com/coryan) fixed a typo. -111. [James Upjohn](https://github.com/jammehcow) fixed a version number in the compilers section. -112. [Chuck Atkins](https://github.com/chuckatkins) adjusted the CMake files to the CMake packaging guidelines and provided documentation for the CMake integration. -113. [Jan Schöppach](https://github.com/dns13) fixed a typo. -114. [martin-mfg](https://github.com/martin-mfg) fixed a typo. -115. [Matthias Möller](https://github.com/TinyTinni) removed the dependency from `std::stringstream`. -116. [agrianius](https://github.com/agrianius) added code to use alternative string implementations. -117. [Daniel599](https://github.com/Daniel599) allowed to use more algorithms with the `items()` function. -118. [Julius Rakow](https://github.com/jrakow) fixed the Meson include directory and fixed the links to [cppreference.com](cppreference.com). -119. [Sonu Lohani](https://github.com/sonulohani) fixed the compilation with MSVC 2015 in debug mode. -120. [grembo](https://github.com/grembo) fixed the test suite and re-enabled several test cases. -121. [Hyeon Kim](https://github.com/simnalamburt) introduced the macro `JSON_INTERNAL_CATCH` to control the exception handling inside the library. -122. [thyu](https://github.com/thyu) fixed a compiler warning. -123. [David Guthrie](https://github.com/LEgregius) fixed a subtle compilation error with Clang 3.4.2. -124. [Dennis Fischer](https://github.com/dennisfischer) allowed to call `find_package` without installing the library. -125. [Hyeon Kim](https://github.com/simnalamburt) fixed an issue with a double macro definition. -126. [Ben Berman](https://github.com/rivertam) made some error messages more understandable. -127. [zakalibit](https://github.com/zakalibit) fixed a compilation problem with the Intel C++ compiler. -128. [mandreyel](https://github.com/mandreyel) fixed a compilation problem. -129. [Kostiantyn Ponomarenko](https://github.com/koponomarenko) added version and license information to the Meson build file. -130. [Henry Schreiner](https://github.com/henryiii) added support for GCC 4.8. -131. [knilch](https://github.com/knilch0r) made sure the test suite does not stall when run in the wrong directory. -132. [Antonio Borondo](https://github.com/antonioborondo) fixed an MSVC 2017 warning. -133. [Dan Gendreau](https://github.com/dgendreau) implemented the `NLOHMANN_JSON_SERIALIZE_ENUM` macro to quickly define an enum/JSON mapping. -134. [efp](https://github.com/efp) added line and column information to parse errors. -135. [julian-becker](https://github.com/julian-becker) added BSON support. -136. [Pratik Chowdhury](https://github.com/pratikpc) added support for structured bindings. -137. [David Avedissian](https://github.com/davedissian) added support for Clang 5.0.1 (PS4 version). -138. [Jonathan Dumaresq](https://github.com/dumarjo) implemented an input adapter to read from `FILE*`. -139. [kjpus](https://github.com/kjpus) fixed a link in the documentation. -140. [Manvendra Singh](https://github.com/manu-chroma) fixed a typo in the documentation. -141. [ziggurat29](https://github.com/ziggurat29) fixed an MSVC warning. -142. [Sylvain Corlay](https://github.com/SylvainCorlay) added code to avoid an issue with MSVC. -143. [mefyl](https://github.com/mefyl) fixed a bug when JSON was parsed from an input stream. -144. [Millian Poquet](https://github.com/mpoquet) allowed to install the library via Meson. -145. [Michael Behrns-Miller](https://github.com/moodboom) found an issue with a missing namespace. -146. [Nasztanovics Ferenc](https://github.com/naszta) fixed a compilation issue with libc 2.12. -147. [Andreas Schwab](https://github.com/andreas-schwab) fixed the endian conversion. -148. [Mark-Dunning](https://github.com/Mark-Dunning) fixed a warning in MSVC. -149. [Gareth Sylvester-Bradley](https://github.com/garethsb-sony) added `operator/` for JSON Pointers. -150. [John-Mark](https://github.com/johnmarkwayve) noted a missing header. -151. [Vitaly Zaitsev](https://github.com/xvitaly) fixed compilation with GCC 9.0. -152. [Laurent Stacul](https://github.com/stac47) fixed compilation with GCC 9.0. -153. [Ivor Wanders](https://github.com/iwanders) helped to reduce the CMake requirement to version 3.1. -154. [njlr](https://github.com/njlr) updated the Buckaroo instructions. -155. [Lion](https://github.com/lieff) fixed a compilation issue with GCC 7 on CentOS. -156. [Isaac Nickaein](https://github.com/nickaein) improved the integer serialization performance and implemented the `contains()` function. -157. [past-due](https://github.com/past-due) suppressed an unfixable warning. -158. [Elvis Oric](https://github.com/elvisoric) improved Meson support. -159. [Matěj Plch](https://github.com/Afforix) fixed an example in the README. -160. [Mark Beckwith](https://github.com/wythe) fixed a typo. -161. [scinart](https://github.com/scinart) fixed bug in the serializer. -162. [Patrick Boettcher](https://github.com/pboettch) implemented `push_back()` and `pop_back()` for JSON Pointers. -163. [Bruno Oliveira](https://github.com/nicoddemus) added support for Conda. -164. [Michele Caini](https://github.com/skypjack) fixed links in the README. -165. [Hani](https://github.com/hnkb) documented how to install the library with NuGet. -166. [Mark Beckwith](https://github.com/wythe) fixed a typo. -167. [yann-morin-1998](https://github.com/yann-morin-1998) helped to reduce the CMake requirement to version 3.1. -168. [Konstantin Podsvirov](https://github.com/podsvirov) maintains a package for the MSYS2 software distro. -169. [remyabel](https://github.com/remyabel) added GNUInstallDirs to the CMake files. -170. [Taylor Howard](https://github.com/taylorhoward92) fixed a unit test. -171. [Gabe Ron](https://github.com/Macr0Nerd) implemented the `to_string` method. -172. [Watal M. Iwasaki](https://github.com/heavywatal) fixed a Clang warning. -173. [Viktor Kirilov](https://github.com/onqtam) switched the unit tests from [Catch](https://github.com/philsquared/Catch) to [doctest](https://github.com/onqtam/doctest) -174. [Juncheng E](https://github.com/ejcjason) fixed a typo. -175. [tete17](https://github.com/tete17) fixed a bug in the `contains` function. -176. [Xav83](https://github.com/Xav83) fixed some cppcheck warnings. -177. [0xflotus](https://github.com/0xflotus) fixed some typos. -178. [Christian Deneke](https://github.com/chris0x44) added a const version of `json_pointer::back`. -179. [Julien Hamaide](https://github.com/crazyjul) made the `items()` function work with custom string types. -180. [Evan Nemerson](https://github.com/nemequ) updated fixed a bug in Hedley and updated this library accordingly. -181. [Florian Pigorsch](https://github.com/flopp) fixed a lot of typos. -182. [Camille Bégué](https://github.com/cbegue) fixed an issue in the conversion from `std::pair` and `std::tuple` to `json`. -183. [Anthony VH](https://github.com/AnthonyVH) fixed a compile error in an enum deserialization. -184. [Yuriy Vountesmery](https://github.com/ua-code-dragon) noted a subtle bug in a preprocessor check. -185. [Chen](https://github.com/dota17) fixed numerous issues in the library. -186. [Antony Kellermann](https://github.com/aokellermann) added a CI step for GCC 10.1. -187. [Alex](https://github.com/gistrec) fixed an MSVC warning. -188. [Rainer](https://github.com/rvjr) proposed an improvement in the floating-point serialization in CBOR. -189. [Francois Chabot](https://github.com/FrancoisChabot) made performance improvements in the input adapters. -190. [Arthur Sonzogni](https://github.com/ArthurSonzogni) documented how the library can be included via `FetchContent`. -191. [Rimas Misevičius](https://github.com/rmisev) fixed an error message. -192. [Alexander Myasnikov](https://github.com/alexandermyasnikov) fixed some examples and a link in the README. -193. [Hubert Chathi](https://github.com/uhoreg) made CMake's version config file architecture-independent. -194. [OmnipotentEntity](https://github.com/OmnipotentEntity) implemented the binary values for CBOR, MessagePack, BSON, and UBJSON. -195. [ArtemSarmini](https://github.com/ArtemSarmini) fixed a compilation issue with GCC 10 and fixed a leak. -196. [Evgenii Sopov](https://github.com/sea-kg) integrated the library to the wsjcpp package manager. -197. [Sergey Linev](https://github.com/linev) fixed a compiler warning. -198. [Miguel Magalhães](https://github.com/magamig) fixed the year in the copyright. -199. [Gareth Sylvester-Bradley](https://github.com/garethsb-sony) fixed a compilation issue with MSVC. -200. [Alexander “weej” Jones](https://github.com/alex-weej) fixed an example in the README. -201. [Antoine Cœur](https://github.com/Coeur) fixed some typos in the documentation. -202. [jothepro](https://github.com/jothepro) updated links to the Hunter package. -203. [Dave Lee](https://github.com/kastiglione) fixed link in the README. -204. [Joël Lamotte](https://github.com/Klaim) added instruction for using Build2's package manager. -205. [Paul Jurczak](https://github.com/pauljurczak) fixed an example in the README. -206. [Sonu Lohani](https://github.com/sonulohani) fixed a warning. -207. [Carlos Gomes Martinho](https://github.com/gocarlos) updated the Conan package source. -208. [Konstantin Podsvirov](https://github.com/podsvirov) fixed the MSYS2 package documentation. -209. [Tridacnid](https://github.com/Tridacnid) improved the CMake tests. -210. [Michael](https://github.com/MBalszun) fixed MSVC warnings. -211. [Quentin Barbarat](https://github.com/quentin-dev) fixed an example in the documentation. -212. [XyFreak](https://github.com/XyFreak) fixed a compiler warning. -213. [TotalCaesar659](https://github.com/TotalCaesar659) fixed links in the README. -214. [Tanuj Garg](https://github.com/tanuj208) improved the fuzzer coverage for UBSAN input. -215. [AODQ](https://github.com/AODQ) fixed a compiler warning. -216. [jwittbrodt](https://github.com/jwittbrodt) made `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` inline. -217. [pfeatherstone](https://github.com/pfeatherstone) improved the upper bound of arguments of the `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`/`NLOHMANN_DEFINE_TYPE_INTRUSIVE` macros. -218. [Jan Procházka](https://github.com/jprochazk) fixed a bug in the CBOR parser for binary and string values. -219. [T0b1-iOS](https://github.com/T0b1-iOS) fixed a bug in the new hash implementation. -220. [Matthew Bauer](https://github.com/matthewbauer) adjusted the CBOR writer to create tags for binary subtypes. -221. [gatopeich](https://github.com/gatopeich) implemented an ordered map container for `nlohmann::ordered_json`. -222. [Érico Nogueira Rolim](https://github.com/ericonr) added support for pkg-config. -223. [KonanM](https://github.com/KonanM) proposed an implementation for the `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`/`NLOHMANN_DEFINE_TYPE_INTRUSIVE` macros. -224. [Guillaume Racicot](https://github.com/gracicot) implemented `string_view` support and allowed C++20 support. -225. [Alex Reinking](https://github.com/alexreinking) improved CMake support for `FetchContent`. -226. [Hannes Domani](https://github.com/ssbssa) provided a GDB pretty printer. -227. Lars Wirzenius reviewed the README file. -228. [Jun Jie](https://github.com/ongjunjie) fixed a compiler path in the CMake scripts. -229. [Ronak Buch](https://github.com/rbuch) fixed typos in the documentation. -230. [Alexander Karzhenkov](https://github.com/karzhenkov) fixed a move constructor and the Travis builds. -231. [Leonardo Lima](https://github.com/leozz37) added CPM.Cmake support. -232. [Joseph Blackman](https://github.com/jbzdarkid) fixed a warning. -233. [Yaroslav](https://github.com/YarikTH) updated doctest and implemented unit tests. -234. [Martin Stump](https://github.com/globberwops) fixed a bug in the CMake files. -235. [Jaakko Moisio](https://github.com/jasujm) fixed a bug in the input adapters. -236. [bl-ue](https://github.com/bl-ue) fixed some Markdown issues in the README file. -237. [William A. Wieselquist](https://github.com/wawiesel) fixed an example from the README. -238. [abbaswasim](https://github.com/abbaswasim) fixed an example from the README. -239. [Remy Jette](https://github.com/remyjette) fixed a warning. -240. [Fraser](https://github.com/frasermarlow) fixed the documentation. -241. [Ben Beasley](https://github.com/musicinmybrain) updated doctest. -242. [Doron Behar](https://github.com/doronbehar) fixed pkg-config.pc. -243. [raduteo](https://github.com/raduteo) fixed a warning. -244. [David Pfahler](https://github.com/theShmoo) added the possibility to compile the library without I/O support. -245. [Morten Fyhn Amundsen](https://github.com/mortenfyhn) fixed a typo. -246. [jpl-mac](https://github.com/jpl-mac) allowed to treat the library as a system header in CMake. -247. [Jason Dsouza](https://github.com/jasmcaus) fixed the indentation of the CMake file. -248. [offa](https://github.com/offa) added a link to Conan Center to the documentation. -249. [TotalCaesar659](https://github.com/TotalCaesar659) updated the links in the documentation to use HTTPS. -250. [Rafail Giavrimis](https://github.com/grafail) fixed the Google Benchmark default branch. -251. [Louis Dionne](https://github.com/ldionne) fixed a conversion operator. -252. [justanotheranonymoususer](https://github.com/justanotheranonymoususer) made the examples in the README more consistent. -253. [Finkman](https://github.com/Finkman) suppressed some `-Wfloat-equal` warnings. -254. [Ferry Huberts](https://github.com/fhuberts) fixed `-Wswitch-enum` warnings. -255. [Arseniy Terekhin](https://github.com/senyai) made the GDB pretty-printer robust against unset variable names. -256. [Amir Masoud Abdol](https://github.com/amirmasoudabdol) updated the Homebrew command as nlohmann/json is now in homebrew-core. -257. [Hallot](https://github.com/Hallot) fixed some `-Wextra-semi-stmt warnings`. -258. [Giovanni Cerretani](https://github.com/gcerretani) fixed `-Wunused` warnings on `JSON_DIAGNOSTICS`. -259. [Bogdan Popescu](https://github.com/Kapeli) hosts the [docset](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for offline documentation viewers. -260. [Carl Smedstad](https://github.com/carlsmedstad) fixed an assertion error when using `JSON_DIAGNOSTICS`. -261. [miikka75](https://github.com/miikka75) provided an important fix to compile C++17 code with Clang 9. -262. [Maarten Becker](https://github.com/kernie) fixed a warning for shadowed variables. -263. [Cristi Vîjdea](https://github.com/axnsan12) fixed typos in the `operator[]` documentation. -264. [Alex Beregszaszi](https://github.com/axic) fixed spelling mistakes in comments. -265. [Dirk Stolle](https://github.com/striezel) fixed typos in documentation. -266. [Daniel Albuschat](https://github.com/daniel-kun) corrected the parameter name in the `parse` documentation. -267. [Prince Mendiratta](https://github.com/Prince-Mendiratta) fixed a link to the FAQ. -268. [Florian Albrechtskirchinger](https://github.com/falbrechtskirchinger) implemented `std::string_view` support for object keys and made dozens of other improvements. -269. [Qianqian Fang](https://github.com/fangq) implemented the Binary JData (BJData) format. -270. [pketelsen](https://github.com/pketelsen) added macros `NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT` and `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT`. -271. [DarkZeros](https://github.com/DarkZeros) adjusted to code to not clash with Arduino defines. -272. [flagarde](https://github.com/flagarde) fixed the output of `meta()` for MSVC. -273. [Giovanni Cerretani](https://github.com/gcerretani) fixed a check for `std::filesystem`. -274. [Dimitris Apostolou](https://github.com/rex4539) fixed a typo. -275. [Ferry Huberts](https://github.com/fhuberts) fixed a typo. -276. [Michael Nosthoff](https://github.com/heinemml) fixed a typo. -277. [JungHoon Lee](https://github.com/jhnlee) fixed a typo. -278. [Faruk D.](https://github.com/fdiblen) fixed the CITATION.CFF file. -279. [Andrea Cocito](https://github.com/puffetto) added a clarification on macro usage to the documentation. -280. [Krzysiek Karbowiak](https://github.com/kkarbowiak) refactored the tests to use `CHECK_THROWS_WITH_AS`. -281. [Chaoqi Zhang](https://github.com/prncoprs) fixed a typo. -282. [ivanovmp](https://github.com/ivanovmp) fixed a whitespace error. -283. [KsaNL](https://github.com/KsaNL) fixed a build error when including ``. -284. [Andrea Pappacoda](https://github.com/Tachi107) moved `.pc` and `.cmake` files to `share` directory. -285. [Wolf Vollprecht](https://github.com/wolfv) added the `patch_inplace` function. -286. [Jake Zimmerman](https://github.com/jez) highlighted common usage patterns in the README file. -287. [NN](https://github.com/NN---) added the Visual Studio output directory to `.gitignore`. -288. [Romain Reignier](https://github.com/romainreignier) improved the performance the vector output adapter. -289. [Mike](https://github.com/Mike-Leo-Smith) fixed the `std::iterator_traits`. -290. [Richard Hozák](https://github.com/zxey) added macro `JSON_NO_ENUM` to disable default enum conversions. -291. [vakokako](https://github.com/vakokako) fixed tests when compiling with C++20. -292. [Alexander “weej” Jones](https://github.com/alexweej) fixed an example in the README. -293. [Eli Schwartz](https://github.com/eli-schwartz) added more files to the `include.zip` archive. -294. [Kevin Lu](https://github.com/kevinlul) fixed a compilation issue when typedefs with certain names were present. -295. [Trevor Hickey](https://github.com/luxe) improved the description of an example. -296. [Jef LeCompte](https://github.com/jef) updated the year in the README file. -297. [Alexandre Hamez](https://github.com/ahamez) fixed a warning. -298. [Maninderpal Badhan](https://github.com/mbadhan) fixed a typo. -299. [kevin--](https://github.com/kevin--) added a note to an example in the README file. -300. [I](https://github.com/wx257osn2) fixed a typo. -301. [Gregorio Litenstein](https://github.com/Lord-Kamina) fixed the Clang detection. -302. [Andreas Smas](https://github.com/andoma) added a Doozer badge. -303. [WanCW](https://github.com/wancw) fixed the string conversion with Clang. -304. [zhaohuaxishi](https://github.com/zhaohuaxishi) fixed a Doxygen error. -305. [emvivre](https://github.com/emvivre) removed an invalid parameter from CMake. -306. [Tobias Hermann](https://github.com/Dobiasd) fixed a link in the README file. -307. [Michael](https://github.com/traits) fixed a warning. -308. [Ryan Mulder](https://github.com/ryanjmulder) added `ensure_ascii` to the `dump` function. -309. [Muri Nicanor](https://github.com/murinicanor) fixed the `sed` discovery in the Makefile. -310. [David Avedissian](https://github.com/dgavedissian) implemented SFINAE-friendly `iterator_traits`. -311. [AQNOUCH Mohammed](https://github.com/aqnouch) fixed a typo in the README. -312. [Gareth Sylvester-Bradley](https://github.com/garethsb) added `operator/=` and `operator/` to construct JSON pointers. -313. [Michael Macnair](https://github.com/mykter) added support for afl-fuzz testing. -314. [Berkus Decker](https://github.com/berkus) fixed a typo in the README. -315. [Illia Polishchuk](https://github.com/effolkronium) improved the CMake testing. -316. [Ikko Ashimine](https://github.com/eltociear) fixed a typo. - -Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. - - -## Used third-party tools - -The library itself consists of a single header file licensed under the MIT license. However, it is built, tested, documented, and whatnot using a lot of third-party tools and services. Thanks a lot! - -- [**amalgamate.py - Amalgamate C source and header files**](https://github.com/edlund/amalgamate) to create a single header file -- [**American fuzzy lop**](https://lcamtuf.coredump.cx/afl/) for fuzz testing -- [**AppVeyor**](https://www.appveyor.com) for [continuous integration](https://ci.appveyor.com/project/nlohmann/json) on Windows -- [**Artistic Style**](http://astyle.sourceforge.net) for automatic source code indentation -- [**Clang**](https://clang.llvm.org) for compilation with code sanitizers -- [**CMake**](https://cmake.org) for build automation -- [**Codacy**](https://www.codacy.com) for further [code analysis](https://www.codacy.com/app/nlohmann/json) -- [**Coveralls**](https://coveralls.io) to measure [code coverage](https://coveralls.io/github/nlohmann/json) -- [**Coverity Scan**](https://scan.coverity.com) for [static analysis](https://scan.coverity.com/projects/nlohmann-json) -- [**cppcheck**](http://cppcheck.sourceforge.net) for static analysis -- [**doctest**](https://github.com/onqtam/doctest) for the unit tests -- [**git-update-ghpages**](https://github.com/rstacruz/git-update-ghpages) to upload the documentation to gh-pages -- [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) -- [**Google Benchmark**](https://github.com/google/benchmark) to implement the benchmarks -- [**Hedley**](https://nemequ.github.io/hedley/) to avoid re-inventing several compiler-agnostic feature macros -- [**lcov**](http://ltp.sourceforge.net/coverage/lcov.php) to process coverage information and create an HTML view -- [**libFuzzer**](https://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz -- [**Material for MkDocs**](https://squidfunk.github.io/mkdocs-material/) for the style of the documentation site -- [**MkDocs**](https://www.mkdocs.org) for the documentation site -- [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library ([project repository](https://github.com/google/oss-fuzz/tree/master/projects/json)) -- [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. -- [**Valgrind**](https://valgrind.org) to check for correct memory management - - -## Projects using JSON for Modern C++ - -The library is currently used in Apple macOS Sierra-Monterey and iOS 10-15. I am not sure what they are using the library for, but I am happy that it runs on so many devices. - - -## Notes - -### Character encoding - -The library supports **Unicode input** as follows: - -- Only **UTF-8** encoded input is supported which is the default encoding for JSON according to [RFC 8259](https://tools.ietf.org/html/rfc8259.html#section-8.1). -- `std::u16string` and `std::u32string` can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers. -- Other encodings such as Latin-1 or ISO 8859-1 are **not** supported and will yield parse or serialization errors. -- [Unicode noncharacters](https://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. -- Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. -- The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs. -- When you store strings with different encodings in the library, calling [`dump()`](https://json.nlohmann.me/api/basic_json/dump/) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers. -- To store wide strings (e.g., `std::wstring`), you need to convert them to a UTF-8 encoded `std::string` before, see [an example](https://json.nlohmann.me/home/faq/#wide-string-handling). - -### Comments in JSON - -This library does not support comments by default. It does so for three reasons: - -1. Comments are not part of the [JSON specification](https://tools.ietf.org/html/rfc8259). You may argue that `//` or `/* */` are allowed in JavaScript, but JSON is not JavaScript. -2. This was not an oversight: Douglas Crockford [wrote on this](https://plus.google.com/118095276221607585885/posts/RK8qyGVaGSr) in May 2012: - - > I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't. - - > Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser. - -3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check [The Harmful Consequences of the Robustness Principle](https://tools.ietf.org/html/draft-iab-protocol-maintenance-01) on this. - -However, you can pass set parameter `ignore_comments` to true in the `parse` function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace. - -### Order of object keys - -By default, the library does not preserve the **insertion order of object elements**. This is standards-compliant, as the [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". - -If you do want to preserve the insertion order, you can try the type [`nlohmann::ordered_json`](https://github.com/nlohmann/json/issues/2179). Alternatively, you can use a more sophisticated ordered map like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) ([integration](https://github.com/nlohmann/json/issues/546#issuecomment-304447518)) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map) ([integration](https://github.com/nlohmann/json/issues/485#issuecomment-333652309)). - -### Memory Release - -We checked with Valgrind and the Address Sanitizer (ASAN) that there are no memory leaks. - -If you find that a parsing program with this library does not release memory, please consider the following case, and it may be unrelated to this library. - -**Your program is compiled with glibc.** There is a tunable threshold that glibc uses to decide whether to actually return memory to the system or whether to cache it for later reuse. If in your program you make lots of small allocations and those small allocations are not a contiguous block and are presumably below the threshold, then they will not get returned to the OS. -Here is a related issue [#1924](https://github.com/nlohmann/json/issues/1924). - -### Further notes - -- The code contains numerous debug **assertions** which can be switched off by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](https://en.cppreference.com/w/cpp/error/assert). In particular, note [`operator[]`](https://json.nlohmann.me/api/basic_json/operator%5B%5D/) implements **unchecked access** for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an [assertion failure](https://github.com/nlohmann/json/issues/289) if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the [`at()` function](https://json.nlohmann.me/api/basic_json/at/). Furthermore, you can define `JSON_ASSERT(x)` to replace calls to `assert(x)`. -- As the exact number type is not defined in the [JSON specification](https://tools.ietf.org/html/rfc8259.html), this library tries to choose the best fitting C++ number type automatically. As a result, the type `double` may be used to store numbers which may yield [**floating-point exceptions**](https://github.com/nlohmann/json/issues/181) in certain rare situations if floating-point exceptions have been unmasked in the calling code. These exceptions are not caused by the library and need to be fixed in the calling code, such as by re-masking the exceptions prior to calling library functions. -- The code can be compiled without C++ **runtime type identification** features; that is, you can use the `-fno-rtti` compiler flag. -- **Exceptions** are used widely within the library. They can, however, be switched off with either using the compiler flag `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION`. In this case, exceptions are replaced by `abort()` calls. You can further control this behavior by defining `JSON_THROW_USER` (overriding `throw`), `JSON_TRY_USER` (overriding `try`), and `JSON_CATCH_USER` (overriding `catch`). Note that `JSON_THROW_USER` should leave the current scope (e.g., by throwing or aborting), as continuing after it may yield undefined behavior. Note the explanatory [`what()`](https://en.cppreference.com/w/cpp/error/exception/what) string of exceptions is not available for MSVC if exceptions are disabled, see [#2824](https://github.com/nlohmann/json/discussions/2824). - -## Execute unit tests - -To compile and run the tests, you need to execute - -```sh -$ mkdir build -$ cd build -$ cmake .. -DJSON_BuildTests=On -$ cmake --build . -$ ctest --output-on-failure -``` - -Note that during the `ctest` stage, several JSON test files are downloaded from an [external repository](https://github.com/nlohmann/json_test_data). If policies forbid downloading artifacts during testing, you can download the files yourself and pass the directory with the test files via `-DJSON_TestDataDirectory=path` to CMake. Then, no Internet connectivity is required. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information. - -If the test suite is not found, several test suites will fail like this: - -``` -=============================================================================== -json/tests/src/make_test_data_available.hpp:21: -TEST CASE: check test suite is downloaded - -json/tests/src/make_test_data_available.hpp:23: FATAL ERROR: REQUIRE( utils::check_testsuite_downloaded() ) is NOT correct! - values: REQUIRE( false ) - logged: Test data not found in 'json/cmake-build-debug/json_test_data'. - Please execute target 'download_test_data' before running this test suite. - See for more information. - -=============================================================================== -``` - -In case you have downloaded the library rather than checked out the code via Git, test `cmake_fetch_content_configure` will fail. Please execute `ctest -LE git_required` to skip these tests. See [issue #2189](https://github.com/nlohmann/json/issues/2189) for more information. - -Some tests change the installed files and hence make the whole process not reproducible. Please execute `ctest -LE not_reproducible` to skip these tests. See [issue #2324](https://github.com/nlohmann/json/issues/2324) for more information. - -Note you need to call `cmake -LE "not_reproducible|git_required"` to exclude both labels. See [issue #2596](https://github.com/nlohmann/json/issues/2596) for more information. - -As Intel compilers use unsafe floating point optimization by default, the unit tests may fail. Use flag [`/fp:precise`](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/compiler-options/compiler-option-details/floating-point-options/fp-model-fp.html) then. diff --git a/extern/nlohmann-json/cmake/ci.cmake b/extern/nlohmann-json/cmake/ci.cmake deleted file mode 100644 index 09c1c57d4..000000000 --- a/extern/nlohmann-json/cmake/ci.cmake +++ /dev/null @@ -1,982 +0,0 @@ -# number of parallel jobs for CTest -set(N 10) - -############################################################################### -# Needed tools. -############################################################################### - -include(FindPython3) -find_package(Python3 COMPONENTS Interpreter) - -find_program(ASTYLE_TOOL NAMES astyle) -execute_process(COMMAND ${ASTYLE_TOOL} --version OUTPUT_VARIABLE ASTYLE_TOOL_VERSION ERROR_VARIABLE ASTYLE_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" ASTYLE_TOOL_VERSION "${ASTYLE_TOOL_VERSION}") -message(STATUS "🔖 Artistic Style ${ASTYLE_TOOL_VERSION} (${ASTYLE_TOOL})") - -find_program(CLANG_TOOL NAMES clang++-HEAD clang++-15 clang++-14 clang++-13 clang++-12 clang++-11 clang++) -execute_process(COMMAND ${CLANG_TOOL} --version OUTPUT_VARIABLE CLANG_TOOL_VERSION ERROR_VARIABLE CLANG_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TOOL_VERSION "${CLANG_TOOL_VERSION}") -message(STATUS "🔖 Clang ${CLANG_TOOL_VERSION} (${CLANG_TOOL})") - -find_program(CLANG_TIDY_TOOL NAMES clang-tidy-15 clang-tidy-14 clang-tidy-13 clang-tidy-12 clang-tidy-11 clang-tidy) -execute_process(COMMAND ${CLANG_TIDY_TOOL} --version OUTPUT_VARIABLE CLANG_TIDY_TOOL_VERSION ERROR_VARIABLE CLANG_TIDY_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TIDY_TOOL_VERSION "${CLANG_TIDY_TOOL_VERSION}") -message(STATUS "🔖 Clang-Tidy ${CLANG_TIDY_TOOL_VERSION} (${CLANG_TIDY_TOOL})") - -message(STATUS "🔖 CMake ${CMAKE_VERSION} (${CMAKE_COMMAND})") - -find_program(CPPCHECK_TOOL NAMES cppcheck) -execute_process(COMMAND ${CPPCHECK_TOOL} --version OUTPUT_VARIABLE CPPCHECK_TOOL_VERSION ERROR_VARIABLE CPPCHECK_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CPPCHECK_TOOL_VERSION "${CPPCHECK_TOOL_VERSION}") -message(STATUS "🔖 Cppcheck ${CPPCHECK_TOOL_VERSION} (${CPPCHECK_TOOL})") - -find_program(GCC_TOOL NAMES g++-latest g++-HEAD g++-11 g++-10) -execute_process(COMMAND ${GCC_TOOL} --version OUTPUT_VARIABLE GCC_TOOL_VERSION ERROR_VARIABLE GCC_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCC_TOOL_VERSION "${GCC_TOOL_VERSION}") -message(STATUS "🔖 GCC ${GCC_TOOL_VERSION} (${GCC_TOOL})") - -find_program(GCOV_TOOL NAMES gcov-HEAD gcov-11 gcov-10 gcov) -execute_process(COMMAND ${GCOV_TOOL} --version OUTPUT_VARIABLE GCOV_TOOL_VERSION ERROR_VARIABLE GCOV_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCOV_TOOL_VERSION "${GCOV_TOOL_VERSION}") -message(STATUS "🔖 GCOV ${GCOV_TOOL_VERSION} (${GCOV_TOOL})") - -find_program(GIT_TOOL NAMES git) -execute_process(COMMAND ${GIT_TOOL} --version OUTPUT_VARIABLE GIT_TOOL_VERSION ERROR_VARIABLE GIT_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GIT_TOOL_VERSION "${GIT_TOOL_VERSION}") -message(STATUS "🔖 Git ${GIT_TOOL_VERSION} (${GIT_TOOL})") - -find_program(IWYU_TOOL NAMES include-what-you-use iwyu) -execute_process(COMMAND ${IWYU_TOOL} --version OUTPUT_VARIABLE IWYU_TOOL_VERSION ERROR_VARIABLE IWYU_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" IWYU_TOOL_VERSION "${IWYU_TOOL_VERSION}") -message(STATUS "🔖 include-what-you-use ${IWYU_TOOL_VERSION} (${IWYU_TOOL})") - -find_program(INFER_TOOL NAMES infer) -execute_process(COMMAND ${INFER_TOOL} --version OUTPUT_VARIABLE INFER_TOOL_VERSION ERROR_VARIABLE INFER_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" INFER_TOOL_VERSION "${INFER_TOOL_VERSION}") -message(STATUS "🔖 Infer ${INFER_TOOL_VERSION} (${INFER_TOOL})") - -find_program(LCOV_TOOL NAMES lcov) -execute_process(COMMAND ${LCOV_TOOL} --version OUTPUT_VARIABLE LCOV_TOOL_VERSION ERROR_VARIABLE LCOV_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" LCOV_TOOL_VERSION "${LCOV_TOOL_VERSION}") -message(STATUS "🔖 LCOV ${LCOV_TOOL_VERSION} (${LCOV_TOOL})") - -find_program(NINJA_TOOL NAMES ninja) -execute_process(COMMAND ${NINJA_TOOL} --version OUTPUT_VARIABLE NINJA_TOOL_VERSION ERROR_VARIABLE NINJA_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" NINJA_TOOL_VERSION "${NINJA_TOOL_VERSION}") -message(STATUS "🔖 Ninja ${NINJA_TOOL_VERSION} (${NINJA_TOOL})") - -find_program(OCLINT_TOOL NAMES oclint-json-compilation-database) -find_program(OCLINT_VERSION_TOOL NAMES oclint) -execute_process(COMMAND ${OCLINT_VERSION_TOOL} --version OUTPUT_VARIABLE OCLINT_TOOL_VERSION ERROR_VARIABLE OCLINT_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" OCLINT_TOOL_VERSION "${OCLINT_TOOL_VERSION}") -message(STATUS "🔖 OCLint ${OCLINT_TOOL_VERSION} (${OCLINT_TOOL})") - -find_program(VALGRIND_TOOL NAMES valgrind) -execute_process(COMMAND ${VALGRIND_TOOL} --version OUTPUT_VARIABLE VALGRIND_TOOL_VERSION ERROR_VARIABLE VALGRIND_TOOL_VERSION) -string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" VALGRIND_TOOL_VERSION "${VALGRIND_TOOL_VERSION}") -message(STATUS "🔖 Valgrind ${VALGRIND_TOOL_VERSION} (${VALGRIND_TOOL})") - -find_program(GENHTML_TOOL NAMES genhtml) -find_program(PLOG_CONVERTER_TOOL NAMES plog-converter) -find_program(PVS_STUDIO_ANALYZER_TOOL NAMES pvs-studio-analyzer) -find_program(SCAN_BUILD_TOOL NAMES scan-build-15 scan-build-14 scan-build-13 scan-build-12 scan-build-11 scan-build) - -# the individual source files -file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp) - -############################################################################### -# Thorough check with recent compilers -############################################################################### - -# Ignored Clang warnings: -# -Wno-c++98-compat The library targets C++11. -# -Wno-c++98-compat-pedantic The library targets C++11. -# -Wno-deprecated-declarations The library contains annotations for deprecated functions. -# -Wno-extra-semi-stmt The library uses std::assert which triggers this warning. -# -Wno-padded We do not care about padding warnings. -# -Wno-covered-switch-default All switches list all cases and a default case. -# -Wno-weak-vtables The library is header-only. -# -Wreserved-identifier See https://github.com/onqtam/doctest/issues/536. - -set(CLANG_CXXFLAGS - -Werror - -Weverything - -Wno-c++98-compat - -Wno-c++98-compat-pedantic - -Wno-deprecated-declarations - -Wno-extra-semi-stmt - -Wno-padded - -Wno-covered-switch-default - -Wno-weak-vtables - -Wno-reserved-identifier -) - -# Warning flags determined for GCC 13.0 (experimental) with https://github.com/nlohmann/gcc_flags: -# Ignored GCC warnings: -# -Wno-abi-tag We do not care about ABI tags. -# -Wno-aggregate-return The library uses aggregate returns. -# -Wno-long-long The library uses the long long type to interface with system functions. -# -Wno-namespaces The library uses namespaces. -# -Wno-padded We do not care about padding warnings. -# -Wno-system-headers We do not care about warnings in system headers. -# -Wno-templates The library uses templates. - -set(GCC_CXXFLAGS - -pedantic - -Werror - --all-warnings - --extra-warnings - -W - -WNSObject-attribute - -Wno-abi-tag - -Waddress - -Waddress-of-packed-member - -Wno-aggregate-return - -Waggressive-loop-optimizations - -Waligned-new=all - -Wall - -Walloc-zero - -Walloca - -Wanalyzer-double-fclose - -Wanalyzer-double-free - -Wanalyzer-exposure-through-output-file - -Wanalyzer-file-leak - -Wanalyzer-free-of-non-heap - -Wanalyzer-malloc-leak - -Wanalyzer-mismatching-deallocation - -Wanalyzer-null-argument - -Wanalyzer-null-dereference - -Wanalyzer-possible-null-argument - -Wanalyzer-possible-null-dereference - -Wanalyzer-shift-count-negative - -Wanalyzer-shift-count-overflow - -Wanalyzer-stale-setjmp-buffer - -Wanalyzer-tainted-allocation-size - -Wanalyzer-tainted-array-index - -Wanalyzer-tainted-divisor - -Wanalyzer-tainted-offset - -Wanalyzer-tainted-size - -Wanalyzer-too-complex - -Wanalyzer-unsafe-call-within-signal-handler - -Wanalyzer-use-after-free - -Wanalyzer-use-of-pointer-in-stale-stack-frame - -Wanalyzer-use-of-uninitialized-value - -Wanalyzer-va-arg-type-mismatch - -Wanalyzer-va-list-exhausted - -Wanalyzer-va-list-leak - -Wanalyzer-va-list-use-after-va-end - -Wanalyzer-write-to-const - -Wanalyzer-write-to-string-literal - -Warith-conversion - -Warray-bounds=2 - -Warray-compare - -Warray-parameter=2 - -Wattribute-alias=2 - -Wattribute-warning - -Wattributes - -Wbool-compare - -Wbool-operation - -Wbuiltin-declaration-mismatch - -Wbuiltin-macro-redefined - -Wc++0x-compat - -Wc++11-compat - -Wc++11-extensions - -Wc++14-compat - -Wc++14-extensions - -Wc++17-compat - -Wc++17-extensions - -Wc++1z-compat - -Wc++20-compat - -Wc++20-extensions - -Wc++23-extensions - -Wc++2a-compat - -Wcannot-profile - -Wcast-align - -Wcast-align=strict - -Wcast-function-type - -Wcast-qual - -Wcatch-value=3 - -Wchar-subscripts - -Wclass-conversion - -Wclass-memaccess - -Wclobbered - -Wcomma-subscript - -Wcomment - -Wcomments - -Wconditionally-supported - -Wconversion - -Wconversion-null - -Wcoverage-invalid-line-number - -Wcoverage-mismatch - -Wcpp - -Wctad-maybe-unsupported - -Wctor-dtor-privacy - -Wdangling-else - -Wdangling-pointer=2 - -Wdate-time - -Wdelete-incomplete - -Wdelete-non-virtual-dtor - -Wdeprecated - -Wdeprecated-copy - -Wdeprecated-copy-dtor - -Wdeprecated-declarations - -Wdeprecated-enum-enum-conversion - -Wdeprecated-enum-float-conversion - -Wdisabled-optimization - -Wdiv-by-zero - -Wdouble-promotion - -Wduplicated-branches - -Wduplicated-cond - -Weffc++ - -Wempty-body - -Wendif-labels - -Wenum-compare - -Wenum-conversion - -Wexceptions - -Wexpansion-to-defined - -Wextra - -Wextra-semi - -Wfloat-conversion - -Wfloat-equal - -Wformat-diag - -Wformat-overflow=2 - -Wformat-signedness - -Wformat-truncation=2 - -Wformat=2 - -Wframe-address - -Wfree-nonheap-object - -Whsa - -Wif-not-aligned - -Wignored-attributes - -Wignored-qualifiers - -Wimplicit-fallthrough=5 - -Winaccessible-base - -Winfinite-recursion - -Winherited-variadic-ctor - -Winit-list-lifetime - -Winit-self - -Winline - -Wint-in-bool-context - -Wint-to-pointer-cast - -Winterference-size - -Winvalid-imported-macros - -Winvalid-memory-model - -Winvalid-offsetof - -Winvalid-pch - -Wliteral-suffix - -Wlogical-not-parentheses - -Wlogical-op - -Wno-long-long - -Wlto-type-mismatch - -Wmain - -Wmaybe-uninitialized - -Wmemset-elt-size - -Wmemset-transposed-args - -Wmisleading-indentation - -Wmismatched-dealloc - -Wmismatched-new-delete - -Wmismatched-tags - -Wmissing-attributes - -Wmissing-braces - -Wmissing-declarations - -Wmissing-field-initializers - -Wmissing-include-dirs - -Wmissing-profile - -Wmissing-requires - -Wmissing-template-keyword - -Wmultichar - -Wmultiple-inheritance - -Wmultistatement-macros - -Wno-namespaces - -Wnarrowing - -Wnoexcept - -Wnoexcept-type - -Wnon-template-friend - -Wnon-virtual-dtor - -Wnonnull - -Wnonnull-compare - -Wnormalized=nfkc - -Wnull-dereference - -Wodr - -Wold-style-cast - -Wopenacc-parallelism - -Wopenmp-simd - -Woverflow - -Woverlength-strings - -Woverloaded-virtual - -Wpacked - -Wpacked-bitfield-compat - -Wpacked-not-aligned - -Wno-padded - -Wparentheses - -Wpedantic - -Wpessimizing-move - -Wplacement-new=2 - -Wpmf-conversions - -Wpointer-arith - -Wpointer-compare - -Wpragmas - -Wprio-ctor-dtor - -Wpsabi - -Wrange-loop-construct - -Wredundant-decls - -Wredundant-move - -Wredundant-tags - -Wregister - -Wreorder - -Wrestrict - -Wreturn-local-addr - -Wreturn-type - -Wscalar-storage-order - -Wsequence-point - -Wshadow=compatible-local - -Wshadow=global - -Wshadow=local - -Wshift-count-negative - -Wshift-count-overflow - -Wshift-negative-value - -Wshift-overflow=2 - -Wsign-compare - -Wsign-conversion - -Wsign-promo - -Wsized-deallocation - -Wsizeof-array-argument - -Wsizeof-array-div - -Wsizeof-pointer-div - -Wsizeof-pointer-memaccess - -Wstack-protector - -Wstrict-aliasing=3 - -Wstrict-null-sentinel - -Wno-strict-overflow - -Wstring-compare - -Wstringop-overflow=4 - -Wstringop-overread - -Wstringop-truncation - -Wsubobject-linkage - -Wsuggest-attribute=cold - -Wsuggest-attribute=const - -Wsuggest-attribute=format - -Wsuggest-attribute=malloc - -Wsuggest-attribute=noreturn - -Wsuggest-attribute=pure - -Wsuggest-final-methods - -Wsuggest-final-types - -Wsuggest-override - -Wswitch - -Wswitch-bool - -Wswitch-default - -Wswitch-enum - -Wswitch-outside-range - -Wswitch-unreachable - -Wsync-nand - -Wsynth - -Wno-system-headers - -Wtautological-compare - -Wno-templates - -Wterminate - -Wtrampolines - -Wtrigraphs - -Wtrivial-auto-var-init - -Wtsan - -Wtype-limits - -Wundef - -Wuninitialized - -Wunknown-pragmas - -Wunreachable-code - -Wunsafe-loop-optimizations - -Wunused - -Wunused-but-set-parameter - -Wunused-but-set-variable - -Wunused-const-variable=2 - -Wunused-function - -Wunused-label - -Wunused-local-typedefs - -Wunused-macros - -Wunused-parameter - -Wunused-result - -Wunused-value - -Wunused-variable - -Wuse-after-free=3 - -Wuseless-cast - -Wvarargs - -Wvariadic-macros - -Wvector-operation-performance - -Wvexing-parse - -Wvirtual-inheritance - -Wvirtual-move-assign - -Wvla - -Wvla-parameter - -Wvolatile - -Wvolatile-register-var - -Wwrite-strings - -Wzero-as-null-pointer-constant - -Wzero-length-bounds -) - -add_custom_target(ci_test_gcc - COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc - COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with GCC using maximal warning flags" -) - -add_custom_target(ci_test_clang - COMMAND CXX=${CLANG_TOOL} CXXFLAGS="${CLANG_CXXFLAGS}" ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang - COMMAND cd ${PROJECT_BINARY_DIR}/build_clang && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with Clang using maximal warning flags" -) - -############################################################################### -# Different C++ Standards. -############################################################################### - -foreach(CXX_STANDARD 11 14 17 20) - add_custom_target(ci_test_gcc_cxx${CXX_STANDARD} - COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -DJSON_TestStandards=${CXX_STANDARD} - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} - COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with GCC for C++${CXX_STANDARD}" - ) - - add_custom_target(ci_test_clang_cxx${CXX_STANDARD} - COMMAND CXX=${CLANG_TOOL} CXXFLAGS="${CLANG_CXXFLAGS}" ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -DJSON_TestStandards=${CXX_STANDARD} - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} - COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with Clang for C++${CXX_STANDARD}" - ) -endforeach() - -############################################################################### -# Disable exceptions. -############################################################################### - -add_custom_target(ci_test_noexceptions - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DCMAKE_CXX_FLAGS=-DJSON_NOEXCEPTION -DDOCTEST_TEST_FILTER=--no-throw - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noexceptions - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noexceptions - COMMAND cd ${PROJECT_BINARY_DIR}/build_noexceptions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with exceptions switched off" -) - -############################################################################### -# Disable implicit conversions. -############################################################################### - -add_custom_target(ci_test_noimplicitconversions - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_ImplicitConversions=OFF - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noimplicitconversions - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noimplicitconversions - COMMAND cd ${PROJECT_BINARY_DIR}/build_noimplicitconversions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with implicit conversions switched off" -) - -############################################################################### -# Enable improved diagnostics. -############################################################################### - -add_custom_target(ci_test_diagnostics - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_Diagnostics=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_diagnostics - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_diagnostics - COMMAND cd ${PROJECT_BINARY_DIR}/build_diagnostics && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with improved diagnostics enabled" -) - -############################################################################### -# Enable legacy discarded value comparison. -############################################################################### - -add_custom_target(ci_test_legacycomparison - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_LegacyDiscardedValueComparison=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_legacycomparison - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_legacycomparison - COMMAND cd ${PROJECT_BINARY_DIR}/build_legacycomparison && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with legacy discarded value comparison enabled" -) - -############################################################################### -# Disable global UDLs. -############################################################################### - -add_custom_target(ci_test_noglobaludls - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_GlobalUDLs=OFF - -DCMAKE_CXX_FLAGS=-DJSON_TEST_NO_GLOBAL_UDLS - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noglobaludls - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noglobaludls - COMMAND cd ${PROJECT_BINARY_DIR}/build_noglobaludls && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with global UDLs disabled" -) - -############################################################################### -# Coverage. -############################################################################### - -add_custom_target(ci_test_coverage - COMMAND CXX=g++ ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CXX_FLAGS="--coverage;-fprofile-arcs;-ftest-coverage" - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_coverage - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_coverage - COMMAND cd ${PROJECT_BINARY_DIR}/build_coverage && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - - COMMAND CXX=g++ ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CXX_FLAGS="-m32;--coverage;-fprofile-arcs;-ftest-coverage" - -DJSON_BuildTests=ON -DJSON_32bitTest=ONLY - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_coverage32 - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_coverage32 - COMMAND cd ${PROJECT_BINARY_DIR}/build_coverage32 && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - - COMMAND ${LCOV_TOOL} --directory . --capture --output-file json.info --rc lcov_branch_coverage=1 - COMMAND ${LCOV_TOOL} -e json.info ${SRC_FILES} --output-file json.info.filtered --rc lcov_branch_coverage=1 - COMMAND ${CMAKE_SOURCE_DIR}/tests/thirdparty/imapdl/filterbr.py json.info.filtered > json.info.filtered.noexcept - COMMAND genhtml --title "JSON for Modern C++" --legend --demangle-cpp --output-directory html --show-details --branch-coverage json.info.filtered.noexcept - - COMMENT "Compile and test with coverage" -) - -############################################################################### -# Sanitizers. -############################################################################### - -set(CLANG_CXX_FLAGS_SANITIZER "-g -O1 -fsanitize=address -fsanitize=undefined -fsanitize=integer -fsanitize=nullability -fno-omit-frame-pointer -fno-sanitize-recover=all -fno-sanitize=unsigned-integer-overflow -fno-sanitize=unsigned-shift-base") - -add_custom_target(ci_test_clang_sanitizer - COMMAND CXX=${CLANG_TOOL} CXXFLAGS=${CLANG_CXX_FLAGS_SANITIZER} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_sanitizer - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_sanitizer - COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_sanitizer && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test with sanitizers" -) - -############################################################################### -# Check if header is amalgamated and sources are properly indented. -############################################################################### - -set(ASTYLE_FLAGS --style=allman --indent=spaces=4 --indent-modifiers --indent-switches --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-oper --pad-header --align-pointer=type --align-reference=type --add-brackets --convert-tabs --close-templates --lineend=linux --preserve-date --formatted) - -file(GLOB_RECURSE INDENT_FILES - ${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp - ${PROJECT_SOURCE_DIR}/tests/src/*.cpp - ${PROJECT_SOURCE_DIR}/tests/src/*.hpp - ${PROJECT_SOURCE_DIR}/tests/benchmarks/src/benchmarks.cpp - ${PROJECT_SOURCE_DIR}/docs/examples/*.cpp -) - -set(include_dir ${PROJECT_SOURCE_DIR}/single_include/nlohmann) -set(tool_dir ${PROJECT_SOURCE_DIR}/tools/amalgamate) -add_custom_target(ci_test_amalgamation - COMMAND rm -fr ${include_dir}/json.hpp~ ${include_dir}/json_fwd.hpp~ - COMMAND cp ${include_dir}/json.hpp ${include_dir}/json.hpp~ - COMMAND cp ${include_dir}/json_fwd.hpp ${include_dir}/json_fwd.hpp~ - - COMMAND ${Python3_EXECUTABLE} ${tool_dir}/amalgamate.py -c ${tool_dir}/config_json.json -s . - COMMAND ${Python3_EXECUTABLE} ${tool_dir}/amalgamate.py -c ${tool_dir}/config_json_fwd.json -s . - COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} --suffix=none --quiet ${include_dir}/json.hpp ${include_dir}/json_fwd.hpp - - COMMAND diff ${include_dir}/json.hpp~ ${include_dir}/json.hpp - COMMAND diff ${include_dir}/json_fwd.hpp~ ${include_dir}/json_fwd.hpp - - COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} ${INDENT_FILES} - COMMAND for FILE in `find . -name '*.orig'`\; do false \; done - - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - COMMENT "Check amalgamation and indentation" -) - -############################################################################### -# Build and test using the amalgamated header -############################################################################### - -add_custom_target(ci_test_single_header - COMMAND CXX=${GCC_TOOL} CXXFLAGS="${GCC_CXXFLAGS}" ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_MultipleHeaders=OFF -DJSON_FastTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_single_header - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_single_header - COMMAND cd ${PROJECT_BINARY_DIR}/build_single_header && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Compile and test single-header version" -) - -############################################################################### -# Valgrind. -############################################################################### - -add_custom_target(ci_test_valgrind - COMMAND CXX=${GCC_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_Valgrind=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_valgrind - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_valgrind - COMMAND cd ${PROJECT_BINARY_DIR}/build_valgrind && ${CMAKE_CTEST_COMMAND} -L valgrind --parallel ${N} --output-on-failure - COMMENT "Compile and test with Valgrind" -) - -############################################################################### -# Check code with Clang Static Analyzer. -############################################################################### - -set(CLANG_ANALYZER_CHECKS "fuchsia.HandleChecker,nullability.NullableDereferenced,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,optin.cplusplus.UninitializedObject,optin.cplusplus.VirtualCall,optin.mpi.MPI-Checker,optin.osx.OSObjectCStyleCast,optin.osx.cocoa.localizability.EmptyLocalizationContextChecker,optin.osx.cocoa.localizability.NonLocalizedStringChecker,optin.performance.GCDAntipattern,optin.performance.Padding,optin.portability.UnixAPI,security.FloatLoopCounter,security.insecureAPI.DeprecatedOrUnsafeBufferHandling,security.insecureAPI.bcmp,security.insecureAPI.bcopy,security.insecureAPI.bzero,security.insecureAPI.rand,security.insecureAPI.strcpy,valist.CopyToSelf,valist.Uninitialized,valist.Unterminated,webkit.NoUncountedMemberChecker,webkit.RefCntblBaseVirtualDtor,core.CallAndMessage,core.DivideZero,core.NonNullParamChecker,core.NullDereference,core.StackAddressEscape,core.UndefinedBinaryOperatorResult,core.VLASize,core.uninitialized.ArraySubscript,core.uninitialized.Assign,core.uninitialized.Branch,core.uninitialized.CapturedBlockVariable,core.uninitialized.UndefReturn,cplusplus.InnerPointer,cplusplus.Move,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,cplusplus.PlacementNew,cplusplus.PureVirtualCall,deadcode.DeadStores,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,osx.API,osx.MIG,osx.NumberObjectConversion,osx.OSObjectRetainCount,osx.ObjCProperty,osx.SecKeychainAPI,osx.cocoa.AtSync,osx.cocoa.AutoreleaseWrite,osx.cocoa.ClassRelease,osx.cocoa.Dealloc,osx.cocoa.IncompatibleMethodTypes,osx.cocoa.Loops,osx.cocoa.MissingSuperCall,osx.cocoa.NSAutoreleasePool,osx.cocoa.NSError,osx.cocoa.NilArg,osx.cocoa.NonNilReturnValue,osx.cocoa.ObjCGenerics,osx.cocoa.RetainCount,osx.cocoa.RunLoopAutoreleaseLeak,osx.cocoa.SelfInit,osx.cocoa.SuperDealloc,osx.cocoa.UnusedIvars,osx.cocoa.VariadicMethodTypes,osx.coreFoundation.CFError,osx.coreFoundation.CFNumber,osx.coreFoundation.CFRetainRelease,osx.coreFoundation.containers.OutOfBounds,osx.coreFoundation.containers.PointerSizedValues,security.insecureAPI.UncheckedReturn,security.insecureAPI.decodeValueOfObjCType,security.insecureAPI.getpw,security.insecureAPI.gets,security.insecureAPI.mkstemp,security.insecureAPI.mktemp,security.insecureAPI.vfork,unix.API,unix.Malloc,unix.MallocSizeof,unix.MismatchedDeallocator,unix.Vfork,unix.cstring.BadSizeArg,unix.cstring.NullArg") - -add_custom_target(ci_clang_analyze - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_analyze - COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_analyze && ${SCAN_BUILD_TOOL} -enable-checker ${CLANG_ANALYZER_CHECKS} --use-c++=${CLANG_TOOL} -analyze-headers -o ${PROJECT_BINARY_DIR}/report ninja - COMMENT "Check code with Clang Analyzer" -) - -############################################################################### -# Check code with Cppcheck. -############################################################################### - -add_custom_target(ci_cppcheck - COMMAND ${CPPCHECK_TOOL} --enable=warning --suppress=missingReturn --inline-suppr --inconclusive --force --std=c++11 ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp --error-exitcode=1 - COMMENT "Check code with Cppcheck" -) - -############################################################################### -# Check code with cpplint. -############################################################################### - -add_custom_target(ci_cpplint - COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/cpplint/cpplint.py --filter=-whitespace,-legal,-runtime/references,-runtime/explicit,-runtime/indentation_namespace,-readability/casting,-readability/nolint --quiet --recursive ${SRC_FILES} - COMMENT "Check code with cpplint" -) - -############################################################################### -# Check code with OCLint. -############################################################################### - -file(COPY ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp DESTINATION ${PROJECT_BINARY_DIR}/src_single) -file(RENAME ${PROJECT_BINARY_DIR}/src_single/json.hpp ${PROJECT_BINARY_DIR}/src_single/all.cpp) -file(APPEND "${PROJECT_BINARY_DIR}/src_single/all.cpp" "\n\nint main()\n{}\n") - -add_executable(single_all ${PROJECT_BINARY_DIR}/src_single/all.cpp) -target_compile_features(single_all PRIVATE cxx_std_11) - -add_custom_target(ci_oclint - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - -DJSON_BuildTests=OFF -DJSON_CI=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_oclint - COMMAND ${OCLINT_TOOL} -i ${PROJECT_BINARY_DIR}/build_oclint/src_single/all.cpp -p ${PROJECT_BINARY_DIR}/build_oclint -- - -report-type html -enable-global-analysis --max-priority-1=0 --max-priority-2=1000 --max-priority-3=2000 - --disable-rule=MultipleUnaryOperator - --disable-rule=DoubleNegative - --disable-rule=ShortVariableName - --disable-rule=GotoStatement - --disable-rule=LongLine - -o ${PROJECT_BINARY_DIR}/build_oclint/oclint_report.html - COMMENT "Check code with OCLint" -) - -############################################################################### -# Check code with Clang-Tidy. -############################################################################### - -add_custom_target(ci_clang_tidy - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_CLANG_TIDY=${CLANG_TIDY_TOOL} - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_tidy - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_tidy - COMMENT "Check code with Clang-Tidy" -) - -############################################################################### -# Check code with PVS-Studio Analyzer . -############################################################################### - -add_custom_target(ci_pvs_studio - COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - -DJSON_BuildTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_pvs_studio - COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PVS_STUDIO_ANALYZER_TOOL} analyze -j 10 - COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PLOG_CONVERTER_TOOL} -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs - COMMENT "Check code with PVS Studio" -) - -############################################################################### -# Check code with Infer static analyzer. -############################################################################### - -add_custom_target(ci_infer - COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_infer - COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} compile -- ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${PROJECT_SOURCE_DIR} -DJSON_BuildTests=ON - COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} run -- make - COMMENT "Check code with Infer" -) - -############################################################################### -# Run test suite with previously downloaded test data. -############################################################################### - -add_custom_target(ci_offline_testdata - COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data - COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data && ${GIT_TOOL} clone -c advice.detachedHead=false --branch v3.1.0 https://github.com/nlohmann/json_test_data.git --quiet --depth 1 - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_TestDataDirectory=${PROJECT_BINARY_DIR}/build_offline_testdata/test_data/json_test_data - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_offline_testdata - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_offline_testdata - COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure - COMMENT "Check code with previously downloaded test data" -) - -############################################################################### -# Run test suite when project was not checked out from Git -############################################################################### - -add_custom_target(ci_non_git_tests - COMMAND git config --global --add safe.directory ${PROJECT_SOURCE_DIR} - COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_non_git_tests/sources - COMMAND cd ${PROJECT_SOURCE_DIR} && for FILE in `${GIT_TOOL} ls-tree --name-only HEAD`\; do cp -r $$FILE ${PROJECT_BINARY_DIR}/build_non_git_tests/sources \; done - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -S${PROJECT_BINARY_DIR}/build_non_git_tests/sources -B${PROJECT_BINARY_DIR}/build_non_git_tests - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_non_git_tests - COMMAND cd ${PROJECT_BINARY_DIR}/build_non_git_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE git_required --output-on-failure - COMMENT "Check code when project was not checked out from Git" -) - -############################################################################### -# Run test suite and exclude tests that change installed files -############################################################################### - -add_custom_target(ci_reproducible_tests - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_reproducible_tests - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_reproducible_tests - COMMAND cd ${PROJECT_BINARY_DIR}/build_reproducible_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE not_reproducible --output-on-failure - COMMENT "Check code and exclude tests that change installed files" -) - -############################################################################### -# Check if every header in the include folder includes sufficient headers to -# be compiled individually. -############################################################################### - -set(iwyu_path_and_options ${IWYU_TOOL} -Xiwyu --max_line_length=300) - -foreach(SRC_FILE ${SRC_FILES}) - # get relative path of the header file - file(RELATIVE_PATH RELATIVE_SRC_FILE "${PROJECT_SOURCE_DIR}/include/nlohmann" "${SRC_FILE}") - # replace slashes and strip suffix - string(REPLACE "/" "_" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}") - string(REPLACE ".hpp" "" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}") - # create code file - file(WRITE "${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp" "#include \"${SRC_FILE}\" // IWYU pragma: keep\n\nint main()\n{}\n") - # create executable - add_executable(single_${RELATIVE_SRC_FILE} EXCLUDE_FROM_ALL ${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp) - target_include_directories(single_${RELATIVE_SRC_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/include) - target_compile_features(single_${RELATIVE_SRC_FILE} PRIVATE cxx_std_11) - set_property(TARGET single_${RELATIVE_SRC_FILE} PROPERTY CXX_INCLUDE_WHAT_YOU_USE "${iwyu_path_and_options}") - # remember binary for ci_single_binaries target - list(APPEND single_binaries single_${RELATIVE_SRC_FILE}) -endforeach() - -add_custom_target(ci_single_binaries - DEPENDS ${single_binaries} - COMMENT "Check if headers are self-contained" -) - -############################################################################### -# Benchmarks -############################################################################### - -add_custom_target(ci_benchmarks - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Release -GNinja - -S${PROJECT_SOURCE_DIR}/benchmarks -B${PROJECT_BINARY_DIR}/build_benchmarks - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_benchmarks --target json_benchmarks - COMMAND cd ${PROJECT_BINARY_DIR}/build_benchmarks && ./json_benchmarks - COMMENT "Run benchmarks" -) - -############################################################################### -# CMake flags -############################################################################### - -function(ci_get_cmake version var) - if (APPLE) - set(${var} ${PROJECT_BINARY_DIR}/cmake-${version}-Darwin64/CMake.app/Contents/bin/cmake) - add_custom_command( - OUTPUT ${${var}} - COMMAND wget -nc https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Darwin64.tar.gz - COMMAND tar xfz cmake-${version}-Darwin64.tar.gz - COMMAND rm cmake-${version}-Darwin64.tar.gz - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Download CMake ${version}" - ) - else() - set(${var} ${PROJECT_BINARY_DIR}/cmake-${version}-Linux-x86_64/bin/cmake) - add_custom_command( - OUTPUT ${${var}} - COMMAND wget -nc https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}-Linux-x86_64.tar.gz - COMMAND tar xfz cmake-${version}-Linux-x86_64.tar.gz - COMMAND rm cmake-${version}-Linux-x86_64.tar.gz - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMENT "Download CMake ${version}" - ) - endif() - set(${var} ${${var}} PARENT_SCOPE) -endfunction() - -ci_get_cmake(3.1.0 CMAKE_3_1_0_BINARY) -ci_get_cmake(3.13.0 CMAKE_3_13_0_BINARY) - -set(JSON_CMAKE_FLAGS_3_1_0 JSON_Diagnostics JSON_GlobalUDLs JSON_ImplicitConversions JSON_DisableEnumSerialization - JSON_LegacyDiscardedValueComparison JSON_Install JSON_MultipleHeaders JSON_SystemInclude JSON_Valgrind) -set(JSON_CMAKE_FLAGS_3_13_0 JSON_BuildTests) - -function(ci_add_cmake_flags_targets flag min_version) - string(TOLOWER "ci_cmake_flag_${flag}" flag_target) - string(REPLACE . _ min_version_var ${min_version}) - set(cmake_binary ${CMAKE_${min_version_var}_BINARY}) - add_custom_target(${flag_target} - COMMENT "Check CMake flag ${flag} (CMake ${CMAKE_VERSION})" - COMMAND ${CMAKE_COMMAND} - -Werror=dev - -D${flag}=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_${flag_target} - ) - add_custom_target(${flag_target}_${min_version_var} - COMMENT "Check CMake flag ${JSON_CMAKE_FLAG} (CMake ${min_version})" - COMMAND mkdir -pv ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var} - COMMAND cd ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var} - && ${cmake_binary} -Werror=dev ${PROJECT_SOURCE_DIR} -D${flag}=ON - DEPENDS ${cmake_binary} - ) - list(APPEND JSON_CMAKE_FLAG_TARGETS ${JSON_CMAKE_FLAG_TARGET} ${flag_target}_${min_version_var}) - list(APPEND JSON_CMAKE_FLAG_BUILD_DIRS ${PROJECT_BINARY_DIR}/build_${flag_target} ${PROJECT_BINARY_DIR}/build_${flag_target}_${min_version_var}) - set(JSON_CMAKE_FLAG_TARGETS ${JSON_CMAKE_FLAG_TARGETS} PARENT_SCOPE) - set(JSON_CMAKE_FLAG_BUILD_DIRS ${JSON_CMAKE_FLAG_BUILD_DIRS} PARENT_SCOPE) -endfunction() - -foreach(JSON_CMAKE_FLAG ${JSON_CMAKE_FLAGS_3_1_0}) - ci_add_cmake_flags_targets(${JSON_CMAKE_FLAG} 3.1.0) -endforeach() - -foreach(JSON_CMAKE_FLAG ${JSON_CMAKE_FLAGS_3_13_0}) - ci_add_cmake_flags_targets(${JSON_CMAKE_FLAG} 3.13.0) -endforeach() - -add_custom_target(ci_cmake_flags - DEPENDS ${JSON_CMAKE_FLAG_TARGETS} - COMMENT "Check CMake flags" -) - -############################################################################### -# Use more installed compilers. -############################################################################### - -foreach(COMPILER g++-4.8 g++-4.9 g++-5 g++-6 g++-7 g++-8 g++-9 g++-10 g++-11 clang++-3.5 clang++-3.6 clang++-3.7 clang++-3.8 clang++-3.9 clang++-4.0 clang++-5.0 clang++-6.0 clang++-7 clang++-8 clang++-9 clang++-10 clang++-11 clang++-12 clang++-13 clang++-14) - find_program(COMPILER_TOOL NAMES ${COMPILER}) - if (COMPILER_TOOL) - if ("${COMPILER}" STREQUAL "clang++-9") - # fix for https://github.com/nlohmann/json/pull/3101#issuecomment-998788786 / https://stackoverflow.com/a/64051725/266378 - set(ADDITIONAL_FLAGS "-DCMAKE_CXX_FLAGS=--gcc-toolchain=/root/gcc/9") - else() - unset(ADDITIONAL_FLAGS) - endif() - - add_custom_target(ci_test_compiler_${COMPILER} - COMMAND CXX=${COMPILER} ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} - ${ADDITIONAL_FLAGS} - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} - COMMAND cd ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" --output-on-failure - COMMENT "Compile and test with ${COMPILER}" - ) - endif() - unset(COMPILER_TOOL CACHE) -endforeach() - -############################################################################### -# CUDA example -############################################################################### - -add_custom_target(ci_cuda_example - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DCMAKE_CUDA_HOST_COMPILER=g++-8 - -S${PROJECT_SOURCE_DIR}/tests/cuda_example -B${PROJECT_BINARY_DIR}/build_cuda_example - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_cuda_example -) - -############################################################################### -# Intel C++ Compiler -############################################################################### - -add_custom_target(ci_icpc - COMMAND ${CMAKE_COMMAND} - -DCMAKE_BUILD_TYPE=Debug -GNinja - -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc - -DJSON_BuildTests=ON -DJSON_FastTests=ON - -S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_icpc - COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_icpc - COMMAND cd ${PROJECT_BINARY_DIR}/build_icpc && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" --output-on-failure - COMMENT "Compile and test with ICPC" -) - -############################################################################### -# test documentation -############################################################################### - -add_custom_target(ci_test_examples - COMMAND make CXX="${GCC_TOOL}" check_output_portable -j8 - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs - COMMENT "Check that all examples compile and create the desired output" -) - -add_custom_target(ci_test_api_documentation - COMMAND ${Python3_EXECUTABLE} scripts/check_structure.py - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs/mkdocs - COMMENT "Lint the API documentation" -) - -############################################################################### -# Clean up all generated files. -############################################################################### - -add_custom_target(ci_clean - COMMAND rm -fr ${PROJECT_BINARY_DIR}/build_* cmake-3.1.0-Darwin64 ${JSON_CMAKE_FLAG_BUILD_DIRS} ${single_binaries} - COMMENT "Clean generated directories" -) diff --git a/extern/nlohmann-json/cmake/config.cmake.in b/extern/nlohmann-json/cmake/config.cmake.in deleted file mode 100644 index 9a17a7d7b..000000000 --- a/extern/nlohmann-json/cmake/config.cmake.in +++ /dev/null @@ -1,15 +0,0 @@ -include(FindPackageHandleStandardArgs) -set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE}) -find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE) - -if(NOT TARGET @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@) - include("${CMAKE_CURRENT_LIST_DIR}/@NLOHMANN_JSON_TARGETS_EXPORT_NAME@.cmake") - if((NOT TARGET @NLOHMANN_JSON_TARGET_NAME@) AND - (NOT @PROJECT_NAME@_FIND_VERSION OR - @PROJECT_NAME@_FIND_VERSION VERSION_LESS 3.2.0)) - add_library(@NLOHMANN_JSON_TARGET_NAME@ INTERFACE IMPORTED) - set_target_properties(@NLOHMANN_JSON_TARGET_NAME@ PROPERTIES - INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@ - ) - endif() -endif() diff --git a/extern/nlohmann-json/cmake/download_test_data.cmake b/extern/nlohmann-json/cmake/download_test_data.cmake deleted file mode 100644 index 1bb998dae..000000000 --- a/extern/nlohmann-json/cmake/download_test_data.cmake +++ /dev/null @@ -1,56 +0,0 @@ -set(JSON_TEST_DATA_URL https://github.com/nlohmann/json_test_data) -set(JSON_TEST_DATA_VERSION 3.1.0) - -# if variable is set, use test data from given directory rather than downloading them -if(JSON_TestDataDirectory) - message(STATUS "Using test data in ${JSON_TestDataDirectory}.") - add_custom_target(download_test_data) - file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${JSON_TestDataDirectory}\"\n") -else() - find_package(Git) - # target to download test data - add_custom_target(download_test_data - COMMAND test -d json_test_data || ${GIT_EXECUTABLE} clone -c advice.detachedHead=false --branch v${JSON_TEST_DATA_VERSION} ${JSON_TEST_DATA_URL}.git --quiet --depth 1 - COMMENT "Downloading test data from ${JSON_TEST_DATA_URL} (v${JSON_TEST_DATA_VERSION})" - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - ) - # create a header with the path to the downloaded test data - file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${CMAKE_BINARY_DIR}/json_test_data\"\n") -endif() - -# determine the operating system (for debug and support purposes) -find_program(UNAME_COMMAND uname) -find_program(VER_COMMAND ver) -find_program(LSB_RELEASE_COMMAND lsb_release) -find_program(SW_VERS_COMMAND sw_vers) -set(OS_VERSION_STRINGS "${CMAKE_SYSTEM}") -if (VER_COMMAND) - execute_process(COMMAND ${VER_COMMAND} OUTPUT_VARIABLE VER_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) - set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${VER_COMMAND_RESULT}") -endif() -if (SW_VERS_COMMAND) - execute_process(COMMAND ${SW_VERS_COMMAND} OUTPUT_VARIABLE SW_VERS_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) - string(REGEX REPLACE "[ ]*\n" "; " SW_VERS_COMMAND_RESULT "${SW_VERS_COMMAND_RESULT}") - set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${SW_VERS_COMMAND_RESULT}") -endif() -if (LSB_RELEASE_COMMAND) - execute_process(COMMAND ${LSB_RELEASE_COMMAND} -a OUTPUT_VARIABLE LSB_RELEASE_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) - string(REGEX REPLACE "[ ]*\n" "; " LSB_RELEASE_COMMAND_RESULT "${LSB_RELEASE_COMMAND_RESULT}") - set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${LSB_RELEASE_COMMAND_RESULT}") -endif() -if (UNAME_COMMAND) - execute_process(COMMAND ${UNAME_COMMAND} -a OUTPUT_VARIABLE UNAME_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) - set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${UNAME_COMMAND_RESULT}") -endif() - -message(STATUS "Operating system: ${OS_VERSION_STRINGS}") - -# determine the compiler (for debug and support purposes) -if (MSVC) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE CXX_VERSION_RESULT ERROR_STRIP_TRAILING_WHITESPACE) - set(CXX_VERSION_RESULT "${CXX_VERSION_RESULT}; MSVC_VERSION=${MSVC_VERSION}; MSVC_TOOLSET_VERSION=${MSVC_TOOLSET_VERSION}") -else() - execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -string(REGEX REPLACE "[ ]*\n" "; " CXX_VERSION_RESULT "${CXX_VERSION_RESULT}") -message(STATUS "Compiler: ${CXX_VERSION_RESULT}") diff --git a/extern/nlohmann-json/cmake/nlohmann_jsonConfigVersion.cmake.in b/extern/nlohmann-json/cmake/nlohmann_jsonConfigVersion.cmake.in deleted file mode 100644 index 109108597..000000000 --- a/extern/nlohmann-json/cmake/nlohmann_jsonConfigVersion.cmake.in +++ /dev/null @@ -1,20 +0,0 @@ -# This is essentially cmake's BasicConfigVersion-SameMajorVersion.cmake.in but -# without the 32/64-bit check. Since json is a header-only library, it doesn't -# matter if it was built on a different platform than what it is used on (see -# https://github.com/nlohmann/json/issues/1697). -set(PACKAGE_VERSION "@PROJECT_VERSION@") - -if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - - if(PACKAGE_FIND_VERSION_MAJOR STREQUAL "@PROJECT_VERSION_MAJOR@") - set(PACKAGE_VERSION_COMPATIBLE TRUE) - else() - set(PACKAGE_VERSION_COMPATIBLE FALSE) - endif() - - if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() diff --git a/extern/nlohmann-json/cmake/pkg-config.pc.in b/extern/nlohmann-json/cmake/pkg-config.pc.in deleted file mode 100644 index d36317f09..000000000 --- a/extern/nlohmann-json/cmake/pkg-config.pc.in +++ /dev/null @@ -1,4 +0,0 @@ -Name: ${PROJECT_NAME} -Description: JSON for Modern C++ -Version: ${PROJECT_VERSION} -Cflags: -I${CMAKE_INSTALL_FULL_INCLUDEDIR} diff --git a/extern/nlohmann-json/cmake/test.cmake b/extern/nlohmann-json/cmake/test.cmake deleted file mode 100644 index bb840c6c0..000000000 --- a/extern/nlohmann-json/cmake/test.cmake +++ /dev/null @@ -1,273 +0,0 @@ -set(_json_test_cmake_list_file ${CMAKE_CURRENT_LIST_FILE}) - -############################################################################# -# download test data -############################################################################# - -include(download_test_data) - -# test fixture to download test data -add_test(NAME "download_test_data" COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} - --target download_test_data -) -set_tests_properties(download_test_data PROPERTIES FIXTURES_SETUP TEST_DATA) - -if(JSON_Valgrind) - find_program(CMAKE_MEMORYCHECK_COMMAND valgrind) - message(STATUS "Executing test suite with Valgrind (${CMAKE_MEMORYCHECK_COMMAND})") - set(memcheck_command "${CMAKE_MEMORYCHECK_COMMAND} ${CMAKE_MEMORYCHECK_COMMAND_OPTIONS} --error-exitcode=1 --leak-check=full") - separate_arguments(memcheck_command) -endif() - -############################################################################# -# detect standard support -############################################################################# - -# C++11 is the minimum required -set(compiler_supports_cpp_11 TRUE) - -foreach(feature ${CMAKE_CXX_COMPILE_FEATURES}) - if (${feature} STREQUAL cxx_std_14) - set(compiler_supports_cpp_14 TRUE) - elseif (${feature} STREQUAL cxx_std_17) - set(compiler_supports_cpp_17 TRUE) - elseif (${feature} STREQUAL cxx_std_20) - set(compiler_supports_cpp_20 TRUE) - elseif (${feature} STREQUAL cxx_std_23) - set(compiler_supports_cpp_23 TRUE) - endif() -endforeach() - -############################################################################# -# test functions -############################################################################# - -############################################################################# -# json_test_set_test_options( -# all| -# [CXX_STANDARDS all|...] -# [COMPILE_DEFINITIONS ...] -# [COMPILE_FEATURES ...] -# [COMPILE_OPTIONS ...] -# [LINK_LIBRARIES ...] -# [LINK_OPTIONS ...] -# [TEST_PROPERTIES ...]) -# -# Supply test- and standard-specific build settings and/or test properties. -# Specify multiple tests using a list e.g., "test-foo;test-bar". -# -# Must be called BEFORE the test is created. -############################################################################# - -function(json_test_set_test_options tests) - cmake_parse_arguments(args "" "" - "CXX_STANDARDS;COMPILE_DEFINITIONS;COMPILE_FEATURES;COMPILE_OPTIONS;LINK_LIBRARIES;LINK_OPTIONS;TEST_PROPERTIES" - ${ARGN}) - - if(NOT args_CXX_STANDARDS) - set(args_CXX_STANDARDS "all") - endif() - - foreach(test ${tests}) - if("${test}" STREQUAL "all") - set(test "") - endif() - - foreach(cxx_standard ${args_CXX_STANDARDS}) - if("${cxx_standard}" STREQUAL "all") - if("${test}" STREQUAL "") - message(FATAL_ERROR "Not supported. Change defaults in: ${_json_test_cmake_list_file}") - endif() - set(test_interface _json_test_interface_${test}) - else() - set(test_interface _json_test_interface_${test}_cpp_${cxx_standard}) - endif() - - if(NOT TARGET ${test_interface}) - add_library(${test_interface} INTERFACE) - endif() - - target_compile_definitions(${test_interface} INTERFACE ${args_COMPILE_DEFINITIONS}) - target_compile_features(${test_interface} INTERFACE ${args_COMPILE_FEATURES}) - target_compile_options(${test_interface} INTERFACE ${args_COMPILE_OPTIONS}) - target_link_libraries (${test_interface} INTERFACE ${args_LINK_LIBRARIES}) - target_link_options(${test_interface} INTERFACE ${args_LINK_OPTIONS}) - #set_target_properties(${test_interface} PROPERTIES JSON_TEST_PROPERTIES "${args_TEST_PROPERTIES}") - set_property(DIRECTORY PROPERTY - ${test_interface}_TEST_PROPERTIES "${args_TEST_PROPERTIES}" - ) - endforeach() - endforeach() -endfunction() - -# for internal use by _json_test_add_test() -function(_json_test_apply_test_properties test_target properties_target) - #get_target_property(test_properties ${properties_target} JSON_TEST_PROPERTIES) - get_property(test_properties DIRECTORY PROPERTY ${properties_target}_TEST_PROPERTIES) - if(test_properties) - set_tests_properties(${test_target} PROPERTIES ${test_properties}) - endif() -endfunction() - -# for internal use by json_test_add_test_for() -function(_json_test_add_test test_name file main cxx_standard) - set(test_target ${test_name}_cpp${cxx_standard}) - - if(TARGET ${test_target}) - message(FATAL_ERROR "Target ${test_target} has already been added.") - endif() - - add_executable(${test_target} ${file}) - target_link_libraries(${test_target} PRIVATE ${main}) - - # set and require C++ standard - set_target_properties(${test_target} PROPERTIES - CXX_STANDARD ${cxx_standard} - CXX_STANDARD_REQUIRED ON - ) - - # apply standard-specific build settings - if(TARGET _json_test_interface__cpp_${cxx_standard}) - target_link_libraries(${test_target} PRIVATE _json_test_interface__cpp_${cxx_standard}) - endif() - - # apply test-specific build settings - if(TARGET _json_test_interface_${test_name}) - target_link_libraries(${test_target} PRIVATE _json_test_interface_${test_name}) - endif() - - # apply test- and standard-specific build settings - if(TARGET _json_test_interface_${test_name}_cpp_${cxx_standard}) - target_link_libraries(${test_target} PRIVATE - _json_test_interface_${test_name}_cpp_${cxx_standard} - ) - endif() - - if (JSON_FastTests) - add_test(NAME ${test_target} - COMMAND ${test_target} ${DOCTEST_TEST_FILTER} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - else() - add_test(NAME ${test_target} - COMMAND ${test_target} ${DOCTEST_TEST_FILTER} --no-skip - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - endif() - set_tests_properties(${test_target} PROPERTIES LABELS "all" FIXTURES_REQUIRED TEST_DATA) - - # apply standard-specific test properties - if(TARGET _json_test_interface__cpp_${cxx_standard}) - _json_test_apply_test_properties(${test_target} _json_test_interface__cpp_${cxx_standard}) - endif() - - # apply test-specific test properties - if(TARGET _json_test_interface_${test_name}) - _json_test_apply_test_properties(${test_target} _json_test_interface_${test_name}) - endif() - - # apply test- and standard-specific test properties - if(TARGET _json_test_interface_${test_name}_cpp_${cxx_standard}) - _json_test_apply_test_properties(${test_target} - _json_test_interface_${test_name}_cpp_${cxx_standard} - ) - endif() - - if(JSON_Valgrind) - add_test(NAME ${test_target}_valgrind - COMMAND ${memcheck_command} $ ${DOCTEST_TEST_FILTER} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - set_tests_properties(${test_target}_valgrind PROPERTIES - LABELS "valgrind" FIXTURES_REQUIRED TEST_DATA - ) - endif() -endfunction() - -############################################################################# -# json_test_add_test_for( -# -# [NAME ] -# MAIN
-# [CXX_STANDARDS ...] [FORCE]) -# -# Given a unit-foo.cpp, produces -# -# test-foo_cpp -# -# if C++ standard is supported by the compiler and the -# source file contains JSON_HAS_CPP_. -# Use NAME to override the filename-derived test name. -# Use FORCE to create the test regardless of the file containing -# JSON_HAS_CPP_. -# Test targets are linked against
. -# CXX_STANDARDS defaults to "11". -############################################################################# - -function(json_test_add_test_for file) - cmake_parse_arguments(args "FORCE" "MAIN;NAME" "CXX_STANDARDS" ${ARGN}) - - if("${args_MAIN}" STREQUAL "") - message(FATAL_ERROR "Required argument MAIN
missing.") - endif() - - if("${args_NAME}" STREQUAL "") - get_filename_component(file_basename ${file} NAME_WE) - string(REGEX REPLACE "unit-([^$]+)" "test-\\1" test_name ${file_basename}) - else() - set(test_name ${args_NAME}) - if(NOT test_name MATCHES "test-[^$]+") - message(FATAL_ERROR "Test name must start with 'test-'.") - endif() - endif() - - if("${args_CXX_STANDARDS}" STREQUAL "") - set(args_CXX_STANDARDS 11) - endif() - - file(READ ${file} file_content) - foreach(cxx_standard ${args_CXX_STANDARDS}) - if(NOT compiler_supports_cpp_${cxx_standard}) - continue() - endif() - - # add unconditionally if C++11 (default) or forced - if(NOT ("${cxx_standard}" STREQUAL 11 OR args_FORCE)) - string(FIND "${file_content}" JSON_HAS_CPP_${cxx_standard} has_cpp_found) - if(${has_cpp_found} EQUAL -1) - continue() - endif() - endif() - - _json_test_add_test(${test_name} ${file} ${args_MAIN} ${cxx_standard}) - endforeach() -endfunction() - -############################################################################# -# json_test_should_build_32bit_test( -# ) -# -# Check if the 32bit unit test should be built based on the value of -# and store the result in the variables and -# . -############################################################################# - -function(json_test_should_build_32bit_test build_32bit_var build_32bit_only_var input) - set(${build_32bit_only_var} OFF PARENT_SCOPE) - string(TOUPPER "${input}" ${build_32bit_var}) - if("${${build_32bit_var}}" STREQUAL AUTO) - # check if compiler is targeting 32bit by default - include(CheckTypeSize) - check_type_size("size_t" sizeof_size_t LANGUAGE CXX) - if(sizeof_size_t AND ${sizeof_size_t} EQUAL 4) - message(STATUS "Auto-enabling 32bit unit test.") - set(${build_32bit_var} ON) - else() - set(${build_32bit_var} OFF) - endif() - elseif("${${build_32bit_var}}" STREQUAL ONLY) - set(${build_32bit_only_var} ON PARENT_SCOPE) - endif() - - set(${build_32bit_var} "${${build_32bit_var}}" PARENT_SCOPE) -endfunction() diff --git a/extern/nlohmann-json/docs/Makefile b/extern/nlohmann-json/docs/Makefile deleted file mode 100644 index 35c30daef..000000000 --- a/extern/nlohmann-json/docs/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -SRCDIR = ../single_include - -all: create_output - -########################################################################## -# example files -########################################################################## - -# where are the example cpp files -EXAMPLES = $(wildcard examples/*.cpp) - -cxx_standard = $(lastword c++11 $(filter c++%, $(subst ., ,$1))) - -# create output from a stand-alone example file -%.output: %.cpp - @echo "standard $(call cxx_standard $(<:.cpp=))" - $(MAKE) $(<:.cpp=) \ - CPPFLAGS="-I $(SRCDIR) -DJSON_USE_GLOBAL_UDLS=0" \ - CXXFLAGS="-std=$(call cxx_standard,$(<:.cpp=)) -Wno-deprecated-declarations" - ./$(<:.cpp=) > $@ - rm $(<:.cpp=) - -# compare created output with current output of the example files -%.test: %.cpp - $(MAKE) $(<:.cpp=) \ - CPPFLAGS="-I $(SRCDIR) -DJSON_USE_GLOBAL_UDLS=0" \ - CXXFLAGS="-std=$(call cxx_standard,$(<:.cpp=)) -Wno-deprecated-declarations" - ./$(<:.cpp=) > $@ - diff $@ $(<:.cpp=.output) - rm $(<:.cpp=) $@ - -# create output from all stand-alone example files -create_output: $(EXAMPLES:.cpp=.output) - -# check output of all stand-alone example files -check_output: $(EXAMPLES:.cpp=.test) - -# check output of all stand-alone example files (exclude files with platform-dependent output.) -# This target is used in the CI (ci_test_documentation). -check_output_portable: $(filter-out examples/meta.test examples/max_size.test examples/std_hash.test examples/basic_json__CompatibleType.test,$(EXAMPLES:.cpp=.test)) - -clean: - rm -fr $(EXAMPLES:.cpp=) - $(MAKE) clean -C docset - $(MAKE) clean -C mkdocs diff --git a/extern/nlohmann-json/docs/README.md b/extern/nlohmann-json/docs/README.md deleted file mode 100644 index b39d54e05..000000000 --- a/extern/nlohmann-json/docs/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Documentation - -## Generate documentation - -Note on documentation: The source files contain links to the online documentation at https://json.nlohmann.me. This URL -contains the most recent documentation and should also be applicable to previous versions; documentation for deprecated -functions is not removed, but marked deprecated. - -If you want to see the documentation for a specific tag or commit hash, you can generate it as follows (here for tag -`v3.10.2`): - -```shell -git clone https://github.com/nlohmann/json.git -cd json -git checkout v3.10.2 -make install_venv serve -C docs/mkdocs -``` - -Open URL in your browser. Replace from any URL from the source code `https://json.nlohmann.me` -with `http://127.0.0.1:8000` to see the documentation for your tag or commit hash. diff --git a/extern/nlohmann-json/docs/avatars.png b/extern/nlohmann-json/docs/avatars.png deleted file mode 100644 index 0a2522187262e1f929d31e464585de773b4dbaaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1700008 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

o=3RsJLAGFACJKD?UV26A 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�wOB9!!5{OuMb(q|1Urysqiu`Y9G4bZR0xsUO}+r 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%0A0hbu0JyXdnP7rTKg@o6Uu_x4Cxe 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�^Pv{QPEc3(B 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

VKOe6^%+fo*G(@iNO61DSA4LvS61h-g}t!L(G; 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
ZTiHez_4&--o9#$@AOd`{Y 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 z%0A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

vW2KFDuLPy z5mJZ|DaBgXwodQbJ9gr+<8Cbz02P1z`MqEL z*L~+-`^3NLs4DaR`^5n@aTec)=%FIcUDy@w%-upZ+vMe)^ z_CBAUnrOG%M7VX^?Apre*x1;XEnBQ}wOXA6m$t&IhN=Y0xvL%ufy2thf%KCSQb-y} zi9$5!ihSq3ni?75S{-XCjU+hIJn*4C)3?q_lBy)8!JnbT;7I(zJMosSwz*|TK;rPa zC;p3uNM)PBmmhfI=Go%MzO(+J@7+DVvk8oZ2zd3^126{>uHw#BUE=uo*uB@?apx^J z96vs{y3&bj(cu#(l6vBOansHF7uN1ReCTAazgDj|4<9>z=-5fElg?VVpO-o@QKUsK zm~sY%jsSwnx?=v^xh<0uXU@zigkHNFD~w5comEYgXZ@+k$zHEBJvFtqvPK|r60vX; zMR6RNNQIznS*{mJI_D}J>(xCFMNp6sbyeg=h%&T-fQ(6##z=hqTc*yPX`=GyPW98& zyzQOa4!+o3Tn?#X@0p8$2&9!Bso!&B=zQrH|I2TGGRt$s%{f3{*QgR+$B!QVFaOIA zzWaT5f5$)hg)jW6pi&|TaP=zy00i%mR0v`W5z*w-q__T0|KyX~wr}0BbH~Es>cNB0 zzwqLb1GnDvCm+8*t)*wqoqOq}mkt~_uyuN7s_W03n=jZ?L~$Gk&lL}sh!c@8pyEX& z1p+2Ayvp>1W37p)$+PE{y4~*d z^mI`aS(c5C)M1d1!Vp6AO|EbJZ!oxu;~*iRkOEbOBNdVcA~d?Q(0%IRv$x+f{bL^) zk7D%~-{?Jaxaeg1pS-{L)nsbN?uoB_<@C!h_8YMh(2bUI3?~+grIj@zb%mJ!1QD~W zH+A#Pt=oR^|M-uG7Y?r~0w1a(oi{PAhyn8^PolJ{SYSf%RX+0Yp+k>9`Q)D6d#9$i z96fg8(I=i>ZufHQ*H%|=LPThtkD@s5XZ2R?+|ts_wjC3bTfFD#>FKg8I^C{PD$DaCFJfbC zS=MT`wY4>CZ5+qJiy{Mz%uJ-ir5zPT28jR5{k`gV<-=cfMt$WQxa9B($%$Zq3=km_ zl0j|IXfz5GlE(RC`D4#yn6DiE?SKCMsh9qrKQQ)=#tXmyZ~x!#ojQ4U^U&XYH+}ne z?15IzjHSEwj5ODt{HsrV5)nnN7-vkil8lVB7L(hbekRi>Ox4M+ek_mxAdwA0kwQXi z%aLaNJ@0*2zt?;4p~sh(mnn&vfVA1QYxhepygWTUxntYbTW-1K&p!F-URj(uduHd> ztqTha%(8v!mLn%l5&-~O>qcAkcfReOlcyI?o<0{vh6584p|snb>FH@k5R@#>7S5du zAs|wxvv&CK;byZ*ME!o>5Y3-E*X#ARZ{L3I+&Sl5quxN$W$6HjIe@^WU^t8-RBE$i ztstpaHwTC)tzG6x3C0oXSNX*$j;U4?t2YT5ApkSm3&X5vsH*Ts1XMr@ltLYW(Vz_( zEk*^Sx6IUIwfg&i{JE_Uzqn;;{ILfgUF*6BzVVn=^ljh$k?;EOM;qyZFF)^gOsPYU zKi|ztz$@91w#pAY_slat_}bN5d;ei^5GIwYKMF)dP?dXODDr&Ip6%~>``v5Z z{ujRbjk0tADn?~Ab$i*NqbC-Y7PoHOIx#tQ=G?;W-Ftd@zvySZUT4>i?Mo}mO2PPO zV_{(>j-$!3k$1oAt@De^Pe1z%kp`?VbwWs`wX3VElj9@a+BDLgPG|eJ?PpG%?DhJ) zckfPltFZZlaE4Q+YO1;85(0k#z^4z>!%GiYn98|5I?!9K?W>E@ARg_gk z8d0IvVhrd=*No_B=k=32_O!NcRVu*#>#u#_E03%nduFi&fM5HS-~P(y?*Ey8_AmUM z-!&DjJ^a{XB0@-46tjVd5XZ6eaPCAq6eSJI>aKbP(4-JB(h3P;W4`-4KhkZt|LVRk z6wV`|_n-q1sjQz*O-vh7-Ml<{r1hO2djGk(Ii=Ok zUAvxp@z7TudK5JY3kXyR`#4FRvjJgle*U`sd&e5}rA{Hh{j#@h$5uiF@a;|y2yF;S znvgL|E2~60j-oOzo6SbM9RMH%1o5;{ltoaf_QT)kJoXT!^~+g1XiSxOy7&VTRLZX` zpZk+Pc!kG>N})EF?XxbjeE(-J_o-N$?B28eLIpsj0TmFCQb0zO2GXtVQ_)z`TP-Py zdSdRnrM2(ur~m!W{pV+&KQv69$U2E4k$UO)+5h|J|JVQN*Y`!WiQj(lC0Hl+xKaZ_ zSf-|??9AQw{n_&hga@T;SHB5Vv7WFOBr--n`0!(oJn;-TAuq~}~K8lPGJpA~R z-FAmG3V>47>-8d&Mp1$U)_VpzbnGM|Ubk;IOZfZ)4;(pmmM97#fS?E~MF<0Kxin4J zN;|i>GBGtZzjE}Y7hggW=Y5%Fqhrl(w;RWCS(f{+x#r~A`6A0h@M$`-wzdX59T^crO9~A$X!0nY5?BxfPy$G}>J?yE4@n4=m-fl0o?{=PD0a>b;USEG!o0Y&h=>?a8v}~C z3?7{^i9&@EKmdpizIgQcL&t?Z3NZ+Zguqq9<3V?(;E5K7Bf{Pt&L<3THjDh@cP7U+U&nOf~~Pn>RGx zr0BfD;hWtRCNUxokj$FU=qQc*884s9f9CJ*XsObwk+JO5uYdMFBD!2ury}k9@&jMm zy>nb(n0dKEgNRsQbR^w*`-lJd^If0ywQz+)ly8AB=z6A5(}49>Y2$&Ibg&i?wML)- zFyJ7mNJ4#KM{14wXmfS7N0b1FvmP+Aj_X=)+qq+UVxrY-J@EC1tcV&GRaSiynvI6D zE{dW~yOSho636ZCs@6J+3=!F~44#?UL}q?rL2Hd5Wm%?a;+-vR#^OYk;!}Sy?3RPb2ag9Hmdo))9rowQ-5{E zr+;QffOmY?Pk!x%+0`?rG$Avuqr$Ix1wcg#br2C0t+aC%Q4wHa?O=svpa1|$7+J(x z8)^NPI}YsMv-9Ygvnwkvc<-w+-A<={!~VT@-gdLmbZ&0`)ZD3}$O5AxtrQ6`BKZ&i zv2=E{*;p!<=H}*&f^MfhF*ylA8gbNH?QsZ^R&f+9E-sFYO)W34)N8fie5={=&i1-} z&&U;TrMl{$|K!a(MknKu@%q}54eYn?8QHf>HJa(|=JEgVFaGzhKlnHReBr(?0>G=T zO$cz}%!&*Oim$+^e2lTF$phcbnjcXthS4e)f4a zEP|}6E^T4cR@7?NCdWt5&CdrPrl&?%+8q{ev;t((u(Y2{0B~)2`78hRfB*20t>~M-`}v1@2DL{I!;*-rpBIQ_ zo%#V_K+%sC1La_VB9-U;eS5bZxaqntKJc|i9(`hReB|BlxHpLnAQol5fA`KiZn@=` zf8{skmX;?|nJc#Ys+qtWphoxNDTY=Jhn zE1mq*a=wrsePQldxAndM@;Bb{bHCcU^}W;M4I+F6_ZAUHnyrt1*SCrAm4t1}pcTM_ zfAQOIzvj&7w$Ts(sUpTge3J@rMJig}hjob`*bkug`4MP8KF8y!U^?RE0)+qcck zPPIF0-n*6MrM=heSXo)FxVnTZ_!weaC=h;QQjbSWz}mn9ShlqKf5 zt&4^Y?-e8=igoWkAJlGu|GXMSB$*xLmy<8%hADWtwrQ*?|JuIKlFV7SC}iN zGLl!@-BVBf)wjQQMAsukH7w-3`b{7hV!pK|=Yj_jq{<*2(87s~Hsbfc|D6v$^3;nj z9ZMp;w7B@m&wRGqDdIFPZ8;4GJ)!cHZsX zxg#)t{p%0UZrhnU%<}y7xidFiw?8lQTD|T(m(Is=-0St9f9}OQ@4B_#?Md)EcI@>& zJAV9>)=AY)h6WrVmwcBp_q`5<@P@|(fcd zr=L&agjuSpF~q9H1}dVsUf;EQ*Vi9<*u*t!Eh%D<#g&zF%gc*POZ}|qb=p9Hh)V0y zl}C>rX*Qetue~O4c>KYa2sPlKDMr8m7m;ZqN(jwc?})d|qTU1w@hU?EO;pUC?j3w) z)58%lSX!T58Q^gzvYd@0huX|+mAikd*-RlcR&c4{H+}uFrFY(7Zo2)h2OoWE1KHda8i*LmTFp$1kC;@4?w}z5%9ucvD8F_!xPr7O zFq}uV)}Dv1ut*iKH`+MwKtO9s>S^ioKmGI1fYFgj002OURK?lvtUq~t?$p^Ot+jK` zM23i5S;TRiq!F_d;n}T|FFt=vk*+$61s^yti!3fKDpJ<=S?uKG?9x()MT8N-D5aeB zFf@2@*tn92s-*Ho--XLu3V9=(q0AHlm-#C{DY4dSdW>?WZAeyLa1tyu%c`r zRkdD}DjH2FF4kV==lhwDe&RK(U#bnVa=f8!V4^8G)(WorCvFaGm0lV5*$ zQIS5oSpSX#w~W^6Ygu;Xm@5DYCGg&xZa5ad>(Bn+aDup=k-m~Xz@=hcS_=U2H?!=c zGW1a!>lu})*f|RCswSjFBut;X?<;$E?>%(n`11060MQ~6ywU~$k+@eB_uc>HwUzds zojcAgE)qerS!aNDdrgz_&X<-N^jb~S%Um=h093uA)`R%W;0MIdM!bjJ zJJVZl8=+M1{n3B>XJ6|*^YxVvy#1OV{`r6P>t9v7;;mo)+KHE+KhlgNPk8K@@4WZ6 z4}bS}{r>O&0V$G8>m}aUJu(15k@aT6Gk4sw<+%qI2E3);Y&i5cRrITo=XpicEP@#9Ew0>Ge29?{9uOD9jCBc+PMMNxddH8YYhJMV2?R)ve5ZZ}D4#+Zf0#VT0F!nQ0q zHPcg5{a(*ntD`goFEU^PANF4*rF2=kZYQg1@K_k2YDhdJXAfb$4;+h-(pPU8&sKm4cv^Dq44Q_FLYwyQ;H)6ExgaHw1(M zD(-kda3C6(1OqdR6JNO1wtwOAm2$DG0FgLr>#u!jZgHWs^X-6@_K4Stq5!MegU{02 zKJY*Mfg zATmoeFITB6V62kCB!q;_fe1qgN-0vH6ltX@60;*mPk=%bQ(5L!&uu~)^4}v6om*T5 zr2)h_Cx8Gdut3%LT0n$Fq?h#pM3Evw=a`0e{~#v^004>z073|K^*1OP^uL2a-#-D5 zEC5PS2X^R-D2`7b?(00BOI|4~9v9spPn9HDYbeDFYDd}1u!t|k|b89-Zc zjLMrLQ56;d_~3iq`rPUGPyTXss&S$`yNVQm`I`%ee)P#_Pn|gn06VtL-gWzdZ`yUL zw67Nc=L6}1q*Zfm2%&0?CZXz6T2W|KT)6>BdGDRl;sXn^aJ^P{uJFOdIuVf|tca=x zCq%0BUO+-%A3Q1(hV)p7$m|0Hix^|FtYBszLKu4FFi2KZ7SX`RmDf-9^fz%-80m^W zMx?4KMge36!6T~f>80f(XQ3>srvMe%m{noWJ(a3VEo%Xk(8qn(!cW|`cY^M12vB9sASuGi_ECz4NNKE~uRQFW#~@XM5CjrnFCj6e zw4MRtD0a?QvAhrhsme5oCdE{w%7B5`Az8RSPu&0#&gD7?`XqM%K=D zf9?Lp?Qi*+7w71MKQOD4+L!LT&$+4%%Ii>riiR|VFg`ZkYScNKR|=)H1y!7Wy}zeO@DiB4^9aPuYCvd-!s3IEjR7DK@jg^E zbydgFO671}2S60jpn3YGd4Q{Ph^&Wq1EC-ig9tEigyKM%aTmr_M&;fvezE0O2=lgMRhF$A0Cv{^+$!|N3yw|H^Ou(N`XP z>`mT)){#=CvMdC^SsNLn4IowYhKiIL^1FqKx)@*px2o{{5`y#2`?6k-_U_wt^G!Ey z+qQMR&1A!6PvuDMUgvO09Q>2*D{uMee-k%I2@;dm;*h`x8xoz!h@I zIrlAK0#yySK)A9ztN9d-w*xJ5B`h) zaKm+bW+un-BAXh6Ywp-$t94np^4;Im3h?H6fnIp|$O|tYc{6!2#DGXj5ecdgBEota zbu%YCkZ%qZ@_xXU%7K+4Bx2@4ZLY$!R@=61TT-vjFP=Mf@{}z@#mYp4MPUuf-hDf? zsaS;>1X%_E?5cMdDPXaLY_XuN=U;FJpeshoR{P>mM`lFxvyWjstGe8J{G5{L7IIfkM<g9RLsktrdYF5Q|4<7p&5H`}Q5JX2V(c+;h(@udTJ}BU(oUAP}t0Zo1)`J8!wk zI{(6PCq_Xm=-eDjN5)eh000N+3Ai#=K5k(Nl0|o<d#e@aC>&t z-o6)i{KU`QMH3Gm@=rZ8_A?*+&SvCB_T2d77e9OU^tqKz-@9^tVTlyYY?&nmJGO0| zogTgM+kY^dJ2bO*+s7VOC!at0huzj%FX$%T+3!65_0viuaG)@-rQV1FEH1Bn{L}Ye z+2{Cczx~JG^Bo_YnjC+<2WqXW(yEHf-#N#ugh^O2lCy)@OVvY(nUP3oZ42w1+qZYu z^z>A_y>|HUVE_>3G)&YjdJbL16t=V7?!GjN_v(`kamZps~ zs@Fzat)?K>lEi3J2GLr3??I%}koE9CA_|{p1R+vy1oH4Vbcg^Cx_yBlApi_4Y*Yf3 z=~AfyOBJ;kD25p{iw`JOpCxkMQY{&A9zOMiY?-~`cRsUp>|ifR^Z6aomUsW;V`udK zzjN=tv~~N~+8_P9e|_fji(2FRKk%+Qe(>j>I7xMt-FL{|wD(4%`tt`*QLlLXiz^~H zd(Ftg)}6f*%dXc)2*Opk_Vp`(weE^be>Fb-nfu>B2eCn6A+j(BkpQ9)l-4>nHZT&3 zh*GKwi6V+{$ou8^?lJxpnx05HenlYv_{ny=JA_9;q_(`PK z8yJ5JjKLR!A>;rF7&dS_FbuFzQpJh@Dr2RpQM6S!4p2)#k$^zJ&UN~a{?*aHSSW6| zbt3B)elgEu{joo*q3JpuOSATUA51>`Uw`SZ?)x$k<%Rpr-~63)cK6}t4?Ow}Oa1P% z54YL6e7UQFH!RHDJ_%2Ej&iSuTu5M$An=B|L~hyx?@EpT@&_M(z5c+^k`@6_S}UUg zNFfMF;IJMv7}QL0HjIWXx0HSNz$?iwzO3>!ur*5 z=yQVv9JKEyX8$eV1aI(Us%rL%Ka@}itJbNNUBrx3nSTQ)2!H^pLE)}Ivty6n>Lp&64u~K#;vm=t5LgHUf?{Fs zgLlBfz*?K&eItq9^RD-fjx|5`#jhSddTL^9%p}HHi%3zVjrRTEW~ZiZzVXI`FC1K6 zS~aHTJtv9Ywr%^^$Y{~)pP8FqUhQ_;ZKYMMUK3Qz90ZHpv6LZL=YnUZssRZzAS$Jd zF+B9!hC#Xj!t|}M1`HU?*PAo|2v+GZ1ONh|s!61X463~Z00}@)SP%eEm=OYy2x}ph zV39qkn9HDvfVJ}kN}=(BQX+Dm*Cw`)PtAs-XGy6L1c1{d?vyGxmZA*Ki7Ul9@H`;U z=YSZ%I|+gnc7tDM6zIQ!^sis&wd;TgiVO@Pg`|K$gd#(VpkNquRs(D8mWlBXzVF?0 z=g!{u=U?(cB3&b*qTesdLN^-0hb+s+$HuPRzwhOjUmhJ93l^g!3IXbkI*~qd_{iE? zXQk8E+UPjeii|ONo&x{}W&$6A^S)x8uksFq%n)Mm9?#b(qsRau_pKoRgB&exY`291 zf>kWIii!fP_Ybai7$}QWQKPEkqi_He1gc2NSP(s;B1A8wK`R2o;7l5Kym|Rd@53K{ z`~3X5qbJYCadg{lH@xe6ez-qHGh5PA#}~v~unxQr9E1Z_zDMxL9wk)3jY=D@dMprE zrR9jstVji65r_n;ChQecM+kn~^yJ-dz3Z8S&%JQy(B$-Vd#%Hs^Im6mX1dX8&CQ>+ zws6)@?Vd_%YVYoux7>BdnX?PZ=*J#?`qb&Oq>WOTS!be1nAv+EGjQiWM93Y7(Bt~HXg}^~Tfxq*XbY^>_J^FM1_}(AB??3(9=bw1=Xa4VB|HG%6 zJA;Fw2-c!F2@Zk>78HTtK>|nsVT1~e!T>C<9S;59Z2Din+-qJ00&@UmutH!O#Q?$* zAOzt`0g_nXcFXloJn{GohmL&k1Me$}Vs&vjN#eKOam&oi^fS-Cl=TZ`G-+|J+`oUP z&FzaX9)ITf7uwyT*X_k=qI3lZBIcm97G@9(o^gQR$0`9VL<)snW$|N`{Hn}g5vhDV z6aW^ZbO66eJ;0kEmurUi&FYg^RiajEKmrxac3|lYGO~aGj6g7KXE+EG!O%wn0tf`i zB7lOvN>*x6DCmPA212RQVB}V^FaFWt#nanPuDbWWfA2?r`FA!(Tr9;A#e) zT-b~A!XCu}3owg#1RhNMA}|1$%9~Au{Y@BwLmb6|#MN5N!os2n0V}v=Uglf2&WwzX zz3}`CH{Wtgq>vT9=Us32KIlk)_3ICvIkQx2jVOiAm0M?~eZimk+?R_|Ry%!Tl-33T zt+h(&TCLXWb^!*~OqC8(nh*s+s#eiFOwlZa$~G!29UxU1vdWndkRX770s&A6 zhTTjVJOK)@06+7^Q>v9bM#pOJzV-b-anCRO{yeXicCqWaJqQ+p1NOiS9E2GlRJL*z zE3f*+R@(TQ6yU${^uK=5*R}`A~k->bLv-JopgmwU{|nX$0p(6d@v*0a^|j1elSu z07gb7+SuSM4xn%ADE46#h?s*?iU5c8kU@m#3Q{8?im<9TlHGgIY(jvJL?O%c$f#V= z(32nt1R8L<4Sifdkg6Fl4x>XLz%ob$8LDozSMXW{W;wdvk{+xPxIUU^3@iYrzR2?L_R0R#wfSRgVSh#Wjg1VTQ9Am}}K?}rRfm75jT zXThqSoK{NM84}VI$5(xmyn#V6c*$64bp?hNf`M)fz{wlR+y~1e0wJhsry;>#^^&M6 zmZ@}r8No9sK!Fel6{}D(e()V*y_NP8pFhK$-uSLDa?H*l1dzepj{~?~wG>y}pgeRu zK;$(r!#(`?)8B;0_L|0PxinU&CO}e(5o`!fxGb%6ZeWLKv)b*SnP2GJV1pz{JSb*I z2;KvLQd(&hDXoz-ATj&0go+Pc*g02`&sDR2W#A0J7a{_ploC{;3&s$aqw z6P&M%)(`@Sunn+fl*Ka8o~@3CvR;-m_!-_X8uV|@P%3iH zDvij<-V;)snkqFmFhE5HWFRz{#YLC{2OqRi%uGrVs1T$K9*96u05L+t&R0Z)frXGz z5D}FcbmFMkNCBW~fm;2#8>oIN^A{_Ns9G7I>W{4yqI?TX|1dP?2L_CQ49Ngsm<%4G zfOvq3*npm(fhAr^KSPxhK&%*Lkf>S^gewz@1Vq3K6L=J~t1p}`^PD({wHO41Q3{X% z0wSRz*+m!@Y7Qc>1Iq_Mu{WQM8P+15zidvD9K%!_`% zEQ-)-MGI%ohCoTIckkYYWP06RKQB7HqSwjWYx&H~I1#__@|oBeMBcu20)SULuBvzn zfhV?XQL!<`l!dpp+}r)fupx+e>GZg9lWf>!Z36as6VB9-Sw9LGvg zWw8ei-g!d9EJTFlnY~g*DHTPEG=Wl6Gh0LvY9c`r@Xi%QF?7|aEc5Y+){QsbP+7%Q zc?N*$s)B0z(RVSxeHK+v_3q&1a{Oq8Yb zW!5i!Y+^KJKkE~e;*kW>2+?bA93mQ{5vyfHLg3ga(wYG(z-d+QtCS){#Htpp;z98+ zteUN?B$mpK^>UFYU+~`r!v8uXe#412Ir*!cLEu8gyWAN-KtP72b7-w4q)00!Lgo+x zB80#$*b1$+UbGcLKxD*fACyYns>1FN8ugkjxv;)bs|W8m1Vx(2APO@FFIq(~@cn=T z6Oj)=X$n4wz{a*y%uIwLQvK)^Bpv{ONP%L{^YhDBy#fd_Ge?RPDnvjf5O^JT0~_ql zVMxBhpHm3I2TtR-FAjZ9;(f51KtzOaw2{OLVQ}=DdWN(FanBL&)=dP*=9$3&}=K%&M+xGg*WSg!qD^ zF2CDm8YKfK_7#+BgHGVa9R)xUa`5Xwf9D3BN`}aYK~kLA%fJ)~01{jvLJ(p0f+S4d zi6}*67MD8RP9B+PZ7rXi8q+5A&UbpbQmR%DC+)k=b(h)9vxFfuyQxP4}H zbnE!k^vb!jopZ-m+nM#UZTs#3=h~e)Qc7tcLPA0a0HTyqTBBe!S#n@y5CIjDF^0MlM7v9O~r;JSOiq63Va0+he!Z}37!zy z`>GbsIWHmzs6?ZXXOBbyP{%1@R600(_~e<>=k{H*e_^@3xVVrWU!0g2@Avz`dqk+! z>h&bev(Ap4v#qh3B0)`|N~&=nLJxv~TIpb21^+~X5M1>utalP(2$n>V=d-6@w*sJ! zUqM1eMEI53{ver(5%Y2_4KB7^?FlIUdyK2 zH?w|T=?vAoizNP)455uzHp)~1u__&@l=03ZLX~SnfDnQr6k#8Hl^g_+AOS&?M#l!x zEH39KPMyq)GVABYB*#z8b-R6|(VstB(_6ev=bc5Gy9|DGMMT>%7jDY0zqX~Pkb?7d5KiK*+L)yGIhoe~n9l0D%aqVHF;T=RpY)B65Yn zA|zl?ickwc;E?D2`sj4j*uvC};-pd-QaXwOL3<1~>y|`~Rt*IRQ5#ZkZegt}O@`q!ERQpep_ypnR*x2!K2& z60AJJ^N->ZKIDxP{xF0w_?ocM=6UV1zJYW3LYLtDJzRJ~x!gUhZ>#KzDkfIJyqSYS zQbeV5niN*}10;aKK8ykaA!stqUe|v0tIt|bje3ftio7gKCnB5}6~_#aXBjicQ5+cq zq=Kk^)+t;st;Kn^GTU?8w(p2zBjNx-#L_xN7Xv8`>}ilJ8dm2CMj&XjANl?dzOEGj zg+piVq2T&eNc+MMQGA(BTz6Ro06?UC<)yV#Usk5RStB$7RAW2eW9nO8`#q6PNt-yv zTD_6h8_kiH_ZFne$S4qC@PRon2bQw1uE>&lYyW|_U3>GpbTo1F@B<~Z#>XdJnL~G} zG1BPv3h&+M#F*9^0JPG9C4k+1(>>F(Hy?WOk^4XWS5JK7q3x5?rU#sGxy}NTgXr1WnXjTz1dB za1>3HM7ngMwJE%Jp3_<_t*3e3%Zk2;a1dq=Ozj*(X=`b$PAe#Qo;Kndp;-x2_cPNKNyQl4FEP*0Mw+@S3VqdtW2Fu9WJ8) zuTJoN(J`cuB+{BlJ14HR03lQlY><-;fdc>$P|;u6vVHHa>)!s*6VLwAFa5*CwRRfO zf$OjR(VzIyso4?qw#=41KM%n$D5Xge2?HRgv@x;c=1=|cuYTq;pL*`axvi~qq^6V} zU2bQ9v}^nL-FM$U+DeWeKKk4P4}b7&H|om&6G322qLmUN@j)vkAWT(84QW_7yO}s% zDBqV^F)#V_f}<{H=x=_Z&8!`{j#IG*@|+?S}F5>YJ^h;;3{J!#3Dkd5S1W+m}_r)_uLwN{F7h&{1?A) zuH8=?jVPX+U$wvR?|)qb{KQZGY*VB`Egc(ku^YTsnH%UbQ{kH756FP-KuxblYG)-5I+Ce(*nVM4Nj5eNcfh4~Ai z5)2Lj5d#N}jl%nf9)Bz{wJ>D;1J}jdbBfyjPxmUPLCc zjwQ=bIMPwC^hT*t0+Fh0{wl2_Bo2azAOrira=vQ*vQza%zVIfF^5s8zjUK|qXSl>e zxSTBn03hq3wkpSj2+T|XA$S1*_7zA=5n3(PDmgUBzK*9Tar6#|2Zs#^7ht6u?>7~-I{QA$-#-T-8a1H?`U%)z%NrdO@`<^SKW^!s_{ zii!+TD}yAdj%FvDi_42Snls0aeeU-^_JMD^ckBKe3M-mR0gOz{;-FkE0;2*B08B|7 zm8Edtv#V?Mv60D1WR$`di`^`+(gw8_rGW@4_ne575GlnR236yg%5r?-@#jkC zj4|Gavb2b(NEd}AL?1#$D5kZx)>a_gz#(u55)|o}%vzQu#`wG&AqN0qL6acjqmLb$ zn>%;U+YZdkwtBfm0u2MFTvK%t9_Hheb0LWvSHA+F(nz8estT8a0D>TKWVURXU=c#? zithf~-+kzuO5%jIFWa6-w?>oY#l6Wmvw%+@nHw1&pBk;5Sz}a!h@?Ox zC{&1=MR3p@QUjtwB^6D`>oI07uzy}fD=s?2W!&G(Xu?I;xZEmKQ4UvLF92wzy|YNj zevolzW*`Ri-Y29R{f;N9?cBLP++6odUwri2K6H1ZRc9`wny!?vgvuQxr315b zoTMYiPApvY4H`I#P>I%}lmWqN;vb-~KuA$={nnPfv-{tE?Y@2Qd(Uk%)1!C44A_jH)HKXsDRjo*a zz(~C*&VnzJC>m`xmsfiWU7t&&qx8D%Q=_8;ls_U>oW^maNikrBQ61L)0Sku8ZK_(V zNLB48Q2EFen7G1H4)KuHUgv>b)eFI@GVAw9};c<^iYzwpA5Q^yuhsouzF^9!H9FGZP$ z1cL^ADxfh2%Y8L|KGle6qaHci8yjiW)0Srzv9@$K->_|V$ISF-io&ETXoe7?)*7Hh z6s^Dq5e^_m01!l9R3WnIB)#D^2N~30T^I|M3+$f_Zv_AV36YR!P^>bjQM<_ZxX3f! zphY(0D+ki znaC)uAXMv#)Y7;t%QQ{3G2~pVwb&4>CsK_@ZM*?*d&~CkdGE|M)8F-f{^ETPJ$bS@ zHrZ;ntS#rxEVtLXjTUkU%pQ=H0_Ru+0{gg@E-vMtyYInv_v)_*W9PkM9cvL*TBVU; zK}HZ^Aqie~-*|6ha&Ok_e)cc#fB1=)lvdtn3k!2fsiK#U)@vHMQHw{Ljeru>lJVIo zZ@ta>K7?42QW^kLB`)34QB%e*ZJlhTI{1K%Mq{*|bURrZ8}_ado0-u`@m&(oS|fTj zXve5Xp$PM^{-`PjMmYs@Tv1+tbg*k@wL&L7DAPlw) zMb8(dgc5{N8yzJIsH&p?fD3>`a!C|wGi&PnYa#>=$N=3yBEN!K0SF*yAsbu(5keo> z5Ftm}BulH^qessuWs)T7_q$nEYHbi0QHnBS_DK>OV~V`cM2MvI`3kYJDAFjlMXrV7 zIMNCU{k7NZecwGdQ}4ueJJNsfqwhR*`je+u+DW}e+BoZ;c>Kk8zWV@z6$whKDoV>D zI*OK7J0JhV0}BfU2YuBm01)O`med=h6gt*OHUvZ=(%$jJ^q!ghcL*e3_}m|zKC@68 zY1RldgoRahjIq&1OFdST&6;PQwkD8tl++I$J0{?!(i%V&E=%%myT0|BoBz%aKljTY z(W|H0YH#Y=0=f9jL-Wq#XBd*w>Hy>1k0XB zvvln)^WJ;*{KlU>+itf_s&?MF;pZtr@o<6gpb={Wv zRj&Y~6|xjXZoP|yf-n(*u!xX^shxY0#uj9E-{=17+_~k<|_) zI{NxwynN$5v$e*nWE(FUN~sO-g)m_tdl{_ zE|750X?=A2%_?dX{gt(qZjn1yxX{hV#-mXawv3LjV5*^}XliWq9e3Qib+Z2O6VI&l z%6Gr#z}c1MPPeTTA~Fj`aZ>iP5Ekx!&z+Clw_<~|^DeO{We}9N&NNMtS=1U3b&|%l zW)xc!C21|;VDnC9%ThSxg)c#qF_DP`!4?HxX4=0K~*C7rZoPbAd zoJw*x3Sq2ox3=vJMR|a(kp~Yye{OE6R!<3{5WEkdwFxZVyFmhhIZ317eVWEuma}tJ z{!jqoIL^A=(TUMW<4V7WfKy|mty(I+)S?sPRUCjtbJ)4PHZxf}d@j?mQ3~egm$q%2 z$TJ_sN*EAz5;gwtw?Fm37oV7zm@EqyC#un`U-eNSg^_cmVn}r4p#nS;6M2#P$d)K= z3A-SnC`%+X3XZR|dt#b!f!nu=2&MAch%l&eH>jSHl zNJZ3zRb)n3ILOXxC;s05>#nzd-)y(nX8{?I2Fmar29ci&LPl~yFp5QjXFvi{MtIEe zPOEO7D{nl~xq04>A7AtH?H67?@#ynMn6&f3m4)|AWJqi8i%R;LS(vS}aU6T^L?nu0 zM0C#A;u^DX2wLIl%BuJfBerT$t6n$4?7Ajm?+XMZA0}IRYCI7SAfS}C)*2Hz=Z%Sp z&?s74>A&>S;n>8TPF@s#(7^n!Np7#?U}omPJRlJOVFDEPt;uN})qJq^dh^=rcNaxZ zDa8SwI<~}VT(3t}2Qd=pt#-ezL#9ApLt(DdaNx^zMj4CXHs^Sur^F`z5Ly*Jr zRT&0AhapG-Akf_W^lv^5@CHyL=LZs!s+?eY|My?_(Vw}dm-U5l{X!eUqZ?wcgNpa_ zS|I>HF{44mdccuhv1`@UUpzB?uBYcaS=Y^#@TF6WYjLem#)9OoteW`@%t5V{(jua? z7M8%?I#=~E5$421u{Ji#4XNH*n|-K9v~6N!$JAJ{)+w@*K>~miCtj%l5xKEeBEle~ zbyO5ZQRGpSgup;KYHwXxtEH1ulTj4)`n`60t=sKh^$H*=;sBY;9S31xj2Sg39mTcr z*=teNF)$1M$WQ#tZFk-*E+mQWy5gy$XC_9+YcV2(SYr|!XZ!PK&+XkYbM3a>{nh!E zb4Sb0s>_zduK2ReuCFM>Ndj!IyKzrrq`tJgl;<5EoS>RtS)0%74e$7fnY?qpT|^OU z5=933#leyB*sXD#N*H|sRV018*o7?U_IOpA|O75db2+Ff_?Z4FCm@}08 zvPTz|PO>Vr@q}I!k`e&teMOK8$bd{r#ZgS4WgWH4jDTsHmi_){nvOSXQo3z3Q}@2* zrs;`s#4uEdF@%CT*<^Rv# zy)!<~HJGCCrG)XZG}a+W)aYnKB6{rU7f6kBZK_{b!U2K}Ng*MTQc5YJz_|Ci+js5Q zE#5~;B@u!1`}g1R4}SjNzvDyS_ZOf0($}6}DQF~4BIhkg1xG>WeOcN;buu$Z)j0;> z(&W^-b#cMedw#dTT(6DY_q#84+gZibBC=tMzGS@0;~SLD$=g4&@A`X2x}5?DH)P)~ zG=9!6P}Lm*18DIq*7jDfX|-yLOKNd34WVE9IYlo8d!#7Z?26!s1*{J!sEGs=ASn_O zK_RW2cZkkNh#6B4gG?L}p~7HpCCL+};5w<1!CNFgdzq)mNx>#n`E$V5@%gSzhaxBu8b{3m<%UiZ1r zeDvJf>*wy&+%jtD^|PtzmeDrY(z{}GbhOhePoFub z43btwZX31uz=8c`(NkI}REmT{e(klpl2ik+F(!^8btTDJ|GI`aVdsMd7!SzAs(FeXd-?lY_MyaB(M~|M_yL7woj(wdZ&_Ga{j)#&eNvRh z`pG8_E-bD6&VT*w$?2)HN1t0b`FQc%W6Mj6zRZjmMG=EwU{FSe&FcX!j;;*fZju}J zJ~T&09{#Jjo8EeQ*R_-0@p}3H1;+p&LYx|-&3QJc4S51MzZ){k*kt{{J0`#WiF1w7 zTGd@){Z!}g@uHBG0OR6^-~X0|`mO}nR`e&JYBZ?SU{Tq8;z{l-BqakZ1NrrGUV zjZs^+q@=ST?7UBs_?BC4`11$9Q7x?k?3@=4qzKt5#i-c&V#nry*H*PEyzZtlcY73=3q4len;I();>WDrRcks=le z!5bB$qSovlO%29wg^m+pBw$qa<_yWHQ^$|?dsa*EAW9Gf6~V&X($daOYe!}x(-<8A zW^D{95@85IH@57${+^eQFQ~P({Wl+IOwQhZ=Uvy{_?CKWgvk8XZ~f}CPd?skHm$X3 z8lOCV_#gfEKecoB-gmz9-S2zf-`;lP`#Q_>b1y$~`tZSWc|}5~s>O^k2D0eBXT31_=8_~N~fVh1<86n<;Ls*i!w4Y74N-q^0s?-Z{Iyt{SKSx000Qw`JQbL zeRht$TqO7B&w5Ed`1`*90}~_D#mYjye9j02hFs}mdG}=S%SJ7hS)o-$5?Z;oRo@t` zv=vq+a@HmyO(nCVQ76lLwp7B`@1EW{UO#Shq#*LHW+LSkh1%BXiPQ6^EUJ1OL&&D5 zws^mwRGpafZoju?@_qm$=gXRkmsVER*4h(eRFuJb@0qlz6_yI?6@iC}^zxE|7}PQ0 zri^8R74rf+_9bmr5yrj%VP)!@9S$HuItBptIib2tNu(y7DpMCUo7V&jb0{}%sH{?C z(OMH>#V2NxT4VBBftYktnHGrFh@cFR1_)pO+~=Nr?4Thvmg=$5dJ>yjExqZ$^^-fc zIju8sKuQP*frUU25#x#L>yx)FE%cvz^zl94cm4SE4yezbT+H6FV|Qz8{PgM5U;fg4 z3ehc$&xeA_$T_5(lkcWvv&W7(O!=x?jXI`}ZG2e>HH zw2^pZV`5YBqQ*?>zHD5$4NdwDUnvF&!Vyr-nO3UtzD?Rx!Ww^JyMs6|`| z!6+T7!pIO%Yw$rUVGauX)`{eXU89dZv3Tv)*+xXWXBtcAmhL^U*NZy0)Zc&O^|Lcm zCtiHfu6Eyb+s>z7IJg*y!LA;UrUUpZ+Q!ZF2Y! z9a*2e8A)F<#|?hu-r_Sw?+oxIy@L>igN~cE@#{BkW)@PKMUa$;5GfE}pV*Z)cd`iS z7GndX1k$7%uFSst7r*uB7e2LXVhqp{N~4+X+A%XeIWjffAkIfew_B}^iWAdt#i~-Q zbge#pCpPvH(5L?V*WdQGdu#RjSHJpoiDr+TTe<&>U;LS$`JbP9>T?T=b5W$6b3|yZ z^WGT~#Ze>zPd)wg^Dn;eJHPY0?X?b>G;KEDeqi5Qt{vs7Na|u)-)#21@KFtR5D|d- zgudy~aqNkRzTJE9m6YqgjIS?hojWh^)+4)6{hR7jo!~%(+ z(yJ%FxOVC*mn&LFRJ-o|=gH_E@%Ew_T7;FUw@-cb%o86&9bc*dh|1gcmK%R$`yKy- zw`+LuIwOcGxa{ax{#S1=TXbKWxOV5=|LlUzz@!x*DjK$BLurif1&V-kL=DVHF_?Je z%rl3cd3y2qv72tWjY2^#>vTKpZ7qpMS}g`Bdp%biQE@%0wMZH8u`hHvwzJ!wJ$000SW8OC?f_y6pHOMa=rIR4Vt z*A_#hKsW%v)Xe0=Gqt_Y%`VcKkC zkPdR5#B0t+qRBzuI;9m5dG8{Hg2({uY??+O9Esett9kuazqL94(f1_^&n5e34nDQ? zmYc>V>SwpVv-!w#?UiM7`q0^1Zko99!1PmJIlO0QY^0WVt(IJ)Rv_Nz&DP}1bSqAt z(O?95W_qf~@}i$bYSgO8TK)MiKiDZl+-#gUe%gD>0Hw{5!X+jU8PYN7_;RcbmwVR3 z;}LaCmr(%XcoWIK_y!`5<8O0979xP(;35d*QJ! zt}YxNt=F!*{@N@nq0Ch%8m&&&U5%5Z(P#t+HZMaE2vFvE2;Cxg(>J|qeogP%8TI=s zzwkJudku<>=)TNdm3A+Al1`Y5s`_5oH|mhvo+DV^7(D&P~c zaNv5amY0@5FtE|8si_&kzU?E^BSq5i034~#WW5TaT%LEd#_`Fz4W21^>Cman z%hGCZer^do$Am73fZD_dsFISy3W`fUdPUhC?sfUY<+Yq)eYZ>Y-0X1AC6Pu%(x?!F z_sQs%`owMk05FR9$cqnu{k~6xvbgb<1GUknLf;zIWtN8`8=08)Wj9vLfQY768)ZPt z=t@^~yUsMe{OG~!Z#?kGH@^IPzxM~HPo4RW_rGIdeom)TD=RBX)keo>bCpd_`CD$8 zS?zaUdg*w((^Xmp2UR?(nnXl|nYA{Rr^|r_rJFgCAQINU&qWsZCX?=ltx{Dx06>L_ z-W(Q0Ra-h)FT4a~VBz@jub#U8mhBhMFaQA18cR?^;LYu>!OyVajUl$dwtH5O)@@|^ z9y{Kx6s`xHDb0XJ>9Q;lL?J<7g~*<@i2zh;qGk-SE}IQ8iW9AkE>RX#!*n}Nf{#=y zrrOM;`_OxDJG<0oTi>&@Rpv*x&CZ-VyJDgsD4mnoz2JOl-iAlQa=de7Rh(VA32t`CMB!!iy(feBi66N9yU)wSMPb)#7xt5jN_U-|8{chhnPU>}bC6L0jX_98F zblIEdat#1j#CyN8yn5>NeBtDgr=D9~TFW}UDAs{PBSuAJqFUS9)uoP?sNK%L{ax>! z9LIB~{MOkW%TIo(EJI|f=8yrHD?U;Qft0E`jt%4SJ})y41fDJ-#|7Bv5D(3rOO24~ zEnhBZEij}eVga>o&<6%mD(jctd1H*oCc!otXz7LbbAelOe!1#&vOp54qzHC$W@O>` z>20;qW8E?pE&(G6iX}3t5JYA|As>`*2v(8Sf?{oAVhxO7HAc2n6ln;h5d@vEiu>Ia zj(G3BiP%hRo7%H&sxv<77UsJ3CJ=e86#~RSBPuO2KTgif)*BIcm)8?GclykiAAF`? zD#sy-V8`UvsqvYSF}?r#>vnFNo|$dV&ThTx6@XX_s_OSr0HmW@Ya2j?H1M77O4eW7 zwS8Z$-l&a^nX%a@sky9ebkS&x>ZC?OI&I|LIZYIqxV^l5_W8pLZI^lMl@1jNV(C2q zHX4oKgDw1##WRJouy)p$)a_=yo~@;|(`QfLf8Q51)j|j%1Q{4|6;O{!DHw<|Ryihb zAq0qZ#1~r{ml3o}Oz^5Eg_uDG-UT^~)(xNEGWx5DJ17k`PmjR5Mt^5K6|_lIep* z=U8k3K@trokF0KQZ4D6ikHrVJHk~V3bs3ho?bwziBaRo+R^%BB&{&*&_47}RKX{cX#vtN5A*OwfcBH!A6rtn$4NX@w6cjc@PF4fZqTy*59zf!7>Pd zXr)C&Cv{Vw0sumCHd|d@)~e=$q>V-tMIv0XhbT>IBdDtG)?!*?wMNU^+;NB~qSknK zZmpB$%0vvA2WBs^F|~Rfkq;j~b@0Rr5%lxIDE$|o`1pel_z%4A?c=isA+_b&aF!p8 z5C%o!0lDf3!@|JQD_mZ3q|VzWmkYOFF8(+a?%^3W3rr*7I-q)RJfZV`WFk>YUE~B; zt3khOt(7>2jYzwT9QBR26nQDx$C~mYTeC~KwnlK8qA6RdC~~B2S#A;9oi+?Z$CYjN zX&PtVcC#`VHQJyiB8WoN5?HZlG)yL`vlcbcaJzOTr{>O0kJXZ9J#)TaT0~{y%tJrI z5XUueXkDpLo4JL%uDj{(y<2a2>(<-vn%sNMHVO{Y6aoO}fHq{E5LWFPJM?V5Ar0RG zT_U-vc@{<>4>lT^QF^2ba(C92ZB{hu%{Yn(2pAU5&IN#Gvo$_8WwQ)`;v@!$LT*dj zLEy#t)7D9m+qHHZ2l!N2upAEG!tcIe=@YILk6fDW)bP-y}~)8ht!C}uXBm(d0A5g7zE(5fKaI@l3-8)Kio!u z-rJk*+;zF z=w#wuS3#ENqJ$Ch+@{Gmif{Qj!wtPwnjrvoPFYB|MkF6e`uzuR_2a0lmT{ZAb1}s1qjNR5P}9!+Bj#4 z-Uu<)Wr94zjfiT~Sm$s%4B%Cp7_^(lj$UOX>4$TRFYXCrm5!Kx3Bi@$v z=4c!x^?Cyk*t>{mZSfpi8z*TTMa0_LTpLZ22>7(oswIs$j=giiF$xN^53XLXrzW!2 zueQ6MZ3teWa(V8&PwMHy^2*X$KhlQaeC%^w0a%!--dTvuKuQ4!fsiHx~0%H)e*tB?44A_!2+~u@cV^)l=kLS)T$W zNrE9LMRA092&PGD9LKm*fFnbs$BgV}Xm|Kq5>!21H-BDa4y9fG^iT zgtS4v6mTJkish07@T(0$3?Y;rIB=Y{CTFez03zyjmQK9*BzT7;qf--t7{{jD?_`}0 zG7I~eZF{YAd66ecoFp|9r+L=t_i`2<8EGga1U4k4h=4R|iPqTfXT4rlvEd-8wa$_c z78#6=0aOS90fYqxP2Pr)9{~ViVE_U^L=y1cNuHN!ZGA40N@gz`e3XkcVj!S=Nxbrc zXHEmcpGx|@m8|Ig=-yBsRJp0KK!C3^JqEx^9w@TKia6cY{H(?QSWhs>NB)QY{W_DK??VMaUS< zs4zH2t~ftl`#=y`eEH)#Y6yo-u{t8W<)$CGOtuRF*!CArJ@y|iSI#6Hge#V%*SZw2 zEAn2OJq9lXrZzGw00`*HZn=EUbqkJ7zr9?a-DwM}k&FIXd$ps}`qa!09h;<{#wOw5 ztj#%yF(!`V5O{QC#0mF`yzF@qR9Y*gN@tySmDLeK+3T(W5J=S>J`BmB2CWGIfI~%h zgUrm%V_IQ089=;))h=(HoxLF8dZF#Vd3bdA76)|#mk9#_K-HRn2#K5vdAEpa;qU$9 zo8S75U6-c7DhFV7x%bku%Te0$!=9EKC4Q4T6`%yi<7Q+g$cr%sO`?s_7EP(T%UQSE zJ8|+<=b4k`3ul^{Y*+C}6s?7j0{7F=!PDQw5kOoGBbvyzfF;JkBW6-I~@N0A5z zaRT7Qp$Y&(8k8oj6|%&r%D_xPkH>S|+r4-94eza?$=RMHlOT~bn?2Y z{glxvB0~h=nxZx1zI$xb1aJiediX0RR+o5U620HRSt^^yVXN0S-+Vx_GNC9Uz1Ci};Jq(Qs(Rga zn^yYLFL~*BZ?1(hny4+RHW{$*c}CY3Ax`5~ugJQ~-K-ZSO~FQt0xkr^ph2N<5=Yiq z6&s2O5v;WU0Ei+?Aj}1!1edBn2tHS(xnXqg_uO$TKRY@zJ+f1DDmD5w#&FWZ|RDMB0rfQ}kuYMW|NWh}g|`$0fqAR!Xp@=-xHt<`}vm*6Bc$3|IP zx3Ezyb<7?_0D8T?Fjv&aNE#8Wbyc2gXnYH^40S-x|0`0tquS_olcN&))uqMW>i9+9 z_HuF0i>!~K*>p*=YW=Yw0KjecPVd+^dd-a!yZ4Wdj@1A_Hk1D9IWqG%zH~ZHYGDIa z&_!m@CHElc3wFg?XED~s#9AxpxgzToN=MtbkGqljNE$7jT*{V~lBkhnQui(eX{e|b zY#Q++U3YvLx2&pWlWl?tDG)|5!Ff|d1}_>}Gb(W6KtzH7DeqXsM#cyQ79p=nTdE1X z_PYJ;xYt{CJ$5_x?y7IuvN|_c*C61H(*0g9s@jJ^;eu0&q9}Sp{Q)-rplUoSm!RCv zA2|S2U$#HM8yVWfNUGvlo7lD&pdttbA8Z+Xtx+?^_~05NJL9NcW~)7fm9=FZC1Yv5 z-CnA3(2633sB|31Teogo(JI(7ZS?wu@8^X=CBoJ@7n}&oP=1^%MI4}k4aub83NY|a zLkNKxNhzgBDOg`31enHs^FL;O-d@6xAuY0U)u=jrCy7N1;0AAwwR<|33 z6yEo#=MF#LA0M9xA#8RJo4Eu4Mc$?m4EZeUCe#2S6KSPtVo?L3W}tB3mVL{GRwpv) zhnNf*Fcj4|S5UkZM=z|E+vn}f2-WI7N~$&%F`~0&#=yX&h>1wRxzdI}Bw$NUFt+Rv zL3|FLAh0!VEn6P%MPeZjaNHf;zI|J5Y`niRZy+gV_8H2648K=a;@H~+QP2W%3XXLmn;S3 zL$Hpmtv8yMg95U7QLoj>sP0NT&-!B{^^v$C^KHABaf*P-cqZ?(QWlb}nvV60GiSq& zX%*E9G7>c+BAX;w1ZOi&)0ELW??qW)0S{&AA&wX{0x&y4E9}K5NO<(nnV{3wq(jh! z#4o-uzkBN}D@370n>;Xygwi4*Amw=$Mdqrn2?pT6$P$vqM3j!N|1iE3Tjo(5`w$qQ z=yqM!9UpHfLPCsVV=x4l7g6q>ZBq9NGMpDvl|O=hq0Z3a1U%K-caIxp0THTeK{;db;+ux zpDu@%8ziSg2>pzbtL6|1Ec+o@#|_M`C2%)0R7w)h4LjyfZ!$8ad4r%+Hw7o z3-5Xb=cSY(6x>_Nven%6I27V+5z1n(7F;U)Y8*NBIaD^cBJ8Na$D~mkq=ly;*H0F^*@XoOt6brhFyN?ue7 zuh0I>41-*h0Fd{dnXCR;T5IRM@MZF?7g^nxI-nv5C>!zsZ(yu@!~f-D4?g{He`0dn z`*6N5_a#@pC=k2u?-ym3v_=3JJO}TswF)sd+5iH9kRaKanbG!W+&`VAI;xTJ)`Hd% z(^yg5H8%ESU(U_-CdX2(2?3QT2+G8gpmHL;l_E;WB!(1|kN~W-^K7lxYN1KQlVi{Q z+`3Sk-QHSS%b$OG;o94_rP?cvp>T0i2}9{JEkYcEcSbPe1^AHXS3fl(A|NWooHk|v zRFz^A0F#)piOKo7b0dw>Mr$06YK=`clX|b)^;lSE6;YY@0io!xaj;!b!m_e7Z_BO6$<}k2ohSB>CtX9A*6~7Y#urLXLK=6)~3c)L-6sodx zKAfMxFK29A^67fmNaXThxK|z`z|2aKweB~6`N8`>ac*jA(s_@7=Z&mago3UsLoH4e zsdleZtJPdD&pW-OmXadxtppco>bCnHq^XjmZt@sP>kDhOiM(ecI0nAo?M|h#w9Lnk zxO&6*Q1&`uY&1$5M23?n)rs+;;5<+SQ5>iBhFE`gZZYqzB#9-$xFMox|sLY%B)yf%jV`5eDGBe zlR;dth4lm|>;RN=WsrbK3_?OYXums5%JLvTRmFdZD0p8MnKn`7`fIJN_11+d-m-CK z-S9u2m-WpOWH=;Id|m1D%48yiO3|s4OaJ-bJ^12Nc5-Ucg|II3o5=kpQJ}$|zQ~A( zZC*l1Ol(G*Wm%SarXUcAQprfG*VU*y&_DQbA2Tw1J zpG~jXKT2Xe1_+5lnR?^((VYn{uCMrt(b zl;XK1<^jH%2#dmT2wr$J-19M=kcw~oU3G0!=%Ji==p%oya>PV62{U|uC6Qxzv z*sm-tZ0Hhsk$ZbVLCoesB7rK`5QKvW0G+4W*g%at6lwve`V{~`x0`+9kDvbBCr`M% zK0Yz-`~_w8>;GMB|7?8f!}n#Gqf&`B$f685VHBst8x<>~@~ki3$6D!T3==hMMsCGv z9R)6zz~?oj31w|`gFFJ7c+}hbQ+06DvIZ-xS z8ATCjh-&q?R=31KT$bkmWOOvrYOWT}+S2IlBO{aD{z|*oj0`zK3IV*7MF~nrQ4A1Z zvx+bTR8RrIE|Im1e~oX-sOVMX;u}B!RF|fo5mXR1jcH>VRluXV&!pZ`IdLuGXor4RO*|pobU6~W0@mAx^!dk^Lqe;Jb^vLYQ zI1zgm>l`9gO|BUj5qX%d)eaKYH9k7Zfb z>vaZl&RN?-4k5TSP7tuj3qW*%lO$g4t<^{C(Ri(Ub``iN>Nxq11J~ViK-K8%%f}!7 z%9n2$AAiTYc0B#`>AATzMdi-j$(EUVVi+{n$MtlaEG_3pPp@p%BRzJa2nmfb8UhkV z%2;cSj1TaX*lbN860T=ME)cR; zvO_k?B`WOq;P-yx@!9S5iK+U;WTV!Il2|LP5Fi9DOW*I6ON+gQbG^A!-DjRScj8Fj zySPzrj!zh7_El7BlY6*S=r1Z&7z`4Cz>1WhMkOwIO$v!@Q6fma*6ccF<|IuGndX*e z`@~YA@V7^O%gSy zHrx{e01?E-*xdH|`NYVCX-%%Jt)`GQW_LD6rfbnkua^mGP}D23B#8kq?`AeHg7+q^ znWQkiHYxO$1%a8TM#hp@6QV{kCgmW5o~HmIus~Rk$Z(J(tr2Nd3fMbmmC_s}a7fZx z6sO(J5`r1svR!Rh0A8Erec?8Q;NnmG{uvg_Vxt&p4IL*+YXX1}q%1umvu2EfE| z+H5q5FmP}_RB7x>13MSq!zL!s#@9)bh0|CfB#i_} zjW)OFG%dv0;Iz_(Ez`7yh-Fb)XTA4IDIzq=l-4#I%H=j|_i$#+yFkV`7wTzZyZtDR zsw7NVZU%=I_8=ZM83L#z*v&q=l0(>uw-PMy<{A5oOe17QQ%};#^^dE;!H3}DgbJ6R zJ$0nksC#BC@@W1^moN7FB?nMZ9M@75;1Fz?qrxOjlcG>MkK@=xMkxirRR-5+?y;81cmADCl+KtyRm_1d7HQpF-ag!!!FDK=d5l^21bf3o2tVds(A z+j4$od31C%>t#kML^6@evdk#$g8(W`!7G{AGCHwi;`obaUpRJnYiq_uzVe4c8bKNt z&em$N(u%m4Y?&mjX{~(W41u6PB95%lQEaqkG^D(9M9PPNh{hO1j7*d}K~y8n330CM z6|N|iNvo1n@4bm56GvI;0H9WHlzFkK4{*u0!6%zBB3}7%p6m6s>@C77sv|WoQVne) z4qofTlx}UUovkhQ^4`Ls7kqaGBBPaw<235`^L`w~wIoW@D2|o3MFy%3NP#dQ5Rill z|DgZ>+`V_WWL1?nyw=|PgvxcRZcd$ZprL^Vnw(L@Q9wX(^wk*!$1yUDer8`2;}}Lo zCx{B8qK<-KKn!G>+}+SQ-tK#E_syZwsT20z>-%F@)xDhno%ea>d%q12)U7&oYM*n~ zUVDY#`mJm_?fIdSekBMQcZq;8bQ}kfBcjw=AR?gB+Hoyrzz>28&LbHr6`B;7))+;; zC2UJrnH0CUeWVl~y&as;_@3pYYFRU55P%6_Fat#~hMBQ*X1`gZ!#%NHKVA@)j(EQ@ z!$@&pZagM9X8^fO78o$blngzuj0lz`l5y9YoYpc7nVW9UxT7O`4(x4Ol#M`Tn=+Pb zS=pxMu6cgnKoAD5%j0n!LKIM_$+ldZfn~?sYE(_Rwk8as2$6BlDT)ZRZ8JcdF-A%= z&TMA+-c(CdGlgEIP(qyrAg#5qEER?nDXobMTPmfsQu@!Y2l)TmP)a)K6nC74-)wgF zOeUX6Cn{4Vt-`jhe5EuY3s{{V2NiOpFpQ$A$B0R-iO8yPfPy9pBF~8eSBG&BJ-Hm@ zStvu-aZ@qQwaO=)>B6*6zU#WC`I!u5Cpu6U`FZC+>4i0R4X4mpFPG)(OOgFW3mIe!DK9Y=c z49nc&5(F{fIPuW;orDNfX!!q#f#Xad@`hl$aj#UDpG{taw{%aacau8tZY1%btm_a zmpJ1}DHG%omc=<&ihvX#ASo3|MSu*o(1HucP1G9JY6>H1GjYb+g>yQyQ5ZBJfk((X z!jbXLnO84oCe37VUvBH5`b|1s{OOf8pT>9U9CdcwVU8^U84BBFjDSFSemNd<2|y_g zocm>up^{Q3+&D>U$)}5x$=xsRa}wzlnZ+!|Y)f~{?Tsqa<&nd2;c}8(LMEN|B3~-y z`F_lCf*^M)8dE({#X zpg$rRk(P|H|LYe(q_mrCJ*w9e0s!Or?&bN8`Q_p;LUm-QuRJvxXJLOd<$0l!puoh@ zwIH3eQ-L4Y>KY`0Uij}4C{MoUwN zhW*KQN+2rXx`~zrJ-%PUC`1*-xIn30CuTdYj3Qvnjm3a!C|AdJe9v!B31BwYVMGXoNSp&`sltc=fDt0o+EfW3V+@Iqq>3UCA_~-n>sDN~e$M!GrBDrQ zA?hL3#)RuHW?#jTmo)pGV}o(WJHyd}`!W{SQNM8fBab{o5CkB2GMR{EgrHr=0wT$I zJRXb3<6fogT6PqwDAbPadR{rP8RZrwgQG3we*q@_(vFo<+SN&yiEOxiqY zN0rEU8;F3&7-^}MLSl>~A#3p1A_E|Xh+Npn7)Mf35JeIh(^>*xy z?Gsq-jaRcjKi(V~Iq9Rme#DB+#^Vu~hG*z|ULu?I{D3p2IR^mCwJDM+l3}EgF=jD8 z^5RLiqqAjlcv1&?;?Ut(EQ{#bh(21`=6vXRI;y%B19U_zUMiMsA-E9LY84TcmI4@K z+_Hp}5*ZV=>)1T>O1|d{D^;m#L`bKFWpPVz9a%CYDP=OAC{K<_9Rg9IFda)J88ZGC zm_Q`M6ZHom8IXR3I4S9fWI!lROul=pR(iQH=j00j*i2#8(E}USDgk-r;mPq)5Kg)& zqe-ET7>B@Dp$v5tXl`-Ka#C55%y|AGiv$;1lZ+x|U_C?ts4d5GgeLM4n5p#r zIzSLfsmUO8OokY+-d~J>m#UE;5g;S2ku!Z{N#hBH^*CXfwY#!AI0sU#_1>Tu42-rape zqa#zfHo;@WoC*U+x$)+X&awW!kW|98f*?r5x!^vI`>iO|=%T)ua~{3wcos8XIR+Q5>I&|0fValwm1VC;alwyKA!X~9r6X%9^j{8!Fo~No6H=TAZt5PZ{61MFK4UwZ< z$89Q=D#O*0p^BYKgQ!}p95J+cES^dQ$ zyZe;Cf7M?(>I6tS$}f0re!**B{y@_5&$5N;ED|UF3IQOLrUwTP>@RvDw_@B%2}@|@ zOOKcJIG0fr%E1RxnmaYyb)o5h>DADuEn0H{77JX9{q%t^cx8*mynT8XUbR zoNy%^U%MawTeUxrdIKV@7{ee4+*k~e=}4B#rBo^W!+N3d7KG9or^ER;~I7i71Mcl7J9}5d*Z`L=aTt@%aBAqCl2# zU-=*eAex>U^(s|>Sg4g{+004^$F>jqqN3?Sg|uQ|0;U#{sso6Q zuW@H&5of(~To2*p&v4|)j$`o5*7`78(vNg1@R&0w4U92B9ZANR)G85+Yo#g`&vEQ1 z^eqN9=Rp)^Qb|zS^D4-QGc8!;IBq5xhj47Nzu41}*H%QxksuY1hvh`MQc7{s65_5S z&?;BTz!5q3e4h)eTqu>xm3%(0Gzr@#kdB)udAeAtWSTf&1WLz+P)dhd3#AxiQ5YrN znBWW%V~!J)E0*&Y6vh94Y{X*mhR69bLu>8(zV8Q!f-&NZ3oe9XYtpuzv8<{emZbt9 zu9cE9LLCa!gvz$L&q!7P?$$sqDk2uZo=P>KAqb5s`OeR6= zs_zq#l+xh9tJSJy*_N;noTyqVcvai7A}QmsI5H#+U;}ZbDCq8LEl*bu>>ZgnG?tHL zm{n04Dj_Aax#=L#nvyYhdU7h3iD`gHD-?pX4ysklvf{B=rRq73r6R^TGR|WO2Spg@ zs^xN!Rn!W#xzETrcN{zNs)4Ul`4|RdAumo$|6jiVka3`w4<8W#MqzboVls#{pcFzV z4Ftp(Mg)?Wuw7oQ1~Sk(LgFAbBW(+23#@PyTp%JLSb`Oc1x;EoPK2Cu(8d8lBlL_h zWr9VBs_uWArD58|CmaU>HAw=7q>->8i^rixJnHpv4WZeezr4gBt@Y`sV@_~b)LNG+WdLA^sbtFcea0ALEQ~_InQhsMbS&-$VOR+~+qOf{b|S8%))c8o_H;Lo zAD$dMIG$>Y+YT4ZRZJ?u>{K!=O#%TU=6Rl*NVu*W1R-NAkw~Ks-B_YfnkFIAiEObj z;Rhaa?uSY$QLUD2h+Nn9!!T5l7X-%RVgQb9`@S!$K37Ub|M!-Y#}VimOvB)inKI6vJA2fkr@Fs1`PrbAt0D?mqw3XBw~ya zQ4|GAMM^6`WXKug#I=;F8mNxeZi_LcO#uzjECxb2)*zXE6-U}K$Fp!|{ds(Ce*Dv& z@P|&g-fDNX{sI9o)6^6NfmSLE!)mpf$z-^&35aAUqev^|`<`YjBE>-q$8zEcDRtym zK%tc!U3F9xUK3qHBxMn#yIZ;i1Vlh`K^mmH8|iM4Zup^ubT1v!NJ>g02#B8^|l zElBcTS*QJyqIM@0`bgb3)|B!sm&V4*T&w~4<|^LzoLu8YNyfzdL)H*U*~Fx}%E}iK zE~lyCJ=w0SMpu)%C^V*0EbrAF>oqFoilbg4(-2=_(PS9Dl0ns#4n?M|WM9f<^}4;J zNcpbBsMo_)V<&oiFIAvgd82E)^gMJ5&OD!D?O@|D*0ccc&s5XM6k3K$2OG`dJK9&K_n*(uR;CaWda5B=nI0%;>w&7Uw?#dBQ&db>B z|I)4B4~Id+?KGTF=?83*3BXm);xmo?hHd(UHwsVv!tBCLrdJ{ey_;A~X(AK8YSfI2 zE!8>R6Bnt#QrQUlFj-P(z8iU@!dRnIG?D8TskDDOU%E4jt zaJ2Ip!oQQ`mU|S%P5neNwD5(~A!H$2KwMN@O}Wse?GpFa|GfeRT5~x)5@vX8@?Lbv z{eApF!|z2R4t=fw2R&$_xsHq?o2ss@5M10?7QH6izE3A$E>|RHtTomtWq*D`vQW6m z#36~>RmIrI$msUsz;)-s!`)LSEmg6o%&`BmJZC=O2?Raz4149hL3v%~?$x+);r^Lfaf~e%#NVxokfb)P294W9U3YzmPv8TJ+YeBsi-~TIm zq!3Y#tCHMMBS0x!6@=wgBOTrO89%!oySu%2Dh=8TIby|9k|LeQZO|t+4O0^(?7jv- zsFRKPS@RwUgYbh-fBYM=DE+=DN>`uAan)VG#-N^D`t5f9a$xA}1kPfZH#j;EFkoa5OEujBrrh z{v1Rs)^%sV?Lkw(7TX6BGP2tP$AH_@{72v3a2z6ir*8odI{~d#w>B0(o1r2-X+)cG}w_4j+XrIdm<&|0Jh# znWj(!vpzYG3u)={EL{XcqZmwBy8gz+t8nP7mP<{%=;3ps&uH{dAdlNfxUm;(%~xzF zFwXcylfpxdT^5v_SZ^lgZS?rbTSmm=EG8v6)Wu=Hogzl937A*7N@qOP&W>KdB&Fri(|ib4>K3CLzfK6a z+kEMN5(9i19s6}7JejffOJJp5Z#I+}q8QB;LO+8U)#c@TQ}15h?||h4GqNAAx}S<4 z|4vpJ&*a@stVj)ht>A$x)IK{-%0NZ zQ;JWuHjyaU`d|t&?YqUY-y(PV_r&rj|BQ3kN&~sqN9*iSZJmyfLG!9({@w2qT*`eF`lO0ZJIIfU z@4B0`z*%AO?zTb@33^uUmj-d)rJ|%1-z`iQ+F83A5PU`*8pw%eWT} zKh!*yB!m)gWb5Dhy3vOZYwPRl$H&KKXKuZ7M~8?0SHB`2Z>k?ZZhcSHGH`#-nSL7) za21iPEV9d+e~k@cKDYE_75?#GrmgtKhm32_Iqvf%@J6Gx(#_DOZAI^(#3LS4W{W-Q zjk$l*Hmcyvbrh#5oVS}8WfB!Lh=qY<6K*eGN+R7ajJ(t5xxXyR&E3!O>-vS6B0kp` z$>wN{0Mv>{A9El|3;PrA?;(P~*upu+Ib{fAU?7B?cy^H%HrCfiqG4?y4JGA~lHP*2 z`z(_eH^A-MG}!Ns9`8#Z9v&1K*+Rdjuqjw86&CT$1rP6V4WL8AUL?YFF$UD|10#jU z-@SCW4-mh3)c3qUC;H%vVang15GN&V6fQBH(bdRt{&mno%9@F~;*|&SE_fkDXs@Dv z^*CJ67lgvhj0~@{A8!NB%Rd1g$vaN0uABHV?1_=G{XYp^Jn7g$6Jz4*SsUUv%Nt43?0HEFm$;PC zDT?%)Js2U(HELWNGW74wG#F>e9UzAgKo?rmMiq{6Dw|!Ph4ZVDOn(hZvA99Uk0i|_ zq?uI{{11mr2#?0fR6LOpr|(JE-c!$KIOH~t*5w+nCa@YA@soJDd0C3~TK#9|by?O? zVlSVGxLZJ1V6!g zIF)!jMTFMti2(mG{`m~a>GI59k0&QY+L5vedTB2b2E(9md$RV)zCIZ!D$`9GH4Z5- zqtK0C;mFoluxZhj{RsMkhNejOCh#65WOFk))#XJhT%X8JGn8A$B@5t->(PB7x4DmtaKl7_2(DQCp^k^X2P?x78Iz1KMOT z4P7j{6m00z7j)!Oe){CnwTBDAcWLbU0T(*6Wf9o6luNN6yi(lt$QHSnD4Ein?_SH~ zoZ|Yfql}G><=-yv1XDYa?;tLI>{-6&syCZf)m?Vib+%HrK*tt`W6S-;lI7A#{SlgJ zMScD00GVU^$pD$ezr=)Pk0pBvFy##a9Q0ks_$@SLH@c3)Ubf$^9CiLJD`y}1EWyNd zEFlytY_xRI6Nc5+*0wX2-DERcR!~p??%yC)KznudL?L?o{bz_&<=1T=!F}>dBxvHq zKch%VZnMD9=Z%c^Cn0pb*-iGAqZU~@(KhNS;*oV}dj48b5o6E?>L4jEBA`+iqV?1%C4==zDT2i2s9*`=1 zkIF6uDQzwb=bnEU5bRWAP37#`fK8Nh4UoZY#?G>gJF_roG8zk_j^Fa>X;?3XH?q(_6dg!&m7u;r^<3EMz;nT=Eh9{N0C} zsTW%MC#5QWe;pq$90M-f*8Dcf)*^xB+Ee6wMjcQl9ha*}m5HmZfF* z^nzqR#Wr9_&#TAbq#ys>asGVLGU0bPr{_4f<)SgM&;*B9Y1eMl4pO=rT;};4UN7&6 z6UFqC%KM>wm(cX4`+VIB``dmx?(;kG?K5(r8l!K)BQLvr?d(S7q)IhDuIw3JBErf0 z@q+*l;>%g*9M_3gO&uNg8!<0C*MqSNQ()gg)B!6Cu&{@RN8TSztmGxZcT_)`dyIMt z2Kjr@C21BNu<5pLX?D_5=!NDBX)A*gHDM@=@E4&4M%eaxC|m<}WDNrLQ%XHS#KCAv zq_!MHLZP|??4E8FHLinsSmUA`UkRI`732AuG3&I?gEh-KMeAFC@0lt+li`axuxY#* zomNp%RMbtY^p!|fY^#{cQ3_+VQ7GPa^E~<^`uqKNW-mQ>X?>;r4iY~Fst7H0cp$kv zm!c?lGy(T<@FZ3+H9Ch3qfp@0H_xt!EY8-mDK2c=5!?($oH#U+Av}58u*fnzqK^z@ zLvp9x-Q7Qb{!|iNnQ>A~g-Jz%cX2CUL&YBNPL-6D!buO_+t}7)$9~BlHWR=3k#M-w zbcEyR)r$}25rOG^_a_Mf?SDSU9CqG1xOSHd|9YI^`aWJ)0f)o)s=NH%+}x&%m4J`k zRb5@(*0wyw#l@u#R$5`$0Y>~CZ2utNGKkES+b9<}k7UNAn|J3heqZ)lU7gn|oRGEj z3o`@~V=6`%Lt6^SLpc`w5X(qR0%?=w<0LNHVkzqN?m%Z4>y!)}D$|`&lS}Lp`xy}2 zsHOA}t^xKDwdj=CNI715WVAlWZu5gU^3L6QP>71ey&ElMvN8Qel$}7H?TA3h^Slqa z(<_^cb9o(pRb#@SValM2?wKe%O9qvV**ZFs!k5n(PQDoyjt*{X(&qv^$eYpRtg#h@piCoWFiU_0-f%9d@*%Vl{ zM1`VJomU&j$4**W^CJ-<@r#a+ z6BhS|{(PU)GZl*)0Vz^>@NeYhTC+19o`LU4KkU0n?aze;VPRow9{Ry^%TSnEkLAES zNttnuuLm=&Y7Y*S*{`=C&w~iNiN-QdM_pg0)lB9%D)%L&nX{Q2U3QwY4A%C_p&1i| z2hq;R=(6-@!eA_88JfD*MQX0&p~G0Z!LH-P-B(wA@ATk}@V?XQoOMoQD^*5wt(f~6 z`e9VVK*%sEnI#0zXbAGU_iE-R6$oDc&fHu%Ush;~jf*a2<74V3aVzw@4r?!zV=5C) z1y@~+`wpD8!|iO`T2a4p!31`)pbb)$NzOFHt!Z-#m`DY%9A{V-aY}TN(u9PBm!)Bv#i{Ons3>yQtA8-0ixUqY^Pq*#YI`6MU12Z$TxLIu^R3)~D zNa(m|XB6l-vIGZBOnRrYah1InirrKk9mVI(bU319>a;l{60xOs5O^;jr)2 zXMSCOZ)Z(vRatz#&%;b7$sHoGWQXC=+OQ}& z(u7<6b5=m1;o@uYsNjc6DWMZKeJ`2gTo> z#S&Sf7?6w97fXw8p>NRC<(gDvcBa-x8rQuxP@=!v_Wj zv$M0A7#SPpQWY4`gTr4uM9Y_G@y2#KSX;M%f;qb1gfpGjQ`(jy{8tdl)43{xJ)vi& z`=C1ZFu2?;$zSdCyRF^93#UrwOBDEzWG>R5R$%>Gpp}5LX*qt9R1t?UN7mBP!WmOf$jM1mv0WNB8oJVgqK|lW&sP=_PvK-5A##_KW~~aLDmf;T zAlwBn_DyZYh*E7uwrCx(RQX>T<|5H4nvx3m*x1jMl@$ltJ_e>NB*sR(k71b);$lqj zLY3M_tqY4pK|ukF9_J)(y1$+6*twl$J1(+U5q_pl;rmg4@KS~;LTABGMhsLd{%2pP z@P4QS+)SI)UPY<+ey*;@HI%n(YHW0OcSjuWcj=rf;DzW~?Hpdqc$m$6l>xXxYgzoZ zi;Iil5fNag@&g{c*DkTbKspV6yx`$#U0<}VMi3jLnv*|%Bo3QFoqc_m>1BhdiAhNT zP4Qkqc>G7-jRkt|YLL}Xm>ZaW4$;mwxp&0hd~H-11cdP-`rz-3n9O17NC;9tYry0`cY^T$zQX>o z<;50SVz8z}>qnZ2^oNCEH^5?lVf%V&eyV*I#G~~M%8VWY&Iw*3mL57Aqc%+FU8`t; zzK4EOTbrd*jYR%P@v{YrYefOVm|$k(mP{Ej{Fg+pTw3rw?a)I~80wsvFdK|Ux4TKq zo^wxNm9s|Ea=aFWi@thKOfJ;!^lbyiEtMREqST6(_$H(Dv1gI|!{JHx6D|P5*a>Y_ z-bDiF>wCIA2GC$htuLwZ*uaX{o0zX^n@DdlJ+-umAk?4tT8GVCY;4N9x~L3?g&WxS z!1*SWA{TNp0vBf2?WP-ic_pQ5--rGB2})AZoAc^`4zNVPs}Udn48QDXZ%@?ik7}c? zeKXgDm+hjS<-dg0^q&0%MnAe1Q?3R%1pW^E&erch%0g zZDzH7{5vMB{-=+}pQ`z^Yh9o$j2Tso6l{dHtjg)-h6Tbq>;^M=(R$>8yik2BDTfyO z1A{cDuq{mE5jk0fG`1~jbU^HS*u8avz+iaXZ_JX?2mM&J-%?}IJiDYiJUZHmMG2g; zQTCkADtebaU8>LeEs!Z`Scd&jtK52CX+d-Od8fv(n?mw91E$Py-P^<|-I^3r{-O=@ zPjXX)Vq2};5w5BjdNR7#&!LjG=U1Bvl@fdGe32|!yMdvN?UKF3S;hwZ5`>guX_!P|mRl7m8?G1x>w zpTzV(e)&?H>-T0-$63P#7{b!v(L!`6@g_OCTGBH*s@_TXa?M}vz-F@3C~o7Y3T?q! ztgAy#{k5iFhw%Qm^wUx`)agq`rA0bVva^pce+t57{>075Wl?V@LKcouk4}d&|4TpF zqT7Zz=jQa42M!crz>w{veG$_VTMO5BSPg!{J-;=>(#&vQ)A+^I%c-Wkk`7ZW=)2N_ zF>$|sQ)Nq->vo+{o%Z+bdYyNLp^=}gE2oFeW^wJ5GehM}*fUi9iCId+%;Rtp6qS|C zr*^rpk!lEY-W1ygg?@a^IP-X`fc2klC2J8#BWWCZb8BmB^YfS6f?eJot(!}rE+*=_ z>Nn%bRAdC%|1#ht=0p3%qHP@Cs3sJr;@0nSe63Q`4=OG~yobCZ*wFov_CW~`}Myq4ntw-u%UGHez>@lvCM zdgIf?PCAF4$KTSDXV}B(V6L<4 z)~dn!BBq}?8dj>onNCJUC9#N+H~f&)qSTkc5?Pvlfka!^8if%!dM1uq$p?|1Ayq{m z(EgfYj=_Ydg|DupwBS~C9hMF!Di>e$Ff;!BMoFoX=M(zto?43W7EEEQg2t&u!YYOg z=vTgJNGxxu+n={m=xdi>nCsZFgmo321`=J7H-ZJrSmSY;W5kviAi1;saWLf0vq|ZrAi*?uA4dV=^wavY$8|2d%O{8e0 zp|&TAg$#}gZ@P;|R^5t7lhR<}#(%WR7g~qoBU|zCvr_AQy?^BUIf>^#4NOeLgLv)N z4r*5F&PLuGEw`N7JNhieQ;0froX_bwwDh~Lh#s|{B6JB*++C_Xo~ft`e*VvaTSY}> z&G&RHLE_;Gp>|w?d)}gdh@XGer?>hqZIIFj8!vgd@SCn^{OP1Lu9Bi6yLQd`i&xPP z5B}rVI+nToe0($0)21`twzjskiE<^=1ED}r(%l1vH(;q25D>o?SHc%?Qh=3iw4Lun z5F>k4ZL+emLOUm3?JX_dUS2}^6Zk*wu1^tMYHL?lfSFm}<$YROny+}k`K*=%5M%&4 zV$-Z>-iT%^E&;Tzn4C=4^_XKCyN=7EbxEcP^`J9|GPo2XZXn9o2`nuy@3%VW=`Dc~ znl^n;>WL&b1^C&YN;?M@?r~8o74Ps;BU?=cyB5(W5~e9-^~hNdWV}$CJ&rmeJBlo{I;~t=C5aKsa>f20euGt*Q&`e}` za3X&SwHvXBb*AC7Mg~;U5M&51rU0IY1kU1ebQE^IDdF^YrDCC`ZtBdA=OSqwrW|8q zfWGDU6sLl1TSSYj^&gG^Po4@RElK!mxk3YDB84~e&(mJu22-cXX(E#}aTw`Z!;%VP zH)?+>3hC1!=OdZU|FtlDkNi^`8PKHw4}xu7#t~euao?L$S9vwNZx?x04Hncg&wINX z%!itr(}Yawb{*I|if*N-8(y}~BUTGgi+Q`*CLSROZWe)A0PPBHTGp7wn2IkVHh|Lu zUaTuU-?#@?`6&|w zYo5UEeewjkxobb3|Lu<<%J;w7#UkQduD4Vn4$nCSY(o8n`0aexgS$XBpfOtX$LrWb ztZLZVl85_DY7q7H|r3PEnpdW7lo?T3=tU&k4SPurSG+ zMEj)^uVv?)&d$zPJ{SATExg#h_qUgzP$0f_g0~Vl72Z_n$wfkjGRx?mHLnjy@i32+ z9SKV@7s<)Oq)};;$KsS@C2oF(_uhX|eEp~V;^HDN-XccDDmHLIsl{UJt>R6*CNq9m^wlSbirESEIBk`#LH#O8oW zPhE!siH0Nrl65#Xg=p#+*9=c|3e|wA^8{N9p-QUp3b)N;uD+d3bu_tNHlc{`q62rKKfZ z)LKQBFqr=G!|Lqpdv?NC6WMur$|chwAt6|V>{gDB0f3@www%Z_scrVZzX2yFAt3>5 zMUMNNj#MPb8_Fdr;@4&}`gLaVoasw7#=V)AdAmZ&E&6FNARYqcN*rAHf!@4~3_$c5 z6Ei-?7<2|$1R!nG+MmfP;tTWhmbCCx(hmx|I(X zO_j|lulK}FX*aTbpNSKr{zz@K;VNhfAS|pc}3i0u{^)kRa z6k}#;D){`Lu=F=WeAjV~7`o5$yUybl$6 z2lV$_=6nB>Pe>%ES}nPg;yhw~Z~W)ehXQC42~(m|%0E=P(&4)2qaIkPRtNtW(l*1h zK9LkcBXpy{Yu*FI)lcx{vl|>=wZe$f7wh=rYp=zk&EEOwO$4{7o0@WuI6u)1E}4>_ z#3Xr(O#K8?HDukR5Tz1{*p*!Crqd;tISFphJ$_fFQdl&HXZ#;6Dr%3&gRY=p5q|vE zZS;bN*4y-&3a)6y#qt6jQr+TC1zYrj^hEz;)T_w|@tNgiF)l7>c!76Sq|mEZ2BjJR z;P8uyk)sCfc)x~Tbsn`I0*wabHj^dz35!yNBFl^L0-A#b5IF+^x^}!7hc;WQShDb> zz*~V$`kWGX$Gt!$TLpiv5%OgO*g!Bq^@_(T^5oG%d{!1hbZ^v{b2Dm7R$b$_R_X(9N{<6phC+KRR- zGc#s}1Tg?UT36WucusZy=dI`dPv^}zK|_xPbAZ+(uKnh3bAHBnUbm4Uc4HLp)P* zhwF}VLL5eTly*f^IotfI1LOtsi#I#~`1U`CzA3;AQI&-$^s|p>#(y}!=W??{lJuv) zm%C2nyvkEM#$=}4%=BVScKVmur=d#!thAU9|1;Vm9be!NojU)}ty7+GDBc@2w?Qyn zFe@y!y6@$I<=)=j1`1Obx9mIOa7VvAz3TRV3Y!eKof05rf*kGxz%IgbK};;i zn5=7y?;yx&&6$4c_kjhdbM{LDQ836?4OVd5cw+f`dwT(mdj@u0$Z|XfaT6JP-2vXt zv%=vTP$)`@>Ncy_aeXsDzF1={4T>fZ1V%aOL%(X4-if|eTHVzK=Kvs4(pbcM5#Ppk_na9P&g&7kk3`Pz0m40Tv0pUfRoe-gSA%3?w zgTteT!z2Iekq`b4!2NPF-?a+J4@E}x(itF{55$on{a0P>Xk|4dqwysx9NBmYUizEY zjE2$0vf_T>NH2}+iGKJUC6e&xnxFUy66f6^34_z)ZY^IkipoT`TiY%U5A25>mbisP zXq648M>6SphqgZYJJ#>m(qu%pGpDd>7|wd~M7;yj#z|7Yde~=K4swTP0^-j!>(z-5 z)W~#b`fRg*%B2dCg!!S8sDYvGr|6lb65SW@_;d)m1}$DbZ%M>bd@S-eFZ0h%SCWs% zKjprfK|{ApxE)RlIU2C-WMe^@8)L|jKJq@5vKo~xY-(M@*zGetlF%mxFCL4Rhhf48 zV`EXj4c|{r<*!ItzD>UlhO^{6Qm?uFPKLs3hTxJc0&)t-jS1mR>e=*kqsCH8K z^8DNnjB338%_QMHL-exs4=qH<>v$bu=KzJy@6+pmo00&`-eVN1t8RoyiMVXCh4J_O zzkdA!+}3sH?O_}E1L7+{z7>rElslFZw+pvNU5_%h?``jodvPCUKit3P$prqT-Ti$# zM@K=D3}M%8yVdrE%X@$pU*KKtFPs8_-3=sKkh4K92Pf+WsL<2%^XZC=L@y1&^Wy*J z1McT@b8{E$1X2}tbxWMdsi@Xk-EDa?a|9g?!B?lC;GZ=F1-mam0AABdf-f+iY;JqF zyK{h=0f0;M*n3ciw%q(JkNOG@f(gJz6#&gu=+s+0KHLNT8T?l}JLE>Ozyi!3T^%-9 zoO6DIX7NDvuNgX?b@D{W&%<1wJm0(8^F6}OngfW-lWw6V{@shix#3+F)$jQ-J^{5~ zIEV;k-5P1l<-bJIv&fUCFl124_M_0fc`W6(Ew{|8f5wby7REi?JjG-3C&NB6(Ag|h z9|dJxP99ThkYgVI6e={t~)1f&>~V;_$HGrjh`!qoF@u1^UN#HZseE&PyL&uAp?*jl62_nH7PnjnmxImr$vWM$# zFyL+w#0sFrT~Qo)4elQYUe5vOEGjJQeZ7_b2mqdbv(qn@lAM2so?W*Ak4KM6G9&3P zRZ6A-6kcd@%s+W*p%vKB)P(rz9Y;Wx>bk$!-Q87WH0_}QaNZX2DSWb54g%EJy+3~Z z$bY=s0p>SN@%;Rp96M|4-NQq`t^M;003^+J1__yAIo5+`UsXZ zjomob9+-~S9uC$xfnEa;fN*@WLXrMF{}L%JrI;62rlPWvn>#u-5_JF87f%pcBdq8W0e*$u#{Sr8i3Z*}OsEuEPm?rY-)hlsv2U<8d zC-N>NK6tjN+o)WHmSo}H^OkRLde@`V>9#M0>|#(sJYeeQC8mu64qx$pOT*AiHQ*fgv4VU>!d z%ypSYsEoPN-HOkG1EGnouM1N}XrMKst*(BV7wIYL!MN?QlkF=3g=7sS%rp?SC@(XqVH;ikdhm;g@Qniural%?aEbm> zoG^?IEbmlqe?F2b8b0<=;&r%MiP2MCd8Q2YWgcA#ni6~3n!5YAx=_)owA zfdDcV@xZk?00xL$E^+k@R{-0j(w!%h{`2mxHNIc)N9?C~uO>wC(gv7sy2Gf{wa)9dv*kCUI{P_d!L>sUM1LDEc!vo&XkTSBx91V45 z#5FP`*6ZpdtC5{~VmUkLG{Zfz+GIX)HCf=sV_%A1KHC6o(P%B>LJ!&aO?=i+ZQ%1S zuS4|h+X00qUC$v%T(Sx@rr5&aNk~bsPx5-f^$Jk2`<|Fv+-J-GzI7SYT2+BTC?qcY z1H_PWbvh(uo_K{>H^bgaF$H1%)gQY3rcv7L{(sgVn#V@Adf;OdJ9>+YqN3T^F123m zUDeg9%x6@jXWzHb-SjM%KKI9%M2#AFJ_upIXHaF(IoKa+3oNSp@Q*d?7lA3ff0J90 zK1r#i0h$xRnyb+0(ZHe8%9m94nwZyCiuZ`vR2}czi8jqB@)aP$?WOP-J;8o~ zDj`sI~$@rhx zMBgTmMU=)Jz6C!)t8WQ-d=Ncs-b645Ao_UByN6JNz2hsGG9O7B%N4!+@UZnkF$E4Q z1&rS1Yrtk!VbBI| zX(547daVbQmX-nuw6Up)40p*2DdfMy{e53>zI@lJy*mc#E!<7mHNOa%$70}L^1X7y zBSA(fdeSrV=j%uYrY~g}$%vGMko(r(FjpVxYCBiWN{!-}{^8Q8=-Ki#_77J524PUE z;*9t2D@bcqqg1gh7T&xhXY+brnk!>sX7~5U+kCubBo0Zstj_0+P&)(78jFICELI%I zWZ#O+-*&7CQS%j&mT_;~j+)cbu_gV1AuRU74pI2Cgjn$=`^V}$uZJ+8!{H`$oNc_j zj|k_hah(vlH*jqITgIz({u^efLl|S&vY{o_;^<^DzpfqV`*D$qER%NfBqLW@NT8(R zOg8@`dqqktm7M?*+EAi#oLaY0h)v<-U|fhv2U@obQ)&F!{{H@QS3rP@$^^J8dX<_b z#l?W)U9(?qb~Z6VhJ4?u+iOKQ#h#)eK4P~8Y_cPPGcOd{=6OU(Nl7S`6Yy|7;ENmx zvV_F_t_sjAUqeAScLez!REKVEXEK);KaF)XiNgUav^Q6Y*hc_Wjiw$IBe%CuFpy&4q6X^4e;UN=<)yL692ruD^S-&h$OB z0c82cFz*h2WKh03v}~olVAE^|Vk;Rb>0hwT2oFn@XU86}W+5DQCt%R(dFx))$j&Lq zAEE$D0d_GA3M?0~wTX#|Ae{pA(*TDvCdcKWSO*{K{AL{Md|{YaCimw#$F+qEOu)pdPi zyI&*ZH?*tFK)JM%KEco1U2$NdNf&bAMQik5N}-(d6AGmTBwHs3#@bWdOP$ib9;~X0 zA>^6o(Qkh*CIr4ApQz=-@&Q(q{^%E6Soj|QhMBU<0-sWPbxWFe0$$Z0%&PSU-d3fL zdkC5V@JMz#bHHdlx4i6oy#5-Wn#a@rP0#tl7eyuT{~I0#jB}x<~B%pFi657GrajdPMBnlhf15V-`R` z1stM-gMhD0rsBXS4Uk`~DkZLmRUSYwAuwDDe#CW9r#jf$wjH+a0oQnni;>Yf!tw-w z<-*jI%j5ke=x+e2;%KGqG7Hd#4>x-hgTRL>R|Es5zGc8bgH*BDXxqyL;M?yUpFB&Q zw4>XcQ=niCIx7or5#U#n5)(70Dt!6!1)R_YkX!Ju*5zE0ajwREwNZ|q(|(qc8L8c@ z)exwZW+`G#zt5lxk3fr#wi{H_eP8~5$(ejGu18hGW42r<_+4x}^G0_h!L*DVwj8ot z5sq`4`GTn_KJ2^KC`~145X(4D-YT&ecH-=&hIW2lrbi`vbDkqDZHyN&2_AxK#%A9uFHuKDW3X&iAE-1aE>iEwWt4;JH>~{BiqKF~}0> z^5!O0Y^a|6Pwl=Jal|lC51DOt3*$MBqYlRFPvMaxF_e%&;SGUst!1e=T_Z~JS z9=^~l!|kaAoo0w-2*Q6Mgo5t?$O2FRZfe4-i=WXi*v7?96?;cbzh?n<9}o&#tq$V( zkKl;90%4q`XlmC@U40r4197u!jCXKoSr$ z&Mq%YrmfWjl1H`(fs_HPaDbs_O?@6E15VRttBJfX!*=vgylro%*dL!V`r&IeN2o^Rv^rW7}W2 z?B2DMRO_xvaB&%A{5{Nd{XWbThy6^D-%}aqjIC0*XSujoo&}#<52{N}kv?ef)Eb@^0i6fYX#kWQ z@Hb`K`($9s2RxT)i`I-mLcevcXSIXOTcu4Bn5s?W(Q%51(AY@4 z;5pP#@*lJ{VUxOvNj>mMLIsvhx1VqZeyd9Cq^CAk$fmE8Sr&}lAN~%Qa78*msOcqX zO>~Ft;9+{7dDCl!jnk3j81(s}6&Rh$rA=NMI;g>4}-7|Z6felsXY5k-HZm;}2 z&$w-U5h5Wa#zlY+A+fZUaecOF#T`uo*(?fL1MiID>Z^Qz&rfPX}x2 zpeHd^0gyI7JA4H3FoN1wXUIvU%hV#s$d!~DvpUF-0t+A()?*OV%}hmgsI1hn>P?HU zlyZ7e1zI9OU|1=PJq=q5*0)jG@ctP;)RY-Dp-{k{0h&kywZi!-$5MoX!Tqgh_ea=Q zB_=%r#u^6~1y$2aOWs2D^Va=VHJNiUGzbI?>ar+aSkv6FVpA?iKbQG}DFl z3q{DC$Z>x|>H2(zy-`-B6MHm1diOPaTWDNT26V!wwgSzy69`Kyp!PzGQ|C-a=mT^c zZL8;1E-iQYpveHlYCs(Fn=^xQ6tMgzCL3VX6=HJ{@+{a6zGw+hU|fRI&lgl42ws!3 zc|92TVL>&rRPz}Z7nkXI6d;-()}KmT^$>L)gIw=FoWxMI=kT+}7!(kQ9D)#%@pm5v zNF`;~E|(S;c``?V6lDEf747L$a6kcYAPxuCfkK$r8zljnE>-iQ3{Lq>pl>$=G(XVL5!L} zqRyXi1OOSxEa3Nyz@@6vEC+|eJht*f*Q%l+`gmiMyTD&$8+g36kIXswGl2)^PhY0K z{=OPwMwVk~fd(h`rgHc>==}GIk07R#cDuFIFZs57R)Ht+#2pn3pq)>2?<0o3{z@zT zo1iR`_XX=4BUTq1--s-T(k>}7HHm^t5r5DwMaaz%m(}LC`8lqp3Ju!*J@pXj+F7P@ zF2o68Qvd~xw{ir5JeR_=oQOYzB(45Dp5n-m5b=ff}GzR$O2Y~FffI10BPZ=6G= zXRkp;hP)ks@&`+4C_F7vpnb8!Y||V|2j@V;nUg`&%@)8NY+@Vz_yF4NoL0SezX>_%>#S$)zuoT;BbM!vn7Rnc1iVgOR&wNVs6LOLr5=q zE(>1=PN8vcQVXIXjG2JA9<~07%|J7h9kVPIlL+~(Y3H1xJxcc((yu=J>@o^lqTH-1;^*}J z6p8YQS`0FB#m!poE!nY5v;?nb%e~ZF|CV2$x@kXwjL8s(!Q^S0!xY2uAU~xb%;Ag3 zzxADHXi1!9AW}4Cvt@557sb;t^qz<#KZTt?=|-|uz(A`-%~~J5=25^e-Y^$@cECs`47W|!?CG9fkg0! z01W~_^R{2eayvlXN(cKbJ9)R?aQ%-FtO7#l?|pj~J<68jx^@|d1Z=QEfWhp=5sZzE z9nIu@i=HS)uTTUNqrCK6tE-6NZ2hWRiS~MOaZ#5u9aMdaKcgcRUAmjci(AxPU3pFI zKn3Xu8b5$nAJK>l3Jl`Fre0oNMn;mdE?1M2KMLHwWF>qguJ8FPgGx?fDfL9{t)-r;c#Q5+nmNXjJNbMa zJ8E`fQX+Plv!J+u0A*+a=oS;UjBGr!d^M~3Sg}w6<-5$5ZfKVk0+}?2*u~6Fd^niPBN=Sbs=knNOP{J(x9r= z?|q^XjQ>6|lnet6M^&xBbviEbct`bkHHiD_47$@^RAdhN69?20UVwIol~&*ts%*q) z$|iIUKez^zac(JHh{*G{UoT1cGE!WQRy(Q#?)MNyT?BZFDQ)fsAhxH0RaKl5r(h+k zTDG&&nFegI@xNNz*pO0CP>_;->?K=u0y~fcVms_RsH}gAJe6Z96GD!N!*6B;3$1=f(_b3me7V<3^ zY7>&L$sTIGQ*>>o$~0Ijv^#&d?yY`OY?0KJHC}edkGJP$gxUq^zA-E!zk1D+h$e;1 zRSG<)eIIL+%=O$)BxPUERWmLgMvnA-OYj)Ff{U2YYvRa7YynUqx--Y(8FCJ$4HdSt9B0YDxb^%rn( zM3_%ZYjo1g3+E)$acnBJ+0kBeiHO*IS^_T3sy%UFo29xQdVARQ_#i|3V`?f%xuom7 z($T=V{{;{fsquhk1O)wTK37k~$7QOP;lk{!xl0@4BNwoXf!}3jCIvV~b{jy`H!xV= zJ;6eIMwOL#OG5PDGo&IB>%)rMp+IyDpKB0*OG~wPP8O9Nb*}wgq|Gn3gyt( z{W-+b#BZWqWy2*ZstWfkD931@NRF5k6O#OxY#5aT6=OyR72k8k#;QzSfo$OdG>&A9 zxHQb3jl2%EmOkNWR+;U{IYOqqjiJ;zo+RLX`RGz7X7E*6<>-FJaS+}KO=7)Xy*iuu zCLQt=7dKu>#RjxAg8H6ewxTUeHyKm_#nYMISW+CdAn7g6RlwE9hGND4Da4a#S5G%T zKHNGs{|e`~or46P+<_j~Yk-OYnm+WpI~nvmSnQ8C6XCj)QLv6&7~Q-Dgt&;XFh>1U zm@E>4y;QkWa{Q<+O+2;R@Ou6AE7tSqUZF;Oe0;#DWs7<`)N1pE$8moLzMHHp1^VZ} zeMLq=F=oaSz6+|tE+3RHh7am z4{mpY$xx6oW%bqEvVqfdw6Dpk*wO6X4|POJ6>rDJZsWM`_b+Pp#5C;JvYow|FXcx* z(K(|kLEotTd1q4if~4YKh0jMb`cNDBw-eD6eyovDp{;hLi=S%T^i4z9a?HY-O3AWs@%2^TC_NAVYG7 zn~oBf6B%^nXk`8z0=yHEJ>S~A?jImLTIRVKVO7~lLAsxF8BmM z5`cPZ1I7=4KLFz~1@h;QA1A<$4Xm54KxEmLN`YkyI)dud>>DUp4p-XJ*>#>L42Dog zeg-&+vK5@LCP26hkXUM`xdW7ja6YGx6v0XXXaT+Jj|fJ6718|*!URzB(q6yfjUVJDJDI)}{l+hhBB^-<(+n_*Q$gbUA4g{y7G>8( z;UT0%=>{2wkd#JBa_9~b2Bf+nHP4)L z_Fns5>*OwPRWWKZW^=HCmlMB}*~ z%S`Ru9Bu@yvfV(Z-QZD@5p?O)-;@(khOd!RU-|S$_{PVmkI>(m%%i4SX#mjKoHl#PhNLlIheh#u8N6@eg{8+#i3j~ z`~gwaEQf2DLxq>@ktZE+Se?x*lNKIWi=6Cl+vXtD0L{z*dqf9luR1}SWxw(wZ45Au z;pyKjK~Dpq>GO}YHxKgW==KR<>(mu993kb}UzJ62RNt_sfP;2_xhX1K73{~L-pLq8 z1Oxzm+3)^o$;8hPC~p$&&=~jli6%op_6sv*XXDEoj<(N#{yMhUW8K&ik3w-1 zBZ3E8QwdPHp(>H&s656a9Oj?$XQmj@=Eehk14Q6kuPbEJh*0OR(Bw;qZB#zBe66~k z5VFFxW5x>Ysr`#jk1B1R%_~*LwIvfMimth6|_IQW6D zkz%=Y*i*252LS%%!8QxzNYI;J9IRM<@yFEz^MwGgRa_**y&K5C2L&xim~bj1D{xF{ zYHogthX*2gh(y!D-=wE=JsM6m<1Lr8V~CN*<%79kWD{%$mf8Ivvy;^0lEj^Y-~_Gc zz*3Gn>Jw4WQYMQxRB=ZtQv1qS&6?@si*e%ZzM0Fg=IJHcl%R!1@IOf15rs>EBy;63n`Zv`GEfs@{EpnGfI4Ph zTvSXnL@GX7T~0AH3=_liaBYP<;O|V6-3l=7%&HX7KFZxD!9k2}X$$x6EAwP1StX5X z^JF-)N9lhU+^_qpU0jU8k@B>Ut7T*E?4>_5a#}%iVmX@Jn1lYw*=_zg3s2x1OAi5~ zr7tdM8vuX=vGck(V2xx2XXcNI_eDD(#IAnj_E?W%a1glb80CKXc`%f+F^kNwv*%FcLJRy6gh4Uilw#2C&px zzJdhOb)iC_QxXFN9^brQZD^v_eC&rsJ)eE_bnG@mP>uDrRgbb2U9Xwx@xX)%^dJ5~mAP%C4!=!BZ;ERg3Tb#c| zG&`{KJB*;Wu8x~-0I2lf0lfr7KA!&{>4(OHiUuuKxQhS_Sl#%6u}fq)<_{I^)x%i{ zHrh$SO~E-WA!Bu4>(Y>l$qRG4e-&y z(;6BTXf8pKBR|LdD0b|B4;J^5y(jojL+EWF45!&??OCWKaOt4mDcI>mEitIb>Hd<_ zu74&Judg$Xr--iFT;AEIBpvpAj6?=Kh+4&p2&Z~lA&$Ob8iyXkT!{PAD5n}3n)rsY zv!k5^b|&+NwOutJ!m4!H2{8JDXhEVF5@X8(0~zEyqWjUD6aooSj`u(^@~I1$vsW*} zOhzOUo|4Fa3)abgTwQz+`MLE~7~VOZly0?7sGO3SS+6#Ch0cacme9GnkrB%=+dL~b zyUk*US6MrKr@cuUJ@v1AVjHQ(eO)FZ8N$W!Ogr*hOH1@n{oJ0wuacd+0zMLO5zqZE zKq>*}6z=9fVC*1G`kCpUu0aY!lJ}q@1%)CXH@68xS9P@mn9l;i91#sMe+5=qjTvDgI4@hnyfR_kugPBSs zEXkH@?hV*BfhwTOK9Th@&P@!kjiC4hXX^EXKHOsoQCIZv^wg<*orLyJbdn*C%0!}w z4QQ~E3}$f|YqqtI0S%C*7^2MdV|5j|yi6#Q08Nxt$Cp@8S|^~eRc|wNh~*ODC@F?v zc1= zpR39*IZ*lJeS{=tON}(tj^?+* zqoEGx+oyddhpX>KF;-8$IigV!F0m3}Us0l^XfqHnBq^TgQFE@E;~yRShS29bKqi5< zj((PN3x?u{RFhrY(Nzx_I=4q*;`ZrDWG@WD!+{tHKE(ZlmNhXRo@3xz-O$RrN)`(h zYUI{$&`?%ZzR?qd%z5Po1@#`Rc(Lm@k2gB}HW=7+8LP*g{|i(T;M4m0`?$mBBv~_e z8=KBx;b3={hhhzirTn{H?=!~!($bOw926T88^9|joCBh^fL9<35MiJ|K@S)wp&%<$ zXI55KrM$wWgA3;%5#UL+H2y-#2Y7hWsH&@2%jz>?YB>S#Bczo^KAti;dbyo!Kr5r-jg9WNhHtk+=2$3} z)#yWptt}x!AAj<21$erL=v_KO9n$Ig`zr`w<$ra(FDuz(g_=3yjw>7bX_GI(G1-KBs7xn0KLd5x<>GMF z|Nd1sIRzza^c$zP%TA}(JC2LhYbw1G_{@vzqOK~kBIYIf8HtmRj(1%KUJp zfyvqJ?ZQA;A+x5UMZ*%H7dJ_$h26`#yYs?vu^PFFCQq)euEr|_fn^Q&GzlYu@lC<| z?zr1}djqhW42N;D65l4MM`aTOU23SHIhLwCYuV>X$3QUsrtv13%)*OCB}S` ziPa>FO~Cyu*rdx#W1;Z3WD`zcq(oM;MZ=cH*c{BZBFRg#)AQ&2s1EQCG9~To?ddn! z&b$1c5&iE1jD0?NfSsxb^ln*PxFCZKd``!gH>F}{EG)l)Q-O+W#w^T*?)~-38d!Jf zf2P<>*JE?6N;b~UXhgTOPjIb;NZoids%+W-uwF9@tTN7tp@{vZpx-AV85UcC0^d8k6Z_4f)nCl6;TlINN zEeEY39eZT#`nTie`|7!riGj^pv-fgH#VN6r7SH@fUEwfXA~gnL3$Agyuz=anV;4A7 z7p{JOHnpznNiHLMHJv<(yj{kq`twDt(C{OVw0(_@CEsz~j4F&R!DuUXc3y-tK^0q) z_4rE;u|r1g>q@MnqbbQ#*1B}CZ2tJ=;-LIjH9+KQ9)x6@=p3)#XU46S9piDMr+`(q z$X4*$PYSZuD7GV8{sRa5!{`mD#>4iGO=n!dR4~-r?BKLm`xDeoot>R&Z#|a)qUrE~ z;mKVV5jHn$)nnl;Aa|b|{+P22t$U4&UftT-T3#Lz4kUd)ze*&q>UV+U5GQ~&gY?!= zk1=;=?qi3Iec%8^R8u}ngJOYSR8o3Oz*2%6JK}t8UER+G(9XX*JJ|isAOS#~ncUDr zI%H;ko}ZuJqOb%gmE(XO1`Srj(tgG3%5ZBSdVSt|ChR_v{0gh$e`{5b?`gZm+w64e+!QjOSHA|8C{J4YVh zt0ACva8||YTBaW?Coj&!^9WtlprxszTw_SjO|J40Dj$7yV->TWX8ne=?zBeWGNeL^ zBcdn-3*^({l5cisR*%1Jbe~8}A(^af{pqni04H^?W=f=VbJVpqcm7#pnqKq3SwGBQ z<2($ljM(R@&%sdZ0l1R$zv5X7X~XjeiZAGNfai{u%GCGLPxx~C$nB2f@uIJDCN57gRLDLaRB^{!QCen7gkS%KI~85#w4Mxj_D^jffA(r4j zfBy>Xgi94b12afLV zS&6b=q<46ySKkB%DGx>)X=&-0Ar3hj&*V1}4W`3#64-Gs$4yMg--AZz>SkNq$s0r; z;eI3e?J6{DW#jBTRqMimX#CRJ`Wx(Tn@d(ThkGk)v$JgI-2k&y`B((1V<6dk13lq+ z-n)7hZ!Y442XpL;tVAO>OEemO_Nh;rOZy~}_<-K)0406wCOK(7@b*@p0pak0%K85A z>HtF15EzAvy!+3YHRtPZS0Fg@e=hGcM# zDMglY+leP;xCE*qXN@hL2OLYvZI%s{hyWRM^XLW&+#UN8L%*w`RC92#P^0yF783v4oUE!JZ;3-o#eg1BLOy2OYtW_sMimLuv=vwQ_MbnXDAk^ z@msgR>kPy>5CA0n7~~y1gp~kz*FY*EU9s!4j=}q#ecmp9RJ-2;V)IPt$Uau^xucEAiEeg#oh|;3x&>jz zmO&RwPHgMvWDWAr%tq8Q+t(4rYLtR49Qq+9#372TC6*t=c|9ixzH`KM`2NW9neVqp z1^@ZB1{jhi)tS3DD80}6%jN<3^&HrlUIrX}q@`|3>C7~N2@RS~U-)ay5k?IvlWc&q z9av5~%!Z$S>{$Y-G{BhnM6G%hmwdf(G%7>0zPDFW3y(`s(As$poWlS(p`oU((y5Gq zgSeiW?rtL%V4>^)Q~)rtgXZ)1$t6I?0ZKqC_AZ^f`TeagT`=H*_D&}elHUU0V)CUw zwzl?nR(e>`kac#EA0H|5vO+ zo+3dNrcLEyo11fSOih=pg=43CCTY<{{-Oa2-srKSlXhbv-XQarw`;Hdg! zj|^66WFf2I^tICWL%H;fy!@;kKVHCTiGjc?*(#75;YO2XMk)o0_Xih)3^$vTJ9}o@F1xc4-p)O z9gAEd41^KDjK%i(%Li_q7ilOD!8*WNiGBwHjc##pW%;wd{ohCLUgxmF$DQws@C7nQ z?Jxy3xZuV%ogOC^h9L)&E6I6&OY9`N&k zhLcs87#-;~)SPEjPrd%8uQne{xlR6E?(|caW@e9PJ^jdqg`IHu zK85#%pjot>20Xt62L)eaPGY$ye<)IhU#ChhtEZ|*m{R?ZJ=5})FgKmXRA#bfUwx|s z8ooTXBplx7V$R?%epC_*L7hr*9jpP?`Jm+QP14Z3{6cd^T!S%B>J@FK$0z|eXPj#R zV{(qZ3u`y~&&B5vrJ5|TOb3E*Qh(V(?|O+PGHutz z-xxl5T#vs2=7MeD>wEuTc0FHl5+_Am?1o{lqDjcfh1rPkfibx-^1&$az%PSnoJ~P6 z{Ap|fP^lr9g%_yncKY%YsHmyofwDjY`%G{p7V&ZxIe+4O_kcZA3&wD7J!m;K}6;$RPvY;)`MNy99ozt%if0 zWygF415u#e>nd7}X`TeZk(Cay0N$TrCk+v37QpftWbIm?*axYP5##d;z8+VPTfC zUFaZ4L|{=kcT`Rhn62mYxohXR`;;#c&#?12Ykk0@~Q+d^3uFJV4SCW76-yq zDM$JXq{9prIMT)d{#5MxYEr-5vl@S6oOklne+~ZtHuwK0APp&q-|2Dvz6}vNZAcGh=g#L9MZ&@MbV8WDfB$F%!4bnb>6rXfI=2 zrwJ6NRP(sDuciOtv&`^I)9TR|qH>LG^63Y&Jhheon4I`Hcl1+X+0_p~{}kk{rF>&j zunlKWd=#n93X$K++&8aMXVtl}4Pn7+EG?AM<NL3J7|`HK9FNQxq;761V*jWRbk_e*eMA_v&>vi#RTIQ)A6t0KT8_Ql&a;8Y6= zLYeip1TAd2cBI?iw!gqQ%}6OcLv9s=WBdXg-?p3_mA+b%Z6t0z%;H~Y~tZ(G*>#ki}9y!O{d4@a=j$d>VYC0_pZjP*7)S}TZ1h?vTI+P9-v zZcrYqxg49Mz(6yUuzU8hn1DOl{JRM$CZ~GrZ(Ggo+aG8F-v1Q<6Gfiigiz^ck(${b!Ps`DDpK=P(4UAarfcblHEE@tU4=4mcOf%~6{s$)MPR627?7Hes z(n+pC&+LDkl=lu~!aIS<%R}Vir}G=mhHI++#l6seXW%IUko_v~sOjrdnb`xS0O$i? zWD6FJ7^uuq^8X*tx9HsnbUA>%@b+GVq2I?t06xTSrpxkwdKuPx0gS2S)|OzO1*~|9 zCbv6Y_!kgBfQkk%XaFRfMLb053_0ZjG=q!4NFd6j zp^mT-HWS*Smo$F=l6f^P$|Pd*jgvM{lb| zRIpvj*AjKPZ0@WQk>hV>nZ3Q4OM+=R((n8m4y8h$I5ynBeyVt;OCpo*x$O!+{uW?)f_<2ZPW=Y3q&o) z57to(s;3DHH}rKmQObI`9e`}R%XUNNd4N#zD3E?wqM5*B8r^BjFz{~yQgdN`zr4_O zKC1Tq_~9YtzVZWxozD;PE)O|T57to(em}f|KG#tHcy;ZRULLh z#vTZ6l8`EhmuCRx&1W(i?4)DAUBOfr!1i9ivjb{w@DntxFYOnnkjPZkQZP3Zcbx!h z&6YJ3+*<>F8({f+ZNL-)6k+gs`V{yUGBcw$z%2udz}IfF%kL5QX##|Y4R5+gqd1(` zfj(IJ-iVnP+`qukpW(>r3Uu+gr6nIg$pAP$A_5!b%#|)Fp2yF+Kf6ab29Lis1|H3= zjj-__YU6!&cS}pX5b-=ok~o$1(a!6yhUCHPi#p`iEd8$K)^!Xhi>bfm-Y-=a&s3Ms zox)kxU6d3p=y*?sKz@>_qo;({@Q7fTo`AG;7{BERc@c(0xIBx6RKXU_m<#$ws9fF` zP)y^U;YG(pv**paoSdZ*X(4Q%H7F<%eo!cAqE*CB7%V}Zz#etoKaV}Hc#~k5!iGI> zo53xE(}X0TgS4PqMZ3wuvn8h=`ztWp{-V?%CV=sn=$YEu0vz|cX6;BBx zLXL|pYszs&ZseTHQi0K}by)>?6u=CJ0eJ|lekSO=J_bhVz(4^UJpnghRgy?W$Hcq> z4Z(xQ=lc2@urCV%z^7&B1U>ivMb8&GrdP6+llTJe!C015CG%w7RM zsHG|t5)J}g%*$>m%pTN1kQHTQv<4))t?`To5U?^!Y!Av8Fls-2&+j3`Z7^4V z2!#i-Y%MClH9+#)TJr&OBTi*nvgbE&Je2&VY$qDi|pwfOEWmj!M?D|5T zEAvq<_eGmY?fhzu9I_<&(?@cAXd&ak)X#qLwv*3bi~qdq0}N!KNLGEe>TmpqLEQaI znM`7^%pW2Yo@XHmjEp>Uno1N)u{qz&31juci=p*`rSeK8g5Y`>-Uf#cCXuUN-aK>5 zGU+7pk|j+zsC3@!TZuaQhVNXqkq$tb5WW8HHX*j1?Jn%FzJISWYR8UtvJKXb6NqvE z0PI5u#0@ZFS#JCWfac2|?z4<(2Bu%iqQT91@Y8QxMC4Rdyx$T`>&OXwa!Z@u1A+{g zeKSC02SBwzd3x#qVrHPQ*+=8+AHX*S_nL+vFjArf{C9|Vqqf#}kHp8C z!{T|y_Pb$d`f#DL!!8fW$A?rQ?DPHoS>QV+R!Msdp%F)DJFC(l+*97mfMSqA(V)Y ztzJkMp3MA}*g>(Y*+OqLuIhShGUY}$&YRKb@2{B9!G9qYh`qbAPOpn`_e?qo6duwoo9u?kr)#Tzujg?NuV0vdedSjJJY^7u zc^r+%GWmq*PY8zrrq?)|Wy^bqeiI#GqHeLBn#JLg_^^;wA_87t&hZ}Hi4a7q#x63t z`Ou~P{0T01%EHYRFOk^2RPo>9c)chxnUNW$~|0fj0) zsHSqs1tY7hDO^8Q=CA#z;gpaovQDOXT~8jHKKzUsny<)-^^_o~c!OH7IpLFTIiC%d zT(fy}F%^DCnmU7;a>=*B`xLNpw*^&3wnKx%*dkh;`xlwOWF) zz5MexKMfYN*Gzt;_s1CE$0tX|XhwFVK^K_&eDt`u3QZ+Yq4=q_=*(rc(F}w~nf(@j z&IKcrr5a_AhM5b#cN}}$Wqwt`=m@j&b|XXDrF~RwU9d@dekdVSJ~$M?vNX)}yFM+E zsYu4g%JW^-;};Dbv$Tz4eSX6saxQ(0&gqEpfgbshr%EO$r71Ww81O1SSfSS{o96_* zAg6@9B8&c&sN48@m7wJzH4FK189~Ua&^APmdQAS74!FX7@giiWjxCNwvB>jw&x*VY zg@JkD-AaKhI@1h7Bf)B0M`z{wha!JQM$XdeckTq?_cvc4sYsFSh|iy&qo82-O`t+P z*plC(z0H#E`7e#+4W12$SO-#fJwSo1o7WdACSCiOC{4B@1%>VVM2ESsagP}_jAAU&9C7_E> zRJM^IFv(pJU8&aDQ!sEL#rWu0y27D!*g1Jp*hq?=ENlFWoS5Yq>0pRY`bJs_qiK*n z+scowQ7n0pyPs`dU;gH;*6;kAeIzz&*K$K;xW-R#j~}5>T&R0!?*t@aEj7`*f!*CL z=-4cS0-H;Bo=pj;curSVJ@08sRY3`2NAoz$3ELPK|Cz;4=~&kS1 zq#+fmbia2(e}4(_b~{FnlPgro|64*4fVa z{-X2%DPRdjKg1!qEJz&U&-?YC*h?Q)Y`N6~|GTSY6?fe?9Xrj!uD6vxTd?2>EMpr~ zM%T!P9517`#?LW0rXe3C1;}xeHS>RhOs9>1!+FA<`%^2l@BjQb^l9OC(IYO#Hx8dC z)|Pzgo~+q3pN}P{JtA&7H~GE$CUS8@IPYnpZq_*asx!#@)vW78b|0b2{5xy$8CXu> zRrezrt3UkON7BhNIi@KQKgA;grCQAT5Gvo}V>fsf6Qkb1mV@Op>|-dn*MaB89jK=p zj4#QI&Kn$!h4n1uxq44_8d{ubG--li4fSatmO?pK-LTMbZs$ojG`GX_ybs~Gjjs@* z7fSz^7*>02=1=AN#7Un80GC}L;d_{-)Nv*UEAz0w760WT%Gz9WnM=pY(~GxHB{mjB zH>tiq4Xg4Y#wU89KIOXq`z`+8ce1FCXc*1<*WhAY)OaK!n9XKp&r0pp?Zydb$1zCr z_uqIfF7~n|-a;=u^|=IUxKub{E(LzyHkxxx=!;+r;jWICw~yi@4Ab`G@^s=I37{zX z0>p#nj$a_F_D`n{FCHIWH8-w?j#iXdJzgImg7_gZ0<$&YxVplo#5EcG!Uu1+I;~_6 z!x%6j&=B;IGIeuZPYhy$Ny(7;BqTK4#59jfBo0y>{OTjwxvHo%dH*JPO88m9LM(f% zzqO+8VFsf+$!g}PwW$j9;@xplw-1n)x=+*IH_z_8KX1tM1N4K@yMHCVou2DGrqw$7 z!p_E4UTNW~Il@g{U3a|VC$o|S|Kiq$kX+y02_V=*s~8K<9u;*Q?jk61!+PJlXP?Oq~Bx_yBEY>PlrmqlBCBz(f}8DX3;mgw)6Kks@E zTUwf*Gd=%opm#fHbYnEjcR7VAe#Ch<*zLU!xZ{~3BM@5~2}5x~X39@~o2bwC5aZ*c z_1phPdtFC+n?QR>XQr%2szH3>5M9^$*#;uD4pEgOS3%Iuo^vIue16i6LXfP3NOC(r z0XZApw=H?pxW{o~&cpPjar|~E-!I7~s~LhWSkN}P1Tw8ueQlbjqd$^fB+q(qz&lDC}7#`lSUC%DMjiv1R zWLzpfkk1D94`B(MVWuMWldN5Jqo#GW2U4FsM~kUL)NgWsfK6uM&*!&9Avn;kvqwh{ z_Y;j2NKcC2e+Lk+53J+e&PKqk(e0bn6~`8lCEM4emf71gi1Yo91`Cav1(eyC>YNj@ z7Xal@yB~6Tcif9fdo!AMGXONX-lf*o5%Tlsmo!2iZ)fq>2T_*DO{vg>ro&U{@}%)) z0%ft8_a8R#gVH?zEl`ODXrSE0h@W-IO;CH3ZSchu{#q=MZoj@(>-0{IKNPKdcXMP? z4I`Lb^>qPs*2E^J<=tJ)yQ_#d3wK8+M)GW<&&BTkspB3qGZb`^?B2snin;O$1E;af z@QIC6DVISD56UB5#i_iDX>!k$GBkc-_fr>x>XB93!2hfrbqZ ztuR^RbMIT##3Ht~o&=y)ic*^2ZSTqCtAN8>uy7Z;;u)|L9Fcnyt%l+!6Cg34x!TLi zlP`hO)olF6-ObULht0lp>uDn6>0o6d4LS z-C!_l>}k9Rjv))ppkliDqOv3k6RgCY`nij_{F6?B$VTq6XqZ&>D7}qJi3Pk`o8r4X zePHcLfek)+$%pXbWK>jm(HhLh)yt}M?ci?9={+mB6@c@tsNY|9UQZGK?IrFg32Hf* zsO}0w$)a8fSA?<*I>F;TjF6LwHW-6I9+rUB%lU zr=l1gT|PWI9ESu$^ezCG0DlC3K(@#?&$=XRw8U%GFO1m);}aB>*#VzA95ZD9gKNfX z#bk_X1@vlu5b_)kEtr;NQ%q!5fE6{(6gHhtp!m)dK8Xy!XlBQ;8IDZ9E5L9`{mNU;xEZ&}61{cI8cZr`-td?I~tqyG6> zC+)GLoEf8(26HjWs?TAzn}vqC9&&AQ(bV#}w{x3D6bz!RNY9E72N%aO7^0vu%Sz1b zE5Xo9xMm_ZbSb8;aJ;YhqN9eN(jtN7$xyh* zi}Lu3AwL<|etLMLED?o654nJB(g)_5RlhwP$aap~1Q~KWgbk;zqyb4s;Cr-Bz^oIB zLi}-v4ogRlxQmLuWd)1sqncN9%l%LB|1dwY-y_Y`Y>QH6ENrmpBKXkoKfpBMHiS>= z`^aOkaOx7_3DXHW5UI!w=Hv0^Mx444-o1AX8Z^Hy*KV=`_7Ylt+;89asdZm`q>?pC>JSDl|*i$o1P)uCU`xw+{HG=K9-`X8sFDQ2Bmx^Mm@nq*Za>Pkc;C^ z`1g`a!l{T>(K|K)!k=xcc0aMY{O1=N!fPp>UP7y(_}?M@*{mkaIb6bpSdu|Rn!&}< zI;vMOI(t@P-ZyMgyRdlAf=e2S+yxsp6RT_<3ExS+)K025I$^} zAtMd$6&g0ge`nnppN~4d%q;sP{|Wk4G7J^pe}&d6mkb1s-hc~VPflkivqdg;H{-+! zhFypUI}ODJgn1AwnwtV#rUB}~Lk&{){H&;0u!I6dLiz*w4xtg1Q23L6>q$2LNDTOqfStF*t62+n3x z%WAiE>O#T2;0#DIGBR)pl`j80_ffD!IB_g08RrWgL6K>1k4myZ7enGcT;}NfP*nV% zn^0NFf$89R4LkNg<=$yxGt~6gP??6%~1wdgeZfk zvFEYz7$HRIdg#P3A?WD`BpRzFawv%jC9_7hVR|AbtRn3dBMB-~UoeNzc5mI6kp|2o zRO%ZgiABG2C}h>=jjP6oCQZbPD!lFY)>o_{nV}}!AIcy-n#?1(g;@CEPW0mv1BNvh zgW^~HYIoOaug?EVx_uvDXD6bu{kfEYXyE_U@r?-4+?KFL7$38!C4KuDC93R)gg$Nttbw4 zcQ>}YTYvAg<_BX`{(#eq0`vNdy4_iO*-^wywt}=}oG3Bt__LxP%dIiaUz@bUkilFK+wp zPsLxbzsME#-`cX1c#NKG^rutMs@kKZ3F-5kCsU5#sUxY0aXg}_A||0jB2brY(zH=^ zPwUeR>@A5#PkvGQM!INPEI&&TktI_wbA(D_?YH(W_~WEAoIrB3Lku}YCc-4FT#xOgG7b}0%AP>QqlZtx7pY~Ga}b8VEKDiMA;-DNbCRvWvmEOK5OY_~DAf2}4Cn zV=;oOOLloH%ln>J)rb=iHmUB_?f2_X9q0Ss(@|+}7Sqt#>7)qx5JYtOT#vEPYM~Ie z=Ybplbm()d+}Mx5fdS;3yWchYhh7nZ@w@Yli9?V?GK)p_<9gyC!9raP^7zlhbfy9E zR7H|mqLWN}3csuU1`8g_xFys z)q~toC#xcpt0}9#dt-H1`|}f}=(>VL)^?!TF0iY@FJgE-A0amUiy!Z}kUhemQDsxH zqOm@N;~jyFA_aXhCSyUkhq?Q=^y8yGclwy9nPvnBAhml~$x-ua5=Ujve$W}?xgEz-08iA+CtX-e`N1> z=4kMU^Oz`3uB4q4KNFrsumJ@V~2vQvRK zBJ(a!4{wmq1FFSG3I)%fl4ufA!Q4}Gw&m>(mwZ&C1v1g&m+Y$H#x)}9h;MVOB&V2` zOcgGTtDNCI*g`#_p}1x2)m}O_XmA9@`6_uoY_-kPChz@L>yMm+*2|Er(}*UI60eDd z6T?N3?ds^{TiHV?*?UgddXCb@7oEyfI94``7n6}iv*9Q|<@0~na8tS@@6q5SG(yS0?M7%pc(N4x1lKei_FHjkS727L?W<@5= ziyD^3^_8Rl_3f}a27dx7{;z^l5pH~SI2Nj6y1WcI%d}z-ltnXNGNg4B;YU0$Ao*xy zP{H8*;`)cO;-fx_Z2``&g{NKSwX#{fyrbnd`otw+@I^8A$(8rJ+jqM^rJrATc_l}* zaMs*a-rwfk^jf`dCoTPxGL6tu9*K_a#nACqhvPFPKy?DW%~TB`B2_gY za8W39J&Yj@x-r18(dni@sHUc3Z~u2rQ>*&Z7QD&XH&!#L?z`c3wJZh0qTbAofW$^xt~)94{Oc47jlZZenT@z74% z;gRXep7}#RtzRjT{IVOOg4(FE>Io($s1nfMq7l*{2L<(Xog(N_Hm1{31gGGm6-VXq zra~n$&+F#+dUY+WC@}8H%E*i@DqA`Hv=mZ3X4QRF<+HXz_W1F^!I{?MVg0uGNk5mW z?yJkmJKFo30Kd!mG!_0Ce4<3cA`K#FAZa*7&R}1w#`;G}ijd1E{Na_PTOqG2n?xt8 zJZy*$f|yJC$if0Mo!6I`Q6*>^Y(!1oo{nAf z6&{!=jXFXVqbpT2)&iwlpDeBDt21LTD0L8CZJoB&o*d}bSSr3xME#imUQ#BnUfdH( zgoQ?GJ>Ao84 zz6s&Hp-alOnMi$sw`|RfLuZ`Gk0oeSNaoDEPk@h|lD}Orb?CtXk>86M`j=End%g7% zg(0$#L4dDM+|RQ5b*Ih_p6jF`OJvM5tclm-d0l%wG?h{~@R}1HnVUrv2mO;2kW6b-v7HeT4q-UFmo4XWCpe@_4I$1mbYC zx7BsQo#ND}CMLC94bF&a+v=>QT}0^DVl56g7mu@>r1t&q2Co-PwSHJ3quUF@$?)||9jo8cRf+&{+OiN?+jm3s0AC|9v2e-!Sfhn5N>q--@ z|8&v}x3;(5UlDoTgIN6T$_1vzX$x+Aq}{gB?Oe^xMkN@BXT<%uG&_vFJEE%TxDOgc zx;OkGCNuIrese!x~SA|#LY-aim~Na2_9@9uMW2^ETk0{^f9%`4Vgs-D`;8pvHo_5 zfP4}j{m@0u*F<`#$@Wc=ab|8ZO7WFVqQT!^PU50o3vl-gtpNmnNrz8WadWq)@(|nEKUZ$y#>L`d^5wdHtFb8T-2$!p7EPuq>(JnRos5&7s(; zU<+Z6{$ZYIysbvw<83&@rVTKR| z6Tb6DsB>G$?Dfs(YDgxlm&;^qHp*DBAKh7iPEW6bK2*k_nJEup($cE=)Vls_K-PRsJpb3TLrm!R96{mdi2lOBst5<|Bimhri06Z+3IEOJN|n< z@mANq)l2mFvv23sam@`CZ{2@Z?@#4Cbz1&7Tu>WS%;_ind#jYPHTPYzdtucmJJa}3 zuXqGQdmh2^#TUPazZVa}We_)b&$Ms(I&;N_WNp{ciH99T$!vCAi=Q9!=6Pk5=JzQ= zdkjSrarC)S{~Ymh32PL`b49|=HA(Mgu2$iXwpBT_vv|oS^BfNMi(l`13N&iDKj3GI62i`;dB4;9eBuL{v3oIr zJRcp44EdCT1T$82bbc~&`WtKXPrJ;Vtmh?TGe|-rhDZDbu$h7a#z08qh_6$$WC=Dm z>bZptCYn}tVT5}5Pt0c%?@Lf1DYlJF1A5wRiF0Q9*3D53U%I=HhwX89e}=`n-p!@{ z<{*$nEXKW@n>y>C)}7=&WK>5*SC!c=}6F4(ZsA>MG5GL<-+{Fy9;B_AK zbBh1Fey@&7kaWQe-;mCE6NpNHiUJ9XN2zX{fv2C@ciWF8JMul}eEY@O<@akVCC#eQ z1CR4(_ghzSqBrV(W*ikv1pnA-9L1e&uU3g-j4p4}M8CT&On+HfV)y?!Dne>}*n?9G z^)n}Qm5^to^VR$x0JT6$zciZYp%{>q2vVd}db1{Lz%@isG&wohZnqniIF5`~sK_7y z0kD8|-a1!WkBU;I@*;25(nO&va$j0q5d;zTND79NqG{*|q{Mq9C8QA1s6_guD~sOt z_QKoVH@SS&J7=QkMw1i91a}>H%_1P$w_kYSj+x2Mpm+D7`4=zuHu`qHrr-bI@>4Hf zIDY8iT`r2qX(hw?O^m3uQhtaEqfm<@Bm`25kURqe3ISl0n5c4#5GYXH7nhca$T}Y& zyx|Bhoim`E^F`?#b2W)ksUtJ>>3W5cOj^}(1OUJuO$>-24BoTP5eb!H@5Gg$Oq`@3 zAg&bQa*%nXdq47V004x*U?#fGmNa%DebtMuI{&cnImBlPfFOV$2IGPSaM#N6#8hi; z+V%H0p8JYJ)=@QyBW0+&y;rgQgU9Ydq)2NNA@L`Vos9LXMV=*bI?-%S&9suV;@LUx zPM$cnx$|V-`mo6fi}j^8`kLq;N7skfUOK*p9DI9*IC1a0qlp>09#-d;j}`XyllR?_ zHIFE^T>ryg7hB%`lV85F`M{kgpL*s?`5?dZt`ENS^ly2Upi+#$C5m?X#h#;a0 zT~Z)Hjh(&iYGZD;nZEGs^DCDwFU=)Rm>FViVk_^Sn|*F&BXWFVwxXzc{7C%iFFyVw z_buMNJfjG|`q;VCrwG;rON)@#d_DE4URGB?{4-lNh z*+I|SJgzpxb2;dnG$9iMz}%6OlgozzfRF%Dh$uO5xL*@NiZb@TAe(z{M0jFiqq;H z_x|YFmp`wRCPgU0(HV#oDW!-oM9(^aTOy@>r&ySbFFp6t`uaJa^>@}f6EjT!7<6*I zBXiBxrCs^T%a<2t&hTD0uBqdb)mJz3$)-Jiu#vC2o_9+}CIJ<206GN17yFQi1E7N8 zYXb@}V^}9bgt3mJ=(dEhlu~JuC`6-GcaZ1Svj`$M&&Fr~L?UbX=v2K*;#jJUri!D$ z%nj>Nyfwz8)e6|s+0rw|wW{}No)=1+PJ6Ev&BbZ8Ix)F^6#N#^Ry=Qm$%x4U=Td0)NKtRyw(a$i`N=V{Vt zwPy0Hv%9ky8EH*VG$tB_vpZXBl9vjQ>kS0-EQ5X)#mUTxrB^q0aR|Ug0dUSnO4A!^ zons-5@auI^XWw5Yk+b4d1@5}{@C(oVVH*AT$-CZj<5Ae;TNS6Bk+W%<$R`ch5lI7(~PxK`1cqO=-UswPSlvg>zxz229<{rqmH zmqbx&lu@MF&dttD%tEidSFa{mZAenf2K{`02j&k1IPooyVm01>d`+(Ik%>waf@Z)^2((deg@ny}xzd~uLv6BEt#)s-t(E-oHeX!noM#dv0- zu{gVsR$IOHE_AyP$JSd?QWV)#b0R0b(I1!~NfN-)-ZQh(3a-XH!}#a5dGPoB0*Gos z=?Q96(fzf9kAL;I;`Bc`e&$`<>raA-8AJ`iaHNe+B17n%b+x2YNoSRYt@Uj+=#wga znUipldxddk`^Bban-{)JQ+@x@#YfMre{KJjM~=-iMoTmFJCB`f&P+dW_k2^u^GS<| z0?krHiHINaLl{QYH>6Qv92u?!=H3bn7bsw9nq*nls3v*oPRulZ@@>cGW~bbs|M)AH zf9;vo?RGapf3!8ZFxgBRbsfh}sGnKRyKbkmw$onQ?}7JM*4Epd?uX7CqOyyH^afes z+;%rRe|c>#kxQ??7}loJ^u7lIjD`*OP$VMzhK$legB6(JhOBV zkn>(|zq_0Jeq>N9#bBPevhEO*kRAwGSAzrGS&vGc_xfAAjHJy}}C&lr0;Lnja4j$1&z>g#H@pt56_J zjcX->KESkZ{_ec@TI=J-k2&i^ATRCx%Zn$EEw{6h;`kjWmab%Yes!%C$*H-?x!EZb z86=G+CMnT-@ou(RNh7^;Wu+&@e%@zxPh4C}N0H=F|kLsjRido2Posps1rlMgCHn;UD*T9ds^ z(#pile6!VDI(cSuZ@=B|%pY8?HCm^SoM=|-X{3@$)Kn9t%XLhp?V*rFl|Ojpd;u!f zS|9*^L-BLegSZC9G}`;ei-P_mI02@n6A>XoB4XsZx1Av2Fa5zMCtE*v=y+TX)`=>p zgh(lXimt!!?Vo6*we6L&z3$Hb-u_IhwvOqgzS_}HjkUNOK$QjMg-?@;1MKCcac-$q zTbydWxZ8brX2yD%m`@H=vAcbq;(8o6oD3)Hj6Y40s|#V&b{|5qLR&_l6lT6XPO$fU z*Ijq6UAa`LRFX)Q*7?D}+p=VN|KSO*^#PU7Ow^NF4FHrjB&-Q_S^;5gqW=Eg!DxPQ zX5z{>UYI>}WTNXPrzR(tmb3LseJb8@*9o6C9)0}j`56DxKmSuQcVu;QYy3WLxpQh6 zGQx)Fhtbv_=8ZB!V98wF5dajBCu0G2^xuj!>ZE-$ednI2oGF zR76lAQGmVDdw=MGLI0b-^K1X^XaCEeUtGj8>r=>j#Vwcv=fC-t7hioUvx92u=+wf| zjdNca?5rA=m(K6ZPF4;zDil#8ZEauN@TKc=?mbs4X}9oG3>9Clu5BJXmKu=uUY4~7 z>D)myGs;;Y0RbNID~9Z-Ycj6Uw-9zFX4U}yHf4A!mCA_|$J_fmz?>vWnH8XniefIy z=|dwZwnCyqVx{*~3WR;>asrVrjK2N=0F004^z00|=&#$wnqY7`8Qiec7(AcQIx zXehpbTkT;@WNhydmKkF66S_s)+nT+Klh*h&@cTjzxD5a z_0gaID<7(+uh^pWw6vS=JJ-qDZu!iq?%M9z$A0zw?>JbCNW%q)&DvnEQ#e5DR?fF- zs?8;LBTsQOS8GHnnRK&DbHIb$wToq$dsjA=jzOb^!e|IX&u7?k^oYm+!2Wd~#`rWK z66PDV!>?LU|Ge+Md%yOzub-WqTv=J!9#~dNfmCPbmDc(GuFVG3YE}CCuGiOT6~(hF zQR!h=UgpTI-fHP2om^NveDu(IyT7xw4M>qT#||yJ(iYiZX`=e%E9JRY&yl$@{pWt> znh*UJUzY{}fYDs#VZIyoequr4upfW`3wx2U2Exez09;0ut+kbjN>r~mKJef@xyP5E zU!f9bXBUbA7o9;dxODj7p@WA`sI)2usxzFbw$8{H}0ZmBh?QPeX^LxygGp1o(e z5u4!}fY3EJ+R_&TV!nQX;)W20Yd*1?kNshmo0dMf$ZnuMP2x%}i`U(($1itv^d++A zYAgQPzw+T<{6~NA$zN}N;uEKi9bMSoUH--^zpl;H0olph{rA4}AslRWyPMq{Ca07B zZujtfRdav8-Hjtt)skv#E=ILR^ZdE9hYqwR>haF`jg592DKk~6RU4JV%dC++TopwF zf>1tJG|UFCNd{;r*98C|LWIb-G3c9_tJUh=ci(;X<(Hm#^4pizHyNaHU|E~Ex3g9B zI?2?u&2uiJa(645n2ah_0s--WB;JAdC<0NUYfYsz^!67C=WCH23`pt0?q1rcm!172 zsUBHAP^-jL3|{`D-+tiF{`@U3Z20-hXd2zH{wt$JAOQh5B*VaH?++gZ2m^w6)@gO$ zRQns7hofY!**q{kb8zwC&e_$&3rEkKxxbPmI*F_GNVHnt-=U^>?oH0jMRA;$`C4g8 zhFFJ&;~4di*MytivojK1doqk_MQ_OO5rw(3d|WpsQ0W^1epFHkQ%_$1ClS=9*k0|O ze;%*bJO@B_Wp(*@df?dgd%Yq^s(I$2>yOw#1okSez3%2=qki~oLsTvi+L8|(Ui{gg zd)GhvUw`i-Kl-t~?(Dz*)n8q^{Aw}i@p5Z6g^icKXaL$-o+xTYuCzO8;#iz_VK9JXs=$d zMXsY*Zevh@2J|2#!UBZg;c7QvxB-ktgN*awz>OOgj|ecCnAl!lyS%YgOB0n;(prlr z)R&+A(yNzWKDK-$u2)Q&sCs4c;A|tU=KEz*sR);u^*b)o>gui!aP8!ya0ZC?UJP7! zp6+#S6HX5tt1O?qarsNwmNz;C5Xtqs{R=OmG1s{d66XWcn5ZnD5-6_!{6vjA9=Op< z10V?VYo%GVdQCG`a2V+kDVy_M_aFNo{=s`TcDuj$i@&jP=|W<}53)~xb-lf}@Tc!h z^7ht5jgrJ}U&#(W@^DkR3*UMQBchTd%X)63(AK$fa;~x6<=w&l;-qTUeCd4a)Lo5Z zhf8)iI$p2A0mC(7Cn6wxO)X_8$2XcmbE`JM_*q0Lb@JpX5?R^nfAUM;{_D#JFiz5D zgOqY*5#}CZt>ua$+u1=P5Ku%)Ym`qfDgZR1x`XFtDZ1 z2A!U*%`R&bNzk~y2^%te{t#GT!*?Ez;gO@W4;#`b^dC{>Lm0pUB2Ijo#8a)BVqaM6 zvwkPb;>4uW)u%3=eQxbsycpwpyHR02=pjlRX|WDW1={0|1BS$RD1IKC9{~kD zGhZhPx?y=&Y{_p_3%b^BI$9EmD2h>Ee*pk{Bz^P5ii_+fe+77bZ}QraCo&!ejz9=X z8H!GvzufuUXMcyJsMXc}_6B&l{|Mf@urp|LzXv*o_Wr=k9htxX)MBD)jmj(EdUgNR z&B0zbHq>ZF&Y8Y-mDE*YMo$?`9C+Kk)kAY-;Tim>>oO|(kIJ4`>puv{@`lYO$kQXK zn|s%5tli$et5ae1_0n}$p9uzz1H5AzAQ*-?}T}{BZIeP zmH{){vKVB}yXMS{6&mE(-rAaJOfI2pu3W54Oo;a<-t!S867TV4ppYDv|iD+9<_;;~!u|l)IU| z$=R)_NFYdF(g?UB2%vOamdn5W8;?Kx%uB7NBJOVPug%R(O;1Gg(MES~bA1mhNu|_L z>-fn74?n<>bGBGKy>#%@9j|=*!=nqdHC>=UbnNgx%J7fKmW|Rm7jk1 z-FM%2k9TF(-X|i{oREH>y%+C=kV~iI*jww%GVk_Wmieq-ls0PAf&y)=(eh=E-a0OJ zR$igFR`j|{XYM_C-y@?acj))*`I^P>8q=er*`o*mjkf>MuFvAH?)xkvz`)`?voNrD zW-ka!^RtgV_hR8}QcVC*QKpnSbm)lIDoS*7a-vpGl1M27C}2xy)T#v;=b1==g#+t} z1!!32X9fy$YDB_o4eL6?H+3yF{`=by8Ng!@L1YFHK{3YcY;`~V?>{xYp#S2}9#&wh zwS%AhwVjPC>CgP-zdTWUdF9-5n=kL6FBaZ@$K>*ygWTF4lCq@-%$6RUUA%Xy*v~g! zS&K}xv9{rQ`N{XZZEtTMl=}KtU+HzGDpfVVFg3qial>79bOeonFEXr$sZf~>>l24F zm&QrjZ8gHeVY0Ne^m9M=v;XiP{sIy-E6KT?{=fLrbAPvyMw-Bus7M(T*XusZ%U(Bb zHUWUyBT<=Uy%$%YNZl^Aeu-7($+My40d;%RXWlx_osj4Ct(=H$yl@kZyX3| zVL))h{)SxL_?d;TT5$g`hzD50pd9wjS!RcBYI<^hdh(?UYxUODf!Rr4*j{g7qR#Z} zTyt`=TCb8uRHz7w!a9~}rBdV^2*#c~1|)jW2M%3m02q};gD%}`_w^Cf@B6Y3HFw7qO?4tD z?Ld$LK)3`H5-76*kxVOEe%oOrsvT?EzSq-qba}bGX-?g#PMvPp(mwu`S0<)U>zJ6s zsn4OeNQ7P_=y8Jpp~f)a84*Im3;^JEy?<=X{Ifs%7k74c{{G+lAM5pc8tK*D&XZU6 z-?7vLMDd=KQ6|z+Qg-*temAZ+5m1129965S_pUxOy}z?tWJR@J=e-U^xk_p}ZIJ25 zCh6{M-uc6ym^gThy+_1r`=mERgNCDQ*xef*{=w-zGkY(i5t+V|itvZ8=!r6(5ag)NFs1|ptOC-i^& zZ$9|T|MYXe@b~}8fB856i-X6aoxK+ljI^o=I1vV5K<`8Aicty+K*Fds)n;QU8t2dD zz5ed$GxbKJxwnqX|5OupcffzZB(b{@BGLo#wEVnLVuevFFd7yR^Q#+ieeuo$c+d-R-Lt@eCE2-f@!X}IdOgvKIJ|!7NQ`cEv7kMcP|Fi%0!zb?C|409izyHlYG|MwTTuG~ge6Msi9FxLf z+@L}*C^2|a1T&38<<5a~&+oP-+yf6!8kjiutY2T{kAfT+_Hn3dKhj;7{k(^>_BlvR-#V-R4FW%qsjFPXFww#e5qXK!Yjg5YB~2bft# z-XH$wo%fza!Y?5)00bRrX6y}$_V&)n0|`(KNgqCXe81D(?hGz=ds*p{Bx&uohO9e*IgIw%y4?jk(zg=U4#L2%HDNh{FMSa+TRB za&?N{n?8lV2d#7t&;{}B!1)V-xCc<+K$M_Ci~s}`SSLjI(?9p#!-t;#*Z=Z=eEyj~ z^`HM2fA+pRJL?-S_WE1a6%?{oMgeC`(rC=vy#DHQdAGlE^7M@J=EbLB(A%G1!efim zEMlD}5-%S-kcc7#Z9FpwTb7qzSzTG#*lw41 zEjDIPpDe92q-)KIrNw3I&X+=I;h3f0>qn|SGd+3q@WI2&OG%tCBWq&zrFF~8OF#Re z-hcVOJ^sb7$_L(g>VxmP!0A?2BoD4fMGu1>uM04HPgz-tX}l^cAw*UZg6bbKx5 z5&*#SU??~i_V55q4DJY?!!T2D0A`4jU>Nk}T_3#r_=y9*`TzUM-~HQ9fAq&be(wWk zn$uLRMb7PO0s!r7Ru1^fpM7a{^~K3qy}R3f;)(5k&z?TL`1bd-8qKIELi;~pu@wLZ zum%DUXa$i13T1vCSLcQ%BTS5cvn8)U5&pg3`~7cy^IQMV|JVO4yKDH^r!DEUUUzw( zb-U~5&Q32MR$BW4Lc<9G6`|5vY2&O*>opKWqT1y2-S7TD*6SLh*U!Fu$2&eS?BNPy z7f2{m1|K7w$NH`h`FG^f$ioDILcuj=XnT>tb)~ zO0Qj;oK}RSG{R7x3XtMT#X1Hc6&X?*mDW*GX-xzB-ObI-bI%{S_o3lu1#hB0q9wq6 z1OV83MuaFbJG-5&o$l(!?$*x!{(iS8Gh15kN&rL^iSLn$y0t6ju52)j0XLqmYZYGr}(D3Zb>u1lc zeCT~|TV80)P1h${m9liq3^0VHzK-81^4ikS?aT*2oPOj-qSo|VA;sU)5XF`okN(#6 zff9KA`2fO%q!2U$4ZBMO0HGx63H8-3I0}Z~9svN@!ESqd=Ai!h|Mp{pb~c%udExnI zHn;oi-JsW5Ip3L@l=dz!EKC7sOLKZ+y0*E!m!`b9+&~=4V1_M*S)mva4AifyuoT3A z2oQiUw~&Pq5e0%!*IPJEMdZ|}lK{ZpU%qsSjL~sIN-JZ4&}c2b9Bix#5hZC-tEH8S z(h+K{0lXAtQC8zbMKS5fIa}^+BT}t3aq+2d-19>}k=C2cJX`??w-W{FVPzA5J;yN> z1%LL7-#)jpofoBZHZl=_grQMMrD5W<$l4`?GN}Lwvr_8Uzx?#!x#q$|Wnc@U`r#92 zye%$Yz7mJ`4zVttSx4#R^{u^5JDo~8yL+>9vzu!x|L&8&KQq5v zP3c{4zx$!P4>oGXj}WM1MnG8Ih$wH^>2EO~AVg8$O%q$*XaQVzJ^*mo^);fRU?Hwh z0_XsSbumGKK$`&|Gyno1OyEl?N|&Z7M4R`${g75iHJP#~cQ(6uQ49us?;x#2MP5$L zG&k1UXYM{!`l2kuWyl!hf}j;CW=23I;=v;_1SP%!TCcfSqfYTx>{asU<(5QP{g@#@CTAAR+ib7wDB8qGLPjgEww$Ry25k@uY~j1YSs zs)PXmDMc_S?XP_P>A&`g_aw0@ihMRr?l^PTpx@8)veKw)V+5h}EZLxvrYH;`u}KA( zl%$~iSo;wKQcQ-HC*8Fe&{$o$QxN*mk>3i>3IJ!KoHCoTtB=_)ZWyRf<4a>z&PE z$YI2KGj3pFOv?{@4C2`xJ2}(qb@^&MF98K}?M^NLb|@0$gDeOD5@{48;{y3G4tk4Q z2?CJTSy8&JOKH7fk`xgn^2!)j)A&ZyX%buKv)n%W@}+0~x3SCnoxSDdr8~~t@zj$~m8AuwBG0ulLfEXPM5wh% zj6yOZyncBlilZzWh;W_{l#Uydi{AV0-rD5+(O1sCys_2!`cs$QdH<33zvIN*WQCcn z{K>d_3B^JX8hCm_PL_|adpcN{DFheEuWkm!CKq(z?6a-2}xCRln zmII^;fkDuPxke&@5Wp@lWC0I>17Te;xFHT82!a412R1y6DkY4F0T}-l-f}p^*Is(o z?XFi29aLI_urfv`NjVq@voL`70Kfn`G8(bmywXP>*J>c*y(b}HCtgYmUZlUjd*IHu z&7HVYgx~DwX#L!am!3PjKCr5=+?ZT!g0O%sbA@1{xGZxZD9TLfrjFv?{;CL*PL+z; zTL4Nb4OpzMMe<; zuyfn1SIW+ATAv&^r&Sy$^^ow)E}z-mxY*m@nwU9U<~?1X|IDM$KK9JY+aEajj{BCE z=j%n`$4tq$@CAHNnbt7?grSY&DVQ)sr-c+VjFK24^~1q8JT73!j2;TEi5MUNViAwR zjNUT<2#yfE!-xAJ$Wz8(#MiX6gi(YTAYjo(#40!X>lhd>Z{ZLaKjiYo^HFO;$B}oI zSrAc05h?}FjZ+XJB5e>!fz9@IfjMq8%R#%->qSWn&XI{HPuzX*9UnRI(0fqnYe^ut z=^6Up{rleqaZ%EmT0B{6Ofs``Ov-pW08~+&iU@m)L}f9sMc+jAD5@wGF-K+D({VMb zG+oi3TRi&sE9?K}ix>X#kKADgUDIryK6$F%YUV|$h6vdmz4Gn{j{MkrPkCRK z%=G;~C|Dt2fU1P4q%7l-&xoNBk~&gEAyGz@;ZNbX7(o*Nfx|fv3VIOJu=L7?U3x0DOkcbcs$$E#69_gK(Wp;o=2u2ut z!(|cD?~uYq)v7X4(d!Dc_bwX@bbaF9ANt9O*}1actxeCj77qaoS&LWG#Op?(*E2mm ze0!jr%)?LSn(`prN)G7id#p_ym|ebSX6YUP++90c zmYH)_Kmzwn>c^vM?^dsF~#}z!HB{8FR!dzJbyljHrJ--@A}}MPNx>UNEAh+l+xOy z32HS&{E|xQbwFbFN-LA5I*MJMMYR?n4Y4}jBf{%^{f)QW#Ps(1xhSdET65Dn*}n2z zZ*Q$Wxm1>eK!i{x0R)N?22|Q;6De(!HX;J-l}TLTft`-iL1(8`ZI#y5YxOHToxk(H zf9CO**MI7V?^~K(q%#kc)}@uIQYJEpm0Gpl{GC5~?AN~hQk=v^-Z!SAbky%|RvRtv zJfcD%rA?Gndfgozr%9!j_uFx`Ns8FnBvOw(b8c&I@N++L_Z!~PP4)Y4=UBYa!*BCc zy;&9Ldbf)Q5%DMhU1& zZ-09jM<60ohfm(~k)M3_4?pEP+i98>c@{=tG7>6^s#TpPBCK_!O(Y_Y#almn{ESk{ zJ4Yif(Y0HDpwr#@YZ{p*g#P~Jth+Taf3h`qyt{L$(wGB5=k5OXrKH-3(?;M4n7AH_ z4N4~f;O)RfsdqN-?^m01gU)uD4@gHv(W_P}W!C%WpZd~oeDSG!k1sxW$D!i~rWd40 z2NXr7R~Enf=%b(d($lOfCW?lKG_&_U!~)Ja03lQ+s)^V^cPFh)>PXol(Nj-F7&n1H9t(}a(RgtfCWFBr2q4@G1we!m=nV*ltH=Q)1R25O$H)>u zA`Zx`5paN!6yEg1lo7$rIrsFpzfDAsyz`wyW_<|OnI{$xJ^15);kieDzudZJ<%l`V5J zQLEYX?7#B#*)KlvV!c*N3@SoE%<{6I7u8y$8X+Kg&qO6D&Fq{lwMoh%6JQ`BWdIZ+ zm3d!BDFn4FKxd1BlmfVLdF^!{`OWqF0r2{C$I%x?aS~6>qcYd+FmPGuv^JikcHO6s zC+BW3jQ;xb2f}8LqyUkwY4rgB0tKjUXdwuAlrS}9$X$dHm}mG@2!yDDVlb*9%?T0J z@CXp$FfUQS4Rep+)8mX7V8l>$uZ90$n9?0Ke3o!1G2qP&xHjE38_}CMsW(H0hKNK zNjmGDV{fgs+N9$zfe1;(-dRHJZLUlV>_LRtd+*B9dVdY@=9c>X<8Sl2st}0cZ9Kg= z^PWF-i-+Gx{$B)@ejU=`mZnA%LSY1z0T==@K@<(A)sYHK02~6>In*?-)yhTy9J2nx zG6>HOKwg}eFmzrKfe5n<3$B7J;1Os%jVDA!BN_bRNrR)mC^CfFdq2EJyjkz5)9F0- z%rnhq^TCH7PLkxhv${gst&O?oJs*DTcenfd+flVfQIymhaau(LZDIrn00;Imd*YrG zXYQ(8zWkZr`@K_l+;Q;Gp?aecSR-$(F{eqZST&1mKdw&ob}uXK^1*&upJZo|v@iSl zU>^jD43TCohuNC*s7PF)OcLs(fXdra#FNs_d!-YllR@b9N*fhb z0M($^1`ur$5C&50ol*qA?48!8L-1Gh) zedhPO-PH?ewPNBpu2jdb!B&)_c>dstcYIJp4lFI5K6B=GKlQ0B%bLx`gAYFN&i8%b zTG^u8H=Xx)lggxutFFi^&H1dmt(39lph`1QlxmX{{r$KyfkXlRiYUMmW?2XLu2Ll8 z5rDm8?{t(pDA}`$;<(z%I@_+u0XZU-RwocqSe&yAIVt08rj$lfAVQ>ASVRcXGlMcp zMF40_>YPPX>`L!T>oOzNJnMS)^d{SW->Zg0A$}a{0*6RDxOh0)LmoMb%Z4J(;{^kV zB&ZmGV3-I4BPwAB1Vku6-h0o^OUc3_P5=;)kO(P2Z4vOA^brBnFtLUZBPl>lNC*fD zWn8d+-8(@Xr>C=Xb1-uKTLmWwB8}Mtr{4XMXMg|S=KUTZ*s@gG#MP=YF}HWT$oxI; zXim?D*FAmbop+o$bNU7r*$WKlSmC-+9+vSC7QoGffl~c|Wbx#W?{T zS6i+yuFP$ji-^*ZEA#3^r7Zfkv`WVT8;%I#8G*ca0K(3)D*?cJt04gdXLBTolNtgP z{dP9k?d`7tKy&)AE&5#cNkv3zRNLm^090Y;UD%xfAxf%6(I*{~_d=kQD$4;oYfO|6 zdZFWg`)~Do)I>?Zv7?B0BMmA#Zg@~vME;3A;%ct*y5z{5CtE0z`A3b*bM?d

nKGeWlX=lG3ahroAb5FC0AzN7S5F*OcaJ- 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

{qRCMD*X9yzZ-o39r z`Jt)BzO&Z_!)4z6zgJ!y`0M-?N2K`w?7;DBZyyuB#$=Z<&@Fgm;LDHIP(p(Y5&QlA zAYd812N2XMh@p~F0zTly~^E#+0&9=tUUd@)kd$V^(I~%JUcrv+n4O6 z&qp(NR3;uy+rNRAE?k;VN+VEpuj2HsY2|(AL>!?qHlpnlliOv{UN8r&9mJi>m`-oc zo`l)%xtM3G&6zlI07}$bV1(TWix#|A-xR3^018xu#-LF*M7;g6q9BbJAw@y5{5lu; zT{nXm1qGbzy|lS81Y;cNj}L({R(V{i4}gWh1nBqswzTX$2W@=;g$6{3C`ccTp%4Hd z!rnU~Pk zTaV04PxZSU+Fy^meX32|b)sENto^fy>&B=O(6V(0N98yGdtNYYjNNS6`{eQ`LOk?7pI+DJwlUceJ{Fp;AO~T+XkS5jfTj+ax&|Qj#jCHZ?5^%cdScMs#m? ztG4k%XZrM+2WF>c%l$o_R9UX*^jLpG?rgl|``at=TxIqYo_}g*@A2K!cP*@~Om|;e zn56CAQ=Me4e|!p`ezc$;j*s3`q+g%yUWl*?jf2rdJ5`IUQk z&XF%Qj z;OFbl+|gbA7grWnCr=*ktezq)`#lZ5-`(x;6L#9|9^Q4 z9LO;i9{>Uc9!C08LBw+mToaMCwY7G;o#(kLOF&=`q>w1+XAy!D5f&yzB8)VoY7rs= zf+zqF$il!#z_7R5ZPeP;w9#r#m{i*l=q;4_1J(#e0(E1t=y3yE&&|v|{KzBgYukgp zUKvg5x^Fw%m1waupC+5{n>qjG_TdKYeYmyu1UGH9N-9q3HO@4VgJ^>4liT~2GgN{* zYPqb;8LC7L(i4&lqDZNPDsfa&RO@mR&AuY#SS3ms1WiJsj4}=i5k?fFb!;@mN!KYX zix9R>$Fq~k;!^{F{aqJJy&EdSy){B5B&ZAU)};oaR_K*4sk^&#)qa@tJMlw zF93wtqu=k1m|q~mN@)oqA0PliDvYWaCId7QsRBeEGXN1FOhseJ2j$k*cC}KQnw*Z4 zB(⪼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{l8b!xy2Fp(#_NQ38_V|0W55oFCiuCB#92Cco7#86yY*e(t@oMD zb=zwfZn>wk{^QAig6S?HI_VcyQdVA)>0PPR|_e%3rG@H|M9?Y)s@pcN2;$p8R~ z7g0tn0HM$gwe%{pdd^YCD9md!{tf9cBd?%|>5PtUieM!HJ3@`c%@Ml_Jy?3!B7 zl|#MRO$Ty0wr(uaF3gD+W9IpRA;5Yj4HtWybf^8%s6# zHohCM(P+HceRy5?y-)oIg~T9QdxR*!h=Aw;3X3HmA`OTLD8PV%f&dIaL;|1y7?A{s zM4UJfA_7vH#VJ&lEdnJ;y1cm3Znl|8DLpbaS{UI<^*;Tc$< zf5C~ch!X}8V39ue96+;U0Yqrj9Fh^-Q291EZbPGtt>Ah zDIyGlpgK5G9T=z%RECB}#-=8#LxbddEZc-G=mZ5E^q0Pf00=TLhzR$$M*o�Fv(@ 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

S0)7s`s1j#bb%t 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%0Av7h07Bff48HFZ005A^ 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 z zDQsZ5XX9C;>|jN=OsY)%Q|?^Z6_@kpjC6f<-!ueISzyzH7a>hz%-ZEp!v*B3(We*zc97QQUobbcBIihDWobgCNKP-156$`_Qkd$mHA|MMfEa z9?vr(!wik)oDx602+g8EJeKnbUXx9z&~p?xGXog@)b%y7$;w|J5zA0rE!*tod1Mg} z-pttCK<&TNn4Z8Ld$Hrhf>}Ups0|322le4U=B(ED8~6vd`98laqpx+!c(f_826+@d z!j_Fc**O&InRHg!e*OAo4Ye>ctH@?nBQZ$_b_ahPrKBOiSpmtfi$K}MA2;@0)(bep z*8Jchz|-4q7yT_hn#Z-=Yf(YK;z`Jd}{Q^7BLN?%D^ojY6S{ zo=@#dq%Kb#u*%jo$%7q(-V3|8GDe#Psg0JRS zp1%4T!5?9~PxWvkMU5N?&+d|axHVeSWNT+1?1tE!%g_9~)mC+R4syz!$M!`+}0-m)y0bq3hQ*b5^)`KX!{;u<_Fo;RuQi z`NIK}+!yJLH+cDTPs$Wqc9(lS&21mgEt#g2!(yBp^lyhOs~i9PF=l7*VV(y_QRp#u zgp4(`&yxZKXaN8P3~&b8+rv!d|I3IyY_PhWwSvBS283j`F1q%4suQju1;pl|GQadm zUhBMto}opS)d1`Q^gEQ!slfT(3ORbJKQ9;u3}F}!!dc5lMZxI3YVk85YSw208Qq3| zyrw{DdkFBc-QB8Lc0fFZz#zq10PPT@bjHxdjf9dWk^`xTuWU_{`{28m=@tYxj)mu4 zZ#zu$XXWjs2bjpXB$Bf^2h!pnQNSKWtS`usbfwLW`YaEQEpVGLpq~ohkDO;Q-*)xq z%2)*|zj8w3YOmJ9(=8lA{x&YTmu4&@)8s8AvL=5r45!wJ%>N1BnPA2D3TQQm z)O`HT@AP!~26kd_OCG|@(XUW%{xJaoh$EuGeYH8HzrnfKclUhny#QLX16_gJn1|e6 zZ%-2EE@IauZW_$+b&96qM9)r-2QawnH)FwQSf>8%^HkP@?^(;3BV4VF*mdt@Cgf%u za*xxy6m{+#_4vro$v-n+in)JC8N9gAY<^&qS5mgaTZ3hBp#X)2z?x-nWbguc@w&A&qTVC4M*ia8nr>YKZ@LD|@!?&^!8@GW1CzG!CS>Ti zS9xFXm`?_?h+P6+1ZjgHOW%Ufwwz}w&v&tOos>ag#OLp7q}@^LO_utOXNeADH%GI~ zkW1(r$VP!$Z4ODW>AB)t?=DYZwj6wBg%25YF57&1M~(bK1tmiD!AQHSODsG)cQfT<9xy4%8mbP2_FMY3Z_Qj zZ<~@9A)e+_y4x<^22X6n4lGwgwwEEk@HcFKpO_J4O`n0m6GO8>=Q-7wl%NUX1aa`? z7Wj4^a-khDSEb=!lkYny4KsdTQcb@1+C2#LYsnXPmS&LtaK7qFD#<=1|Nl66Snj=b z{Wn;1YTev&gBy9z@m^^jQCLAifnw0*itn-;Abg^pI*bAs?uPC6Qd^1QIsyRW@1qEP zohLKtqd0zs*C|)_=tK#6h=Bmj9HORRy2!bi8k@Y6%JErOBa88b-+Y(gC{oU}Z?n9m zm#-sUq}w0*4xg>)HC7Y}X6OPkoTPohGXt9*7^A=)yJzH-rY@h-X2R&KznpF-gVB63 z21I|D&x&^|4dY}f8Ev=1B52{ZY(A=AITAjL=RbMs@BM2g5e@x#fr(n|WwT-}DYeYNPu2!0NUw(vgjvZygK2V_M3j}UX9 zpY!`kTMKk3KzIYpJS%akF+Om4)$qA-(Unc+eZHY!VnPDY$m7ck{(!kW^sQ-BSH3j@ zzoWnO5|;wDQoWn@s&u^Q4lnSM#*t`};sgf)RsMquy&R<`pM77mcH3v*LAMJq$gH4+ z79Zqw2_Y$ze0~Smc9si5bQ@#Q=6h@ClJQ$rS%+Y)qxCG29W(VQ=NV<7q?

FmhwGw0c?gvd5!+uclNF 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 z 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

@zy~5W6AD`%WTYBTCXrJK!ZarI}+hCD41!~ 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%0Ao#PJR*V+d8N#bZ4-At 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 z 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