This is page 1 of 17. Use http://codebase.md/wasdubya/x64dbgmcp?page={x} to view the full context. # Directory Structure ``` ├── build │ ├── MCPx64dbg.dp32 │ └── MCPx64dbg.dp64 ├── CMakeLists.txt ├── deps │ ├── pluginsdk │ │ ├── _dbgfunctions.h │ │ ├── _plugin_types.h │ │ ├── _plugins.h │ │ ├── _scriptapi_argument.h │ │ ├── _scriptapi_assembler.h │ │ ├── _scriptapi_bookmark.h │ │ ├── _scriptapi_comment.h │ │ ├── _scriptapi_debug.h │ │ ├── _scriptapi_flag.h │ │ ├── _scriptapi_function.h │ │ ├── _scriptapi_gui.h │ │ ├── _scriptapi_label.h │ │ ├── _scriptapi_memory.h │ │ ├── _scriptapi_misc.h │ │ ├── _scriptapi_module.h │ │ ├── _scriptapi_pattern.h │ │ ├── _scriptapi_register.h │ │ ├── _scriptapi_stack.h │ │ ├── _scriptapi_symbol.h │ │ ├── _scriptapi.h │ │ ├── bridgegraph.h │ │ ├── bridgelist.h │ │ ├── bridgemain.h │ │ ├── dbghelp │ │ │ ├── dbghelp_x64.a │ │ │ ├── dbghelp_x64.lib │ │ │ ├── dbghelp_x86.a │ │ │ ├── dbghelp_x86.lib │ │ │ └── dbghelp.h │ │ ├── DeviceNameResolver │ │ │ ├── DeviceNameResolver_x64.a │ │ │ ├── DeviceNameResolver_x64.lib │ │ │ ├── DeviceNameResolver_x86.a │ │ │ ├── DeviceNameResolver_x86.lib │ │ │ └── DeviceNameResolver.h │ │ ├── jansson │ │ │ ├── jansson_config.h │ │ │ ├── jansson_x64.a │ │ │ ├── jansson_x64.lib │ │ │ ├── jansson_x64dbg.h │ │ │ ├── jansson_x86.a │ │ │ ├── jansson_x86.lib │ │ │ └── jansson.h │ │ ├── lz4 │ │ │ ├── lz4_x64.a │ │ │ ├── lz4_x64.lib │ │ │ ├── lz4_x86.a │ │ │ ├── lz4_x86.lib │ │ │ ├── lz4.h │ │ │ ├── lz4file.h │ │ │ └── lz4hc.h │ │ ├── nlohmann │ │ │ ├── adl_serializer.hpp │ │ │ ├── byte_container_with_subtype.hpp │ │ │ ├── detail │ │ │ │ ├── abi_macros.hpp │ │ │ │ ├── conversions │ │ │ │ │ ├── from_json.hpp │ │ │ │ │ ├── to_chars.hpp │ │ │ │ │ └── to_json.hpp │ │ │ │ ├── exceptions.hpp │ │ │ │ ├── hash.hpp │ │ │ │ ├── input │ │ │ │ │ ├── binary_reader.hpp │ │ │ │ │ ├── input_adapters.hpp │ │ │ │ │ ├── json_sax.hpp │ │ │ │ │ ├── lexer.hpp │ │ │ │ │ ├── parser.hpp │ │ │ │ │ └── position_t.hpp │ │ │ │ ├── iterators │ │ │ │ │ ├── internal_iterator.hpp │ │ │ │ │ ├── iter_impl.hpp │ │ │ │ │ ├── iteration_proxy.hpp │ │ │ │ │ ├── iterator_traits.hpp │ │ │ │ │ ├── json_reverse_iterator.hpp │ │ │ │ │ └── primitive_iterator.hpp │ │ │ │ ├── json_custom_base_class.hpp │ │ │ │ ├── json_pointer.hpp │ │ │ │ ├── json_ref.hpp │ │ │ │ ├── macro_scope.hpp │ │ │ │ ├── macro_unscope.hpp │ │ │ │ ├── meta │ │ │ │ │ ├── call_std │ │ │ │ │ │ ├── begin.hpp │ │ │ │ │ │ └── end.hpp │ │ │ │ │ ├── cpp_future.hpp │ │ │ │ │ ├── detected.hpp │ │ │ │ │ ├── identity_tag.hpp │ │ │ │ │ ├── is_sax.hpp │ │ │ │ │ ├── std_fs.hpp │ │ │ │ │ ├── type_traits.hpp │ │ │ │ │ └── void_t.hpp │ │ │ │ ├── output │ │ │ │ │ ├── binary_writer.hpp │ │ │ │ │ ├── output_adapters.hpp │ │ │ │ │ └── serializer.hpp │ │ │ │ ├── string_concat.hpp │ │ │ │ ├── string_escape.hpp │ │ │ │ └── value_t.hpp │ │ │ ├── json_fwd.hpp │ │ │ ├── json.hpp │ │ │ ├── ordered_map.hpp │ │ │ └── thirdparty │ │ │ └── hedley │ │ │ ├── hedley_undef.hpp │ │ │ └── hedley.hpp │ │ ├── TitanEngine │ │ │ ├── TitanEngine_x64.a │ │ │ ├── TitanEngine_x64.lib │ │ │ ├── TitanEngine_x86.a │ │ │ ├── TitanEngine_x86.lib │ │ │ └── TitanEngine.h │ │ ├── x32bridge.lib │ │ ├── x32dbg.lib │ │ ├── x64bridge.lib │ │ ├── x64dbg.lib │ │ └── XEDParse │ │ ├── XEDParse_x64.a │ │ ├── XEDParse_x64.lib │ │ ├── XEDParse_x86.a │ │ ├── XEDParse_x86.lib │ │ └── XEDParse.h │ └── x64dbg_sdk │ └── pluginsdk │ ├── _dbgfunctions.h │ ├── _plugin_types.h │ ├── _plugins.h │ ├── _scriptapi_argument.h │ ├── _scriptapi_assembler.h │ ├── _scriptapi_bookmark.h │ ├── _scriptapi_comment.h │ ├── _scriptapi_debug.h │ ├── _scriptapi_flag.h │ ├── _scriptapi_function.h │ ├── _scriptapi_gui.h │ ├── _scriptapi_label.h │ ├── _scriptapi_memory.h │ ├── _scriptapi_misc.h │ ├── _scriptapi_module.h │ ├── _scriptapi_pattern.h │ ├── _scriptapi_register.h │ ├── _scriptapi_stack.h │ ├── _scriptapi_symbol.h │ ├── _scriptapi.h │ ├── bridgegraph.h │ ├── bridgelist.h │ ├── bridgemain.h │ ├── dbghelp │ │ ├── dbghelp_x64.a │ │ ├── dbghelp_x64.lib │ │ ├── dbghelp_x86.a │ │ ├── dbghelp_x86.lib │ │ └── dbghelp.h │ ├── DeviceNameResolver │ │ ├── DeviceNameResolver_x64.a │ │ ├── DeviceNameResolver_x64.lib │ │ ├── DeviceNameResolver_x86.a │ │ ├── DeviceNameResolver_x86.lib │ │ └── DeviceNameResolver.h │ ├── jansson │ │ ├── jansson_config.h │ │ ├── jansson_x64.a │ │ ├── jansson_x64.lib │ │ ├── jansson_x64dbg.h │ │ ├── jansson_x86.a │ │ ├── jansson_x86.lib │ │ └── jansson.h │ ├── lz4 │ │ ├── lz4_x64.a │ │ ├── lz4_x64.lib │ │ ├── lz4_x86.a │ │ ├── lz4_x86.lib │ │ ├── lz4.h │ │ ├── lz4file.h │ │ └── lz4hc.h │ ├── TitanEngine │ │ ├── TitanEngine_x64.a │ │ ├── TitanEngine_x64.lib │ │ ├── TitanEngine_x86.a │ │ ├── TitanEngine_x86.lib │ │ └── TitanEngine.h │ ├── TitanEngine_x64.a │ ├── TitanEngine_x64.lib │ ├── TitanEngine_x86.a │ ├── TitanEngine_x86.lib │ ├── TitanEngine.h │ ├── x32bridge.lib │ ├── x32dbg.lib │ ├── x64bridge.lib │ ├── x64dbg.lib │ └── XEDParse │ ├── XEDParse_x64.a │ ├── XEDParse_x64.lib │ ├── XEDParse_x86.a │ ├── XEDParse_x86.lib │ └── XEDParse.h ├── include │ └── nlohmann │ ├── adl_serializer.hpp │ ├── byte_container_with_subtype.hpp │ ├── detail │ │ ├── abi_macros.hpp │ │ ├── conversions │ │ │ ├── from_json.hpp │ │ │ ├── to_chars.hpp │ │ │ └── to_json.hpp │ │ ├── exceptions.hpp │ │ ├── hash.hpp │ │ ├── input │ │ │ ├── binary_reader.hpp │ │ │ ├── input_adapters.hpp │ │ │ ├── json_sax.hpp │ │ │ ├── lexer.hpp │ │ │ ├── parser.hpp │ │ │ └── position_t.hpp │ │ ├── iterators │ │ │ ├── internal_iterator.hpp │ │ │ ├── iter_impl.hpp │ │ │ ├── iteration_proxy.hpp │ │ │ ├── iterator_traits.hpp │ │ │ ├── json_reverse_iterator.hpp │ │ │ └── primitive_iterator.hpp │ │ ├── json_custom_base_class.hpp │ │ ├── json_pointer.hpp │ │ ├── json_ref.hpp │ │ ├── macro_scope.hpp │ │ ├── macro_unscope.hpp │ │ ├── meta │ │ │ ├── call_std │ │ │ │ ├── begin.hpp │ │ │ │ └── end.hpp │ │ │ ├── cpp_future.hpp │ │ │ ├── detected.hpp │ │ │ ├── identity_tag.hpp │ │ │ ├── is_sax.hpp │ │ │ ├── std_fs.hpp │ │ │ ├── type_traits.hpp │ │ │ └── void_t.hpp │ │ ├── output │ │ │ ├── binary_writer.hpp │ │ │ ├── output_adapters.hpp │ │ │ └── serializer.hpp │ │ ├── string_concat.hpp │ │ ├── string_escape.hpp │ │ └── value_t.hpp │ ├── json_fwd.hpp │ ├── json.hpp │ ├── ordered_map.hpp │ └── thirdparty │ └── hedley │ ├── hedley_undef.hpp │ └── hedley.hpp ├── README.md ├── Showcase.gif ├── side profile of a voxel spider walking.jpg └── src ├── MCPx64dbg.cpp └── x64dbg.py ``` # Files -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- ```markdown <h1 align="center"><b> x64dbg MCP </b> </h1> <img src="https://raw.githubusercontent.com/Wasdubya/x64dbgMCP/main/side%20profile%20of%20a%20voxel%20spider%20walking.jpg" width="100%" height="300px" /> <h2 align="center"> <b>Model Context Protocol for x64dbg</b> </h2> <div align="center"> An MCP server that can bridge various LLMS with the x64dbg debugger, providing direct access to debugging functionality through prompts! </div> <h2 align="center"> <b>Features</b> </h2> - **40+ x64dbg SDK Tools** - Provides access to almost every single debugging feature given by the SDK for smart debugging. - **Cross-Architecture Support** - Works with both x64dbg and x86dbg. - **API Compatibility** - Provides API access to Claude from CMD for even faster debugging and longer consecutive tool chain calls. ### Quick Setup 1. **Download Plugin** - Grab .dp64 or .dp32 from this repo's build/release directory - Copy to your local: [x64dbg_dir]/release/x64/plugins/ 2. **Configure Claude Desktop** - Copy x64dbgmcp.py from this repos src directory - Update local claude_desktop_config.json with path to x64dbgmcp.py ```json { "mcpServers": { "x64dbg": { "command": "Path\\To\\Python", "args": [ "Path\\to\\x64dbg.py" ] } } } ``` 4. **Start Debugging** - Launch x64dbg - Start Claude Desktop - Check plugin loaded successfully (ALT+L in x64dbg for logs) ### Build from Source - git clone [repository-url] - cd x64dbgmcp - cmake -S . -B build - cmake --build build --target all_plugins --config Release 🟨**---TIPS---**🟨 1. Use the --target all_plugins argument to specify both x32 and x64, otherwise use -A flag to distinguish between either x64 or Win32 build. For example 32 bit build would be: - cmake -S . -B build32 -A Win32 -DBUILD_BOTH_ARCHES=OFF - cmake --build build32 --config Release 2. If you do not provide the model you are working with with context of where your exe is, it wont have the capabiltiy to restart the binary if it crashes or hangs. So, provide it with the full path of the binary so it can call the CMDEXEC function like "init C:\Absolute\Path\to\EXE" </b> This will allow for even more automated analysis. </b> ## Usage Examples **Set a breakpoint and analyze:** ``` "Set a breakpoint at the main function and step through the first few instructions" ``` **Memory analysis:** ``` "Read 100 bytes from address 0x401000 and show me what's there" ``` **Register inspection:** ``` "What's the current value of RAX and RIP registers?" ``` **Pattern searching:** ``` "Find the pattern '48 8B 05' in the current module" ``` ## Demo  ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPT_API_H #define _SCRIPT_API_H #include "_plugins.h" #define SCRIPT_EXPORT PLUG_IMPEXP #endif //_SCRIPT_API_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPT_API_H #define _SCRIPT_API_H #include "_plugins.h" #define SCRIPT_EXPORT PLUG_IMPEXP #endif //_SCRIPT_API_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_stack.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_STACK_H #define _SCRIPTAPI_STACK_H #include "_scriptapi.h" namespace Script { namespace Stack { SCRIPT_EXPORT duint Pop(); SCRIPT_EXPORT duint Push(duint value); //returns the previous top, equal to Peek(1) SCRIPT_EXPORT duint Peek(int offset = 0); //offset is in multiples of Register::Size(), for easy x32/x64 portability }; //Stack }; //Script #endif //_SCRIPTAPI_STACK_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_stack.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_STACK_H #define _SCRIPTAPI_STACK_H #include "_scriptapi.h" namespace Script { namespace Stack { SCRIPT_EXPORT duint Pop(); SCRIPT_EXPORT duint Push(duint value); //returns the previous top, equal to Peek(1) SCRIPT_EXPORT duint Peek(int offset = 0); //offset is in multiples of Register::Size(), for easy x32/x64 portability }; //Stack }; //Script #endif //_SCRIPTAPI_STACK_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/call_std/end.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/call_std/end.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/call_std/begin.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/call_std/begin.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/identity_tag.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // dispatching helper struct template <class T> struct identity_tag {}; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/identity_tag.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // dispatching helper struct template <class T> struct identity_tag {}; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_plugin_types.h: -------------------------------------------------------------------------------- ``` #ifndef _PLUGIN_DATA_H #define _PLUGIN_DATA_H #ifdef BUILD_DBG #include "_global.h" #include "jansson/jansson.h" #pragma warning(push) #pragma warning(disable:4091) #include <dbghelp.h> #pragma warning(pop) #else #include <Windows.h> #ifdef __GNUC__ #include "dbghelp/dbghelp.h" #else #pragma warning(push) #pragma warning(disable:4091) #include <DbgHelp.h> #pragma warning(pop) #endif // __GNUC__ #ifndef deflen #define deflen 1024 #endif // deflen #include "bridgemain.h" #include "_dbgfunctions.h" #include "jansson/jansson.h" #endif // BUILD_DBG #endif // _PLUGIN_DATA_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_plugin_types.h: -------------------------------------------------------------------------------- ``` #ifndef _PLUGIN_DATA_H #define _PLUGIN_DATA_H #ifdef BUILD_DBG #include "_global.h" #include "jansson/jansson.h" #pragma warning(push) #pragma warning(disable:4091) #include <dbghelp.h> #pragma warning(pop) #else #include <Windows.h> #ifdef __GNUC__ #include "dbghelp/dbghelp.h" #else #pragma warning(push) #pragma warning(disable:4091) #include <DbgHelp.h> #pragma warning(pop) #endif // __GNUC__ #ifndef deflen #define deflen 1024 #endif // deflen #include "bridgemain.h" #include "_dbgfunctions.h" #include "jansson/jansson.h" #endif // BUILD_DBG #endif // _PLUGIN_DATA_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/void_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename ...Ts> struct make_void { using type = void; }; template<typename ...Ts> using void_t = typename make_void<Ts...>::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/void_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename ...Ts> struct make_void { using type = void; }; template<typename ...Ts> using void_t = typename make_void<Ts...>::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/jansson/jansson_x64dbg.h: -------------------------------------------------------------------------------- ``` #pragma once #include "jansson.h" typedef json_t* JSON; static JSON_INLINE json_t* json_hex(unsigned json_int_t value) { char hexvalue[20]; sprintf_s(hexvalue, "0x%llX", value); return json_string(hexvalue); } static JSON_INLINE unsigned json_int_t json_hex_value(const json_t* hex) { unsigned json_int_t ret = 0; const char* hexvalue; hexvalue = json_string_value(hex); if(!hexvalue) return 0; sscanf_s(hexvalue, "0x%llX", &ret); return ret; } static JSON_INLINE json_t* json_string(const std::string & str) { return json_stringn(str.c_str(), str.length()); } ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/jansson/jansson_x64dbg.h: -------------------------------------------------------------------------------- ``` #pragma once #include "jansson.h" typedef json_t* JSON; static JSON_INLINE json_t* json_hex(unsigned json_int_t value) { char hexvalue[20]; sprintf_s(hexvalue, "0x%llX", value); return json_string(hexvalue); } static JSON_INLINE unsigned json_int_t json_hex_value(const json_t* hex) { unsigned json_int_t ret = 0; const char* hexvalue; hexvalue = json_string_value(hex); if(!hexvalue) return 0; sscanf_s(hexvalue, "0x%llX", &ret); return ret; } static JSON_INLINE json_t* json_string(const std::string & str) { return json_stringn(str.c_str(), str.length()); } ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_symbol.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_SYMBOL_H #define _SCRIPTAPI_SYMBOL_H #include "_scriptapi.h" namespace Script { namespace Symbol { enum SymbolType { Function, //user-defined function Import, //IAT entry Export //export }; struct SymbolInfo { char mod[MAX_MODULE_SIZE]; duint rva; char name[MAX_LABEL_SIZE]; bool manual; SymbolType type; }; SCRIPT_EXPORT bool GetList(ListOf(SymbolInfo) list); //caller has the responsibility to free the list }; //Symbol }; //Script #endif //_SCRIPTAPI_SYMBOL_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_symbol.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_SYMBOL_H #define _SCRIPTAPI_SYMBOL_H #include "_scriptapi.h" namespace Script { namespace Symbol { enum SymbolType { Function, //user-defined function Import, //IAT entry Export //export }; struct SymbolInfo { char mod[MAX_MODULE_SIZE]; duint rva; char name[MAX_LABEL_SIZE]; bool manual; SymbolType type; }; SCRIPT_EXPORT bool GetList(ListOf(SymbolInfo) list); //caller has the responsibility to free the list }; //Symbol }; //Script #endif //_SCRIPTAPI_SYMBOL_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_assembler.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_ASSEMBLER_H #define _SCRIPTAPI_ASSEMBLER_H #include "_scriptapi.h" namespace Script { namespace Assembler { SCRIPT_EXPORT bool Assemble(duint addr, unsigned char* dest, int* size, const char* instruction); //dest[16] SCRIPT_EXPORT bool AssembleEx(duint addr, unsigned char* dest, int* size, const char* instruction, char* error); //dest[16], error[MAX_ERROR_SIZE] SCRIPT_EXPORT bool AssembleMem(duint addr, const char* instruction); SCRIPT_EXPORT bool AssembleMemEx(duint addr, const char* instruction, int* size, char* error, bool fillnop); //error[MAX_ERROR_SIZE] }; //Assembler }; //Script #endif //_SCRIPTAPI_ASSEMBLER_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_assembler.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_ASSEMBLER_H #define _SCRIPTAPI_ASSEMBLER_H #include "_scriptapi.h" namespace Script { namespace Assembler { SCRIPT_EXPORT bool Assemble(duint addr, unsigned char* dest, int* size, const char* instruction); //dest[16] SCRIPT_EXPORT bool AssembleEx(duint addr, unsigned char* dest, int* size, const char* instruction, char* error); //dest[16], error[MAX_ERROR_SIZE] SCRIPT_EXPORT bool AssembleMem(duint addr, const char* instruction); SCRIPT_EXPORT bool AssembleMemEx(duint addr, const char* instruction, int* size, char* error, bool fillnop); //error[MAX_ERROR_SIZE] }; //Assembler }; //Script #endif //_SCRIPTAPI_ASSEMBLER_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/std_fs.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> #if JSON_HAS_EXPERIMENTAL_FILESYSTEM #include <experimental/filesystem> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::experimental::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #elif JSON_HAS_FILESYSTEM #include <filesystem> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #endif ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/std_fs.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/macro_scope.hpp> #if JSON_HAS_EXPERIMENTAL_FILESYSTEM #include <experimental/filesystem> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::experimental::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #elif JSON_HAS_FILESYSTEM #include <filesystem> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { namespace std_fs = std::filesystem; } // namespace detail NLOHMANN_JSON_NAMESPACE_END #endif ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_pattern.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_PATTERN_H #define _SCRIPTAPI_PATTERN_H #include "_scriptapi.h" namespace Script { namespace Pattern { SCRIPT_EXPORT duint Find(unsigned char* data, duint datasize, const char* pattern); SCRIPT_EXPORT duint FindMem(duint start, duint size, const char* pattern); SCRIPT_EXPORT void Write(unsigned char* data, duint datasize, const char* pattern); SCRIPT_EXPORT void WriteMem(duint start, duint size, const char* pattern); SCRIPT_EXPORT bool SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern); SCRIPT_EXPORT bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern); }; }; #endif //_SCRIPTAPI_FIND_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_pattern.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_PATTERN_H #define _SCRIPTAPI_PATTERN_H #include "_scriptapi.h" namespace Script { namespace Pattern { SCRIPT_EXPORT duint Find(unsigned char* data, duint datasize, const char* pattern); SCRIPT_EXPORT duint FindMem(duint start, duint size, const char* pattern); SCRIPT_EXPORT void Write(unsigned char* data, duint datasize, const char* pattern); SCRIPT_EXPORT void WriteMem(duint start, duint size, const char* pattern); SCRIPT_EXPORT bool SearchAndReplace(unsigned char* data, duint datasize, const char* searchpattern, const char* replacepattern); SCRIPT_EXPORT bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern); }; }; #endif //_SCRIPTAPI_FIND_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/lz4/lz4file.h: -------------------------------------------------------------------------------- ``` #ifndef _LZ4FILE_H #define _LZ4FILE_H typedef enum _LZ4_STATUS { LZ4_SUCCESS, LZ4_FAILED_OPEN_INPUT, LZ4_FAILED_OPEN_OUTPUT, LZ4_NOT_ENOUGH_MEMORY, LZ4_INVALID_ARCHIVE, LZ4_CORRUPTED_ARCHIVE } LZ4_STATUS; #if defined (__cplusplus) extern "C" { #endif __declspec(dllimport) LZ4_STATUS LZ4_compress_file(const char* input_filename, const char* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_compress_fileW(const wchar_t* input_filename, const wchar_t* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_decompress_file(const char* input_filename, const char* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_decompress_fileW(const wchar_t* input_filename, const wchar_t* output_filename); #if defined (__cplusplus) } #endif #endif //_LZ4FILE_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/lz4/lz4file.h: -------------------------------------------------------------------------------- ``` #ifndef _LZ4FILE_H #define _LZ4FILE_H typedef enum _LZ4_STATUS { LZ4_SUCCESS, LZ4_FAILED_OPEN_INPUT, LZ4_FAILED_OPEN_OUTPUT, LZ4_NOT_ENOUGH_MEMORY, LZ4_INVALID_ARCHIVE, LZ4_CORRUPTED_ARCHIVE } LZ4_STATUS; #if defined (__cplusplus) extern "C" { #endif __declspec(dllimport) LZ4_STATUS LZ4_compress_file(const char* input_filename, const char* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_compress_fileW(const wchar_t* input_filename, const wchar_t* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_decompress_file(const char* input_filename, const char* output_filename); __declspec(dllimport) LZ4_STATUS LZ4_decompress_fileW(const wchar_t* input_filename, const wchar_t* output_filename); #if defined (__cplusplus) } #endif #endif //_LZ4FILE_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/DeviceNameResolver/DeviceNameResolver.h: -------------------------------------------------------------------------------- ``` #ifndef _DEVICENAMERESOLVER_H #define _DEVICENAMERESOLVER_H #include <windows.h> #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) bool DevicePathToPathW(const wchar_t* szDevicePath, wchar_t* szPath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathToPathA(const char* szDevicePath, char* szPath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathFromFileHandleW(HANDLE hFile, wchar_t* szDevicePath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathFromFileHandleA(HANDLE hFile, char* szDevicePath, size_t nSizeInChars); __declspec(dllexport) bool PathFromFileHandleW(HANDLE hFile, wchar_t* szPath, size_t nSizeInChars); __declspec(dllexport) bool PathFromFileHandleA(HANDLE hFile, char* szPath, size_t nSizeInChars); #ifdef __cplusplus } #endif #endif // _DEVICENAMERESOLVER_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/DeviceNameResolver/DeviceNameResolver.h: -------------------------------------------------------------------------------- ``` #ifndef _DEVICENAMERESOLVER_H #define _DEVICENAMERESOLVER_H #include <windows.h> #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) bool DevicePathToPathW(const wchar_t* szDevicePath, wchar_t* szPath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathToPathA(const char* szDevicePath, char* szPath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathFromFileHandleW(HANDLE hFile, wchar_t* szDevicePath, size_t nSizeInChars); __declspec(dllexport) bool DevicePathFromFileHandleA(HANDLE hFile, char* szDevicePath, size_t nSizeInChars); __declspec(dllexport) bool PathFromFileHandleW(HANDLE hFile, wchar_t* szPath, size_t nSizeInChars); __declspec(dllexport) bool PathFromFileHandleA(HANDLE hFile, char* szPath, size_t nSizeInChars); #ifdef __cplusplus } #endif #endif // _DEVICENAMERESOLVER_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_bookmark.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_BOOKMARK_H #define _SCRIPTAPI_BOOKMARK_H #include "_scriptapi.h" namespace Script { namespace Bookmark { struct BookmarkInfo { char mod[MAX_MODULE_SIZE]; duint rva; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, bool manual = false); SCRIPT_EXPORT bool Set(const BookmarkInfo* info); SCRIPT_EXPORT bool Get(duint addr); SCRIPT_EXPORT bool GetInfo(duint addr, BookmarkInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(BookmarkInfo) list); //caller has the responsibility to free the list }; //Bookmark }; //Script #endif //_SCRIPTAPI_BOOKMARK_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_bookmark.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_BOOKMARK_H #define _SCRIPTAPI_BOOKMARK_H #include "_scriptapi.h" namespace Script { namespace Bookmark { struct BookmarkInfo { char mod[MAX_MODULE_SIZE]; duint rva; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, bool manual = false); SCRIPT_EXPORT bool Set(const BookmarkInfo* info); SCRIPT_EXPORT bool Get(duint addr); SCRIPT_EXPORT bool GetInfo(duint addr, BookmarkInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(BookmarkInfo) list); //caller has the responsibility to free the list }; //Bookmark }; //Script #endif //_SCRIPTAPI_BOOKMARK_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_comment.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_COMMENT_H #define _SCRIPTAPI_COMMENT_H #include "_scriptapi.h" namespace Script { namespace Comment { struct CommentInfo { char mod[MAX_MODULE_SIZE]; duint rva; char text[MAX_LABEL_SIZE]; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false); SCRIPT_EXPORT bool Set(const CommentInfo* info); SCRIPT_EXPORT bool Get(duint addr, char* text); //text[MAX_COMMENT_SIZE] SCRIPT_EXPORT bool GetInfo(duint addr, CommentInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(CommentInfo) list); //caller has the responsibility to free the list }; //Comment }; //Script #endif //_SCRIPTAPI_COMMENT_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_comment.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_COMMENT_H #define _SCRIPTAPI_COMMENT_H #include "_scriptapi.h" namespace Script { namespace Comment { struct CommentInfo { char mod[MAX_MODULE_SIZE]; duint rva; char text[MAX_LABEL_SIZE]; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false); SCRIPT_EXPORT bool Set(const CommentInfo* info); SCRIPT_EXPORT bool Get(duint addr, char* text); //text[MAX_COMMENT_SIZE] SCRIPT_EXPORT bool GetInfo(duint addr, CommentInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(CommentInfo) list); //caller has the responsibility to free the list }; //Comment }; //Script #endif //_SCRIPTAPI_COMMENT_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_debug.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_DEBUG_H #define _SCRIPTAPI_DEBUG_H #include "_scriptapi.h" namespace Script { namespace Debug { enum HardwareType { HardwareAccess, HardwareWrite, HardwareExecute }; SCRIPT_EXPORT void Wait(); SCRIPT_EXPORT void Run(); SCRIPT_EXPORT void Pause(); SCRIPT_EXPORT void Stop(); SCRIPT_EXPORT void StepIn(); SCRIPT_EXPORT void StepOver(); SCRIPT_EXPORT void StepOut(); SCRIPT_EXPORT bool SetBreakpoint(duint address); SCRIPT_EXPORT bool DeleteBreakpoint(duint address); SCRIPT_EXPORT bool DisableBreakpoint(duint address); SCRIPT_EXPORT bool SetHardwareBreakpoint(duint address, HardwareType type = HardwareExecute); SCRIPT_EXPORT bool DeleteHardwareBreakpoint(duint address); }; //Debug }; //Script #endif //_SCRIPTAPI_DEBUG_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_debug.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_DEBUG_H #define _SCRIPTAPI_DEBUG_H #include "_scriptapi.h" namespace Script { namespace Debug { enum HardwareType { HardwareAccess, HardwareWrite, HardwareExecute }; SCRIPT_EXPORT void Wait(); SCRIPT_EXPORT void Run(); SCRIPT_EXPORT void Pause(); SCRIPT_EXPORT void Stop(); SCRIPT_EXPORT void StepIn(); SCRIPT_EXPORT void StepOver(); SCRIPT_EXPORT void StepOut(); SCRIPT_EXPORT bool SetBreakpoint(duint address); SCRIPT_EXPORT bool DeleteBreakpoint(duint address); SCRIPT_EXPORT bool DisableBreakpoint(duint address); SCRIPT_EXPORT bool SetHardwareBreakpoint(duint address, HardwareType type = HardwareExecute); SCRIPT_EXPORT bool DeleteHardwareBreakpoint(duint address); }; //Debug }; //Script #endif //_SCRIPTAPI_DEBUG_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/input/position_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // size_t #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// struct to capture the start position of the current token struct position_t { /// the total number of characters read std::size_t chars_read_total = 0; /// the number of characters read in the current line std::size_t chars_read_current_line = 0; /// the number of lines read std::size_t lines_read = 0; /// conversion to size_t to preserve SAX interface constexpr operator size_t() const { return chars_read_total; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/input/position_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // size_t #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// struct to capture the start position of the current token struct position_t { /// the total number of characters read std::size_t chars_read_total = 0; /// the number of characters read in the current line std::size_t chars_read_current_line = 0; /// the number of lines read std::size_t lines_read = 0; /// conversion to size_t to preserve SAX interface constexpr operator size_t() const { return chars_read_total; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/iterators/internal_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/iterators/primitive_iterator.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief an iterator value @note This structure could easily be a union, but MSVC currently does not allow unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. */ template<typename BasicJsonType> struct internal_iterator { /// iterator for JSON objects typename BasicJsonType::object_t::iterator object_iterator {}; /// iterator for JSON arrays typename BasicJsonType::array_t::iterator array_iterator {}; /// generic iterator for all other types primitive_iterator_t primitive_iterator {}; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/iterators/internal_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/iterators/primitive_iterator.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief an iterator value @note This structure could easily be a union, but MSVC currently does not allow unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. */ template<typename BasicJsonType> struct internal_iterator { /// iterator for JSON objects typename BasicJsonType::object_t::iterator object_iterator {}; /// iterator for JSON arrays typename BasicJsonType::array_t::iterator array_iterator {}; /// generic iterator for all other types primitive_iterator_t primitive_iterator {}; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_argument.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_ARGUMENT_H #define _SCRIPTAPI_ARGUMENT_H #include "_scriptapi.h" namespace Script { namespace Argument { struct ArgumentInfo { char mod[MAX_MODULE_SIZE]; duint rvaStart; duint rvaEnd; bool manual; duint instructioncount; }; SCRIPT_EXPORT bool Add(duint start, duint end, bool manual, duint instructionCount = 0); SCRIPT_EXPORT bool Add(const ArgumentInfo* info); SCRIPT_EXPORT bool Get(duint addr, duint* start = nullptr, duint* end = nullptr, duint* instructionCount = nullptr); SCRIPT_EXPORT bool GetInfo(duint addr, ArgumentInfo* info); SCRIPT_EXPORT bool Overlaps(duint start, duint end); SCRIPT_EXPORT bool Delete(duint address); SCRIPT_EXPORT void DeleteRange(duint start, duint end, bool deleteManual = false); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(ArgumentInfo) list); //caller has the responsibility to free the list }; //Argument }; //Script #endif //_SCRIPTAPI_ARGUMENT_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_argument.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_ARGUMENT_H #define _SCRIPTAPI_ARGUMENT_H #include "_scriptapi.h" namespace Script { namespace Argument { struct ArgumentInfo { char mod[MAX_MODULE_SIZE]; duint rvaStart; duint rvaEnd; bool manual; duint instructioncount; }; SCRIPT_EXPORT bool Add(duint start, duint end, bool manual, duint instructionCount = 0); SCRIPT_EXPORT bool Add(const ArgumentInfo* info); SCRIPT_EXPORT bool Get(duint addr, duint* start = nullptr, duint* end = nullptr, duint* instructionCount = nullptr); SCRIPT_EXPORT bool GetInfo(duint addr, ArgumentInfo* info); SCRIPT_EXPORT bool Overlaps(duint start, duint end); SCRIPT_EXPORT bool Delete(duint address); SCRIPT_EXPORT void DeleteRange(duint start, duint end, bool deleteManual = false); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(ArgumentInfo) list); //caller has the responsibility to free the list }; //Argument }; //Script #endif //_SCRIPTAPI_ARGUMENT_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_label.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_LABEL_H #define _SCRIPTAPI_LABEL_H #include "_scriptapi.h" namespace Script { namespace Label { struct LabelInfo { char mod[MAX_MODULE_SIZE]; duint rva; char text[MAX_LABEL_SIZE]; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false); SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false, bool temporary = false); SCRIPT_EXPORT bool Set(const LabelInfo* info); SCRIPT_EXPORT bool FromString(const char* label, duint* addr); SCRIPT_EXPORT bool Get(duint addr, char* text); //text[MAX_LABEL_SIZE] SCRIPT_EXPORT bool IsTemporary(duint addr); SCRIPT_EXPORT bool GetInfo(duint addr, LabelInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(LabelInfo) list); //caller has the responsibility to free the list }; //Label }; //Script #endif //_SCRIPTAPI_LABEL_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_label.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_LABEL_H #define _SCRIPTAPI_LABEL_H #include "_scriptapi.h" namespace Script { namespace Label { struct LabelInfo { char mod[MAX_MODULE_SIZE]; duint rva; char text[MAX_LABEL_SIZE]; bool manual; }; SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false); SCRIPT_EXPORT bool Set(duint addr, const char* text, bool manual = false, bool temporary = false); SCRIPT_EXPORT bool Set(const LabelInfo* info); SCRIPT_EXPORT bool FromString(const char* label, duint* addr); SCRIPT_EXPORT bool Get(duint addr, char* text); //text[MAX_LABEL_SIZE] SCRIPT_EXPORT bool IsTemporary(duint addr); SCRIPT_EXPORT bool GetInfo(duint addr, LabelInfo* info); SCRIPT_EXPORT bool Delete(duint addr); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(LabelInfo) list); //caller has the responsibility to free the list }; //Label }; //Script #endif //_SCRIPTAPI_LABEL_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_function.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_FUNCTION_H #define _SCRIPTAPI_FUNCTION_H #include "_scriptapi.h" namespace Script { namespace Function { struct FunctionInfo { char mod[MAX_MODULE_SIZE]; duint rvaStart; duint rvaEnd; bool manual; duint instructioncount; }; SCRIPT_EXPORT bool Add(duint start, duint end, bool manual, duint instructionCount = 0); SCRIPT_EXPORT bool Add(const FunctionInfo* info); SCRIPT_EXPORT bool Get(duint addr, duint* start = nullptr, duint* end = nullptr, duint* instructionCount = nullptr); SCRIPT_EXPORT bool GetInfo(duint addr, FunctionInfo* info); SCRIPT_EXPORT bool Overlaps(duint start, duint end); SCRIPT_EXPORT bool Delete(duint address); SCRIPT_EXPORT void DeleteRange(duint start, duint end, bool deleteManual); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(FunctionInfo) list); //caller has the responsibility to free the list }; //Function }; //Script #endif //_SCRIPTAPI_FUNCTION_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_function.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_FUNCTION_H #define _SCRIPTAPI_FUNCTION_H #include "_scriptapi.h" namespace Script { namespace Function { struct FunctionInfo { char mod[MAX_MODULE_SIZE]; duint rvaStart; duint rvaEnd; bool manual; duint instructioncount; }; SCRIPT_EXPORT bool Add(duint start, duint end, bool manual, duint instructionCount = 0); SCRIPT_EXPORT bool Add(const FunctionInfo* info); SCRIPT_EXPORT bool Get(duint addr, duint* start = nullptr, duint* end = nullptr, duint* instructionCount = nullptr); SCRIPT_EXPORT bool GetInfo(duint addr, FunctionInfo* info); SCRIPT_EXPORT bool Overlaps(duint start, duint end); SCRIPT_EXPORT bool Delete(duint address); SCRIPT_EXPORT void DeleteRange(duint start, duint end, bool deleteManual); SCRIPT_EXPORT void DeleteRange(duint start, duint end); SCRIPT_EXPORT void Clear(); SCRIPT_EXPORT bool GetList(ListOf(FunctionInfo) list); //caller has the responsibility to free the list }; //Function }; //Script #endif //_SCRIPTAPI_FUNCTION_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/json_custom_base_class.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <type_traits> // conditional, is_same #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief Default base class of the @ref basic_json class. So that the correct implementations of the copy / move ctors / assign operators of @ref basic_json do not require complex case distinctions (no base class / custom base class used as customization point), @ref basic_json always has a base class. By default, this class is used because it is empty and thus has no effect on the behavior of @ref basic_json. */ struct json_default_base {}; template<class T> using json_base_class = typename std::conditional < std::is_same<T, void>::value, json_default_base, T >::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/json_custom_base_class.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <type_traits> // conditional, is_same #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief Default base class of the @ref basic_json class. So that the correct implementations of the copy / move ctors / assign operators of @ref basic_json do not require complex case distinctions (no base class / custom base class used as customization point), @ref basic_json always has a base class. By default, this class is used because it is empty and thus has no effect on the behavior of @ref basic_json. */ struct json_default_base {}; template<class T> using json_base_class = typename std::conditional < std::is_same<T, void>::value, json_default_base, T >::type; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_flag.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_FLAG_H #define _SCRIPTAPI_FLAG_H #include "_scriptapi.h" namespace Script { namespace Flag { enum FlagEnum { ZF, OF, CF, PF, SF, TF, AF, DF, IF }; SCRIPT_EXPORT bool Get(FlagEnum flag); SCRIPT_EXPORT bool Set(FlagEnum flag, bool value); SCRIPT_EXPORT bool GetZF(); SCRIPT_EXPORT bool SetZF(bool value); SCRIPT_EXPORT bool GetOF(); SCRIPT_EXPORT bool SetOF(bool value); SCRIPT_EXPORT bool GetCF(); SCRIPT_EXPORT bool SetCF(bool value); SCRIPT_EXPORT bool GetPF(); SCRIPT_EXPORT bool SetPF(bool value); SCRIPT_EXPORT bool GetSF(); SCRIPT_EXPORT bool SetSF(bool value); SCRIPT_EXPORT bool GetTF(); SCRIPT_EXPORT bool SetTF(bool value); SCRIPT_EXPORT bool GetAF(); SCRIPT_EXPORT bool SetAF(bool value); SCRIPT_EXPORT bool GetDF(); SCRIPT_EXPORT bool SetDF(bool value); SCRIPT_EXPORT bool GetIF(); SCRIPT_EXPORT bool SetIF(bool value); }; }; #endif //_SCRIPTAPI_FLAG_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_flag.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_FLAG_H #define _SCRIPTAPI_FLAG_H #include "_scriptapi.h" namespace Script { namespace Flag { enum FlagEnum { ZF, OF, CF, PF, SF, TF, AF, DF, IF }; SCRIPT_EXPORT bool Get(FlagEnum flag); SCRIPT_EXPORT bool Set(FlagEnum flag, bool value); SCRIPT_EXPORT bool GetZF(); SCRIPT_EXPORT bool SetZF(bool value); SCRIPT_EXPORT bool GetOF(); SCRIPT_EXPORT bool SetOF(bool value); SCRIPT_EXPORT bool GetCF(); SCRIPT_EXPORT bool SetCF(bool value); SCRIPT_EXPORT bool GetPF(); SCRIPT_EXPORT bool SetPF(bool value); SCRIPT_EXPORT bool GetSF(); SCRIPT_EXPORT bool SetSF(bool value); SCRIPT_EXPORT bool GetTF(); SCRIPT_EXPORT bool SetTF(bool value); SCRIPT_EXPORT bool GetAF(); SCRIPT_EXPORT bool SetAF(bool value); SCRIPT_EXPORT bool GetDF(); SCRIPT_EXPORT bool SetDF(bool value); SCRIPT_EXPORT bool GetIF(); SCRIPT_EXPORT bool SetIF(bool value); }; }; #endif //_SCRIPTAPI_FLAG_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/XEDParse/XEDParse.h: -------------------------------------------------------------------------------- ``` #ifndef _XEDPARSE_H #define _XEDPARSE_H #include <windows.h> //XEDParse defines #ifdef XEDPARSE_BUILD #define XEDPARSE_EXPORT __declspec(dllexport) #else #define XEDPARSE_EXPORT __declspec(dllimport) #endif //XEDPARSE_BUILD #define XEDPARSE_CALL //calling convention #define XEDPARSE_MAXBUFSIZE 256 #define XEDPARSE_MAXASMSIZE 16 //typedefs typedef bool (XEDPARSE_CALL* CBXEDPARSE_UNKNOWN)(const char* text, ULONGLONG* value); //XEDParse enums enum XEDPARSE_STATUS { XEDPARSE_ERROR = 0, XEDPARSE_OK = 1 }; //XEDParse structs #pragma pack(push,8) struct XEDPARSE { bool x64; // use 64-bit instructions ULONGLONG cip; //instruction pointer (for relative addressing) unsigned int dest_size; //destination size (returned by XEDParse) CBXEDPARSE_UNKNOWN cbUnknown; //unknown operand callback unsigned char dest[XEDPARSE_MAXASMSIZE]; //destination buffer char instr[XEDPARSE_MAXBUFSIZE]; //instruction text char error[XEDPARSE_MAXBUFSIZE]; //error text (in case of an error) }; #pragma pack(pop) #ifdef __cplusplus extern "C" { #endif XEDPARSE_EXPORT XEDPARSE_STATUS XEDPARSE_CALL XEDParseAssemble(XEDPARSE* XEDParse); #ifdef __cplusplus } #endif #endif // _XEDPARSE_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/XEDParse/XEDParse.h: -------------------------------------------------------------------------------- ``` #ifndef _XEDPARSE_H #define _XEDPARSE_H #include <windows.h> //XEDParse defines #ifdef XEDPARSE_BUILD #define XEDPARSE_EXPORT __declspec(dllexport) #else #define XEDPARSE_EXPORT __declspec(dllimport) #endif //XEDPARSE_BUILD #define XEDPARSE_CALL //calling convention #define XEDPARSE_MAXBUFSIZE 256 #define XEDPARSE_MAXASMSIZE 16 //typedefs typedef bool (XEDPARSE_CALL* CBXEDPARSE_UNKNOWN)(const char* text, ULONGLONG* value); //XEDParse enums enum XEDPARSE_STATUS { XEDPARSE_ERROR = 0, XEDPARSE_OK = 1 }; //XEDParse structs #pragma pack(push,8) struct XEDPARSE { bool x64; // use 64-bit instructions ULONGLONG cip; //instruction pointer (for relative addressing) unsigned int dest_size; //destination size (returned by XEDParse) CBXEDPARSE_UNKNOWN cbUnknown; //unknown operand callback unsigned char dest[XEDPARSE_MAXASMSIZE]; //destination buffer char instr[XEDPARSE_MAXBUFSIZE]; //instruction text char error[XEDPARSE_MAXBUFSIZE]; //error text (in case of an error) }; #pragma pack(pop) #ifdef __cplusplus extern "C" { #endif XEDPARSE_EXPORT XEDPARSE_STATUS XEDPARSE_CALL XEDParseAssemble(XEDPARSE* XEDParse); #ifdef __cplusplus } #endif #endif // _XEDPARSE_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/macro_unscope.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once // restore clang diagnostic settings #if defined(__clang__) #pragma clang diagnostic pop #endif // clean up #undef JSON_ASSERT #undef JSON_INTERNAL_CATCH #undef JSON_THROW #undef JSON_PRIVATE_UNLESS_TESTED #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL #undef JSON_EXPLICIT #undef NLOHMANN_CAN_CALL_STD_FUNC_IMPL #undef JSON_INLINE_VARIABLE #undef JSON_NO_UNIQUE_ADDRESS #undef JSON_DISABLE_ENUM_SERIALIZATION #undef JSON_USE_GLOBAL_UDLS #ifndef JSON_TEST_KEEP_MACROS #undef JSON_CATCH #undef JSON_TRY #undef JSON_HAS_CPP_11 #undef JSON_HAS_CPP_14 #undef JSON_HAS_CPP_17 #undef JSON_HAS_CPP_20 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #undef JSON_HAS_THREE_WAY_COMPARISON #undef JSON_HAS_RANGES #undef JSON_HAS_STATIC_RTTI #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #endif #include <nlohmann/thirdparty/hedley/hedley_undef.hpp> ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/macro_unscope.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once // restore clang diagnostic settings #if defined(__clang__) #pragma clang diagnostic pop #endif // clean up #undef JSON_ASSERT #undef JSON_INTERNAL_CATCH #undef JSON_THROW #undef JSON_PRIVATE_UNLESS_TESTED #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL #undef JSON_EXPLICIT #undef NLOHMANN_CAN_CALL_STD_FUNC_IMPL #undef JSON_INLINE_VARIABLE #undef JSON_NO_UNIQUE_ADDRESS #undef JSON_DISABLE_ENUM_SERIALIZATION #undef JSON_USE_GLOBAL_UDLS #ifndef JSON_TEST_KEEP_MACROS #undef JSON_CATCH #undef JSON_TRY #undef JSON_HAS_CPP_11 #undef JSON_HAS_CPP_14 #undef JSON_HAS_CPP_17 #undef JSON_HAS_CPP_20 #undef JSON_HAS_FILESYSTEM #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM #undef JSON_HAS_THREE_WAY_COMPARISON #undef JSON_HAS_RANGES #undef JSON_HAS_STATIC_RTTI #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #endif #include <nlohmann/thirdparty/hedley/hedley_undef.hpp> ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_memory.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MEMORY_H #define _SCRIPTAPI_MEMORY_H #include "_scriptapi.h" namespace Script { namespace Memory { SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead); SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten); SCRIPT_EXPORT bool IsValidPtr(duint addr); SCRIPT_EXPORT duint RemoteAlloc(duint addr, duint size); SCRIPT_EXPORT bool RemoteFree(duint addr); SCRIPT_EXPORT unsigned int GetProtect(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT bool SetProtect(duint addr, unsigned int protect, duint size); SCRIPT_EXPORT duint GetBase(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT duint GetSize(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT unsigned char ReadByte(duint addr); SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data); SCRIPT_EXPORT unsigned short ReadWord(duint addr); SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data); SCRIPT_EXPORT unsigned int ReadDword(duint addr); SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data); SCRIPT_EXPORT unsigned long long ReadQword(duint addr); SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data); SCRIPT_EXPORT duint ReadPtr(duint addr); SCRIPT_EXPORT bool WritePtr(duint addr, duint data); }; //Memory }; //Script #endif //_SCRIPTAPI_MEMORY_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_memory.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MEMORY_H #define _SCRIPTAPI_MEMORY_H #include "_scriptapi.h" namespace Script { namespace Memory { SCRIPT_EXPORT bool Read(duint addr, void* data, duint size, duint* sizeRead); SCRIPT_EXPORT bool Write(duint addr, const void* data, duint size, duint* sizeWritten); SCRIPT_EXPORT bool IsValidPtr(duint addr); SCRIPT_EXPORT duint RemoteAlloc(duint addr, duint size); SCRIPT_EXPORT bool RemoteFree(duint addr); SCRIPT_EXPORT unsigned int GetProtect(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT bool SetProtect(duint addr, unsigned int protect, duint size); SCRIPT_EXPORT duint GetBase(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT duint GetSize(duint addr, bool reserved = false, bool cache = true); SCRIPT_EXPORT unsigned char ReadByte(duint addr); SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data); SCRIPT_EXPORT unsigned short ReadWord(duint addr); SCRIPT_EXPORT bool WriteWord(duint addr, unsigned short data); SCRIPT_EXPORT unsigned int ReadDword(duint addr); SCRIPT_EXPORT bool WriteDword(duint addr, unsigned int data); SCRIPT_EXPORT unsigned long long ReadQword(duint addr); SCRIPT_EXPORT bool WriteQword(duint addr, unsigned long long data); SCRIPT_EXPORT duint ReadPtr(duint addr); SCRIPT_EXPORT bool WritePtr(duint addr, duint data); }; //Memory }; //Script #endif //_SCRIPTAPI_MEMORY_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/iterators/iterator_traits.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <iterator> // random_access_iterator_tag #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/meta/void_t.hpp> #include <nlohmann/detail/meta/cpp_future.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename It, typename = void> struct iterator_types {}; template<typename It> struct iterator_types < It, void_t<typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category >> { using difference_type = typename It::difference_type; using value_type = typename It::value_type; using pointer = typename It::pointer; using reference = typename It::reference; using iterator_category = typename It::iterator_category; }; // This is required as some compilers implement std::iterator_traits in a way that // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. template<typename T, typename = void> struct iterator_traits { }; template<typename T> struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> : iterator_types<T> { }; template<typename T> struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>> { using iterator_category = std::random_access_iterator_tag; using value_type = T; using difference_type = ptrdiff_t; using pointer = T*; using reference = T&; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/iterators/iterator_traits.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <iterator> // random_access_iterator_tag #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/meta/void_t.hpp> #include <nlohmann/detail/meta/cpp_future.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename It, typename = void> struct iterator_types {}; template<typename It> struct iterator_types < It, void_t<typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category >> { using difference_type = typename It::difference_type; using value_type = typename It::value_type; using pointer = typename It::pointer; using reference = typename It::reference; using iterator_category = typename It::iterator_category; }; // This is required as some compilers implement std::iterator_traits in a way that // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. template<typename T, typename = void> struct iterator_traits { }; template<typename T> struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> : iterator_types<T> { }; template<typename T> struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>> { using iterator_category = std::random_access_iterator_tag; using value_type = T; using difference_type = ptrdiff_t; using pointer = T*; using reference = T&; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/json_ref.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <initializer_list> #include <utility> #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/meta/type_traits.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename BasicJsonType> class json_ref { public: using value_type = BasicJsonType; json_ref(value_type&& value) : owned_value(std::move(value)) {} json_ref(const value_type& value) : value_ref(&value) {} json_ref(std::initializer_list<json_ref> init) : owned_value(init) {} template < class... Args, enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 > json_ref(Args && ... args) : owned_value(std::forward<Args>(args)...) {} // class should be movable only json_ref(json_ref&&) noexcept = default; json_ref(const json_ref&) = delete; json_ref& operator=(const json_ref&) = delete; json_ref& operator=(json_ref&&) = delete; ~json_ref() = default; value_type moved_or_copied() const { if (value_ref == nullptr) { return std::move(owned_value); } return *value_ref; } value_type const& operator*() const { return value_ref ? *value_ref : owned_value; } value_type const* operator->() const { return &** this; } private: mutable value_type owned_value = nullptr; value_type const* value_ref = nullptr; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/json_ref.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <initializer_list> #include <utility> #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/meta/type_traits.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename BasicJsonType> class json_ref { public: using value_type = BasicJsonType; json_ref(value_type&& value) : owned_value(std::move(value)) {} json_ref(const value_type& value) : value_ref(&value) {} json_ref(std::initializer_list<json_ref> init) : owned_value(init) {} template < class... Args, enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 > json_ref(Args && ... args) : owned_value(std::forward<Args>(args)...) {} // class should be movable only json_ref(json_ref&&) noexcept = default; json_ref(const json_ref&) = delete; json_ref& operator=(const json_ref&) = delete; json_ref& operator=(json_ref&&) = delete; ~json_ref() = default; value_type moved_or_copied() const { if (value_ref == nullptr) { return std::move(owned_value); } return *value_ref; } value_type const& operator*() const { return value_ref ? *value_ref : owned_value; } value_type const* operator->() const { return &** this; } private: mutable value_type owned_value = nullptr; value_type const* value_ref = nullptr; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/jansson/jansson_config.h: -------------------------------------------------------------------------------- ``` /* * Copyright (c) 2010-2016 Petri Lehtinen <[email protected]> * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. * * * This file specifies a part of the site-specific configuration for * Jansson, namely those things that affect the public API in * jansson.h. * * The CMake system will generate the jansson_config.h file and * copy it to the build and install directories. */ #ifndef JANSSON_CONFIG_H #define JANSSON_CONFIG_H /* Define this so that we can disable scattered automake configuration in source files */ #ifndef JANSSON_USING_CMAKE #define JANSSON_USING_CMAKE #endif /* Note: when using cmake, JSON_INTEGER_IS_LONG_LONG is not defined nor used, * as we will also check for __int64 etc types. * (the definition was used in the automake system) */ /* Bring in the cmake-detected defines */ #define HAVE_STDINT_H 1 /* #undef HAVE_INTTYPES_H */ /* #undef HAVE_SYS_TYPES_H */ /* Include our standard type header for the integer typedef */ #if defined(HAVE_STDINT_H) # include <stdint.h> #elif defined(HAVE_INTTYPES_H) # include <inttypes.h> #elif defined(HAVE_SYS_TYPES_H) # include <sys/types.h> #endif /* If your compiler supports the inline keyword in C, JSON_INLINE is defined to `inline', otherwise empty. In C++, the inline is always supported. */ #ifdef __cplusplus #define JSON_INLINE inline #else #define JSON_INLINE __inline #endif #define json_int_t long long #define json_strtoint strtoll #define JSON_INTEGER_FORMAT "I64d" /* If locale.h and localeconv() are available, define to 1, otherwise to 0. */ #define JSON_HAVE_LOCALECONV 1 /* Maximum recursion depth for parsing JSON input. This limits the depth of e.g. array-within-array constructions. */ #define JSON_PARSER_MAX_DEPTH 2048 #endif ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/jansson/jansson_config.h: -------------------------------------------------------------------------------- ``` /* * Copyright (c) 2010-2016 Petri Lehtinen <[email protected]> * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. * * * This file specifies a part of the site-specific configuration for * Jansson, namely those things that affect the public API in * jansson.h. * * The CMake system will generate the jansson_config.h file and * copy it to the build and install directories. */ #ifndef JANSSON_CONFIG_H #define JANSSON_CONFIG_H /* Define this so that we can disable scattered automake configuration in source files */ #ifndef JANSSON_USING_CMAKE #define JANSSON_USING_CMAKE #endif /* Note: when using cmake, JSON_INTEGER_IS_LONG_LONG is not defined nor used, * as we will also check for __int64 etc types. * (the definition was used in the automake system) */ /* Bring in the cmake-detected defines */ #define HAVE_STDINT_H 1 /* #undef HAVE_INTTYPES_H */ /* #undef HAVE_SYS_TYPES_H */ /* Include our standard type header for the integer typedef */ #if defined(HAVE_STDINT_H) # include <stdint.h> #elif defined(HAVE_INTTYPES_H) # include <inttypes.h> #elif defined(HAVE_SYS_TYPES_H) # include <sys/types.h> #endif /* If your compiler supports the inline keyword in C, JSON_INLINE is defined to `inline', otherwise empty. In C++, the inline is always supported. */ #ifdef __cplusplus #define JSON_INLINE inline #else #define JSON_INLINE __inline #endif #define json_int_t long long #define json_strtoint strtoll #define JSON_INTEGER_FORMAT "I64d" /* If locale.h and localeconv() are available, define to 1, otherwise to 0. */ #define JSON_HAVE_LOCALECONV 1 /* Maximum recursion depth for parsing JSON input. This limits the depth of e.g. array-within-array constructions. */ #define JSON_PARSER_MAX_DEPTH 2048 #endif ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/detected.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <type_traits> #include <nlohmann/detail/meta/void_t.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // https://en.cppreference.com/w/cpp/experimental/is_detected struct nonesuch { nonesuch() = delete; ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; nonesuch(nonesuch const&&) = delete; void operator=(nonesuch const&) = delete; void operator=(nonesuch&&) = delete; }; template<class Default, class AlwaysVoid, template<class...> class Op, class... Args> struct detector { using value_t = std::false_type; using type = Default; }; template<class Default, template<class...> class Op, class... Args> struct detector<Default, void_t<Op<Args...>>, Op, Args...> { using value_t = std::true_type; using type = Op<Args...>; }; template<template<class...> class Op, class... Args> using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t; template<template<class...> class Op, class... Args> struct is_detected_lazy : is_detected<Op, Args...> { }; template<template<class...> class Op, class... Args> using detected_t = typename detector<nonesuch, void, Op, Args...>::type; template<class Default, template<class...> class Op, class... Args> using detected_or = detector<Default, void, Op, Args...>; template<class Default, template<class...> class Op, class... Args> using detected_or_t = typename detected_or<Default, Op, Args...>::type; template<class Expected, template<class...> class Op, class... Args> using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>; template<class To, template<class...> class Op, class... Args> using is_detected_convertible = std::is_convertible<detected_t<Op, Args...>, To>; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/detected.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <type_traits> #include <nlohmann/detail/meta/void_t.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // https://en.cppreference.com/w/cpp/experimental/is_detected struct nonesuch { nonesuch() = delete; ~nonesuch() = delete; nonesuch(nonesuch const&) = delete; nonesuch(nonesuch const&&) = delete; void operator=(nonesuch const&) = delete; void operator=(nonesuch&&) = delete; }; template<class Default, class AlwaysVoid, template<class...> class Op, class... Args> struct detector { using value_t = std::false_type; using type = Default; }; template<class Default, template<class...> class Op, class... Args> struct detector<Default, void_t<Op<Args...>>, Op, Args...> { using value_t = std::true_type; using type = Op<Args...>; }; template<template<class...> class Op, class... Args> using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t; template<template<class...> class Op, class... Args> struct is_detected_lazy : is_detected<Op, Args...> { }; template<template<class...> class Op, class... Args> using detected_t = typename detector<nonesuch, void, Op, Args...>::type; template<class Default, template<class...> class Op, class... Args> using detected_or = detector<Default, void, Op, Args...>; template<class Default, template<class...> class Op, class... Args> using detected_or_t = typename detected_or<Default, Op, Args...>::type; template<class Expected, template<class...> class Op, class... Args> using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>; template<class To, template<class...> class Op, class... Args> using is_detected_convertible = std::is_convertible<detected_t<Op, Args...>, To>; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/string_escape.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief replace all occurrences of a substring by another string @param[in,out] s the string to manipulate; changed so that all occurrences of @a f are replaced with @a t @param[in] f the substring to replace with @a t @param[in] t the string to replace @a f @pre The search string @a f must not be empty. **This precondition is enforced with an assertion.** @since version 2.0.0 */ template<typename StringType> inline void replace_substring(StringType& s, const StringType& f, const StringType& t) { JSON_ASSERT(!f.empty()); for (auto pos = s.find(f); // find first occurrence of f pos != StringType::npos; // make sure f was found s.replace(pos, f.size(), t), // replace with t, and pos = s.find(f, pos + t.size())) // find next occurrence of f {} } /*! * @brief string escaping as described in RFC 6901 (Sect. 4) * @param[in] s string to escape * @return escaped string * * Note the order of escaping "~" to "~0" and "/" to "~1" is important. */ template<typename StringType> inline StringType escape(StringType s) { replace_substring(s, StringType{"~"}, StringType{"~0"}); replace_substring(s, StringType{"/"}, StringType{"~1"}); return s; } /*! * @brief string unescaping as described in RFC 6901 (Sect. 4) * @param[in] s string to unescape * @return unescaped string * * Note the order of escaping "~1" to "/" and "~0" to "~" is important. */ template<typename StringType> static void unescape(StringType& s) { replace_substring(s, StringType{"~1"}, StringType{"/"}); replace_substring(s, StringType{"~0"}, StringType{"~"}); } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/string_escape.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /*! @brief replace all occurrences of a substring by another string @param[in,out] s the string to manipulate; changed so that all occurrences of @a f are replaced with @a t @param[in] f the substring to replace with @a t @param[in] t the string to replace @a f @pre The search string @a f must not be empty. **This precondition is enforced with an assertion.** @since version 2.0.0 */ template<typename StringType> inline void replace_substring(StringType& s, const StringType& f, const StringType& t) { JSON_ASSERT(!f.empty()); for (auto pos = s.find(f); // find first occurrence of f pos != StringType::npos; // make sure f was found s.replace(pos, f.size(), t), // replace with t, and pos = s.find(f, pos + t.size())) // find next occurrence of f {} } /*! * @brief string escaping as described in RFC 6901 (Sect. 4) * @param[in] s string to escape * @return escaped string * * Note the order of escaping "~" to "~0" and "/" to "~1" is important. */ template<typename StringType> inline StringType escape(StringType s) { replace_substring(s, StringType{"~"}, StringType{"~0"}); replace_substring(s, StringType{"/"}, StringType{"~1"}); return s; } /*! * @brief string unescaping as described in RFC 6901 (Sect. 4) * @param[in] s string to unescape * @return unescaped string * * Note the order of escaping "~1" to "/" and "~0" to "~" is important. */ template<typename StringType> static void unescape(StringType& s) { replace_substring(s, StringType{"~1"}, StringType{"/"}); replace_substring(s, StringType{"~0"}, StringType{"~"}); } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/adl_serializer.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <utility> #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/conversions/from_json.hpp> #include <nlohmann/detail/conversions/to_json.hpp> #include <nlohmann/detail/meta/identity_tag.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN /// @sa https://json.nlohmann.me/api/adl_serializer/ template<typename ValueType, typename> struct adl_serializer { /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto from_json(BasicJsonType && j, TargetType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto from_json(BasicJsonType && j) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})) { return ::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}); } /// @brief convert any value type to a JSON value /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto to_json(BasicJsonType& j, TargetType && val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val)))) -> decltype(::nlohmann::to_json(j, std::forward<TargetType>(val)), void()) { ::nlohmann::to_json(j, std::forward<TargetType>(val)); } }; NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/adl_serializer.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <utility> #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/conversions/from_json.hpp> #include <nlohmann/detail/conversions/to_json.hpp> #include <nlohmann/detail/meta/identity_tag.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN /// @sa https://json.nlohmann.me/api/adl_serializer/ template<typename ValueType, typename> struct adl_serializer { /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto from_json(BasicJsonType && j, TargetType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) { ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); } /// @brief convert a JSON value to any value type /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto from_json(BasicJsonType && j) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {})) { return ::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}); } /// @brief convert any value type to a JSON value /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ template<typename BasicJsonType, typename TargetType = ValueType> static auto to_json(BasicJsonType& j, TargetType && val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val)))) -> decltype(::nlohmann::to_json(j, std::forward<TargetType>(val)), void()) { ::nlohmann::to_json(j, std::forward<TargetType>(val)); } }; NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_gui.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_GUI_H #define _SCRIPTAPI_GUI_H #include "_scriptapi.h" namespace Script { namespace Gui { namespace Disassembly { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Disassembly namespace Dump { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Dump namespace Stack { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Stack namespace Graph { SCRIPT_EXPORT duint SelectionGetStart(); }; //Graph namespace MemMap { SCRIPT_EXPORT duint SelectionGetStart(); }; //MemoryMap namespace SymMod { SCRIPT_EXPORT duint SelectionGetStart(); }; //SymMod }; //Gui namespace Gui { enum Window { DisassemblyWindow, DumpWindow, StackWindow, GraphWindow, MemMapWindow, SymModWindow }; SCRIPT_EXPORT bool SelectionGet(Window window, duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(Window window, duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(Window window); SCRIPT_EXPORT duint SelectionGetEnd(Window window); SCRIPT_EXPORT void Message(const char* message); SCRIPT_EXPORT bool MessageYesNo(const char* message); SCRIPT_EXPORT bool InputLine(const char* title, char* text); //text[GUI_MAX_LINE_SIZE] SCRIPT_EXPORT bool InputValue(const char* title, duint* value); SCRIPT_EXPORT void Refresh(); SCRIPT_EXPORT void AddQWidgetTab(void* qWidget); SCRIPT_EXPORT void ShowQWidgetTab(void* qWidget); SCRIPT_EXPORT void CloseQWidgetTab(void* qWidget); }; //Gui }; //Script #endif //_SCRIPTAPI_GUI_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_gui.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_GUI_H #define _SCRIPTAPI_GUI_H #include "_scriptapi.h" namespace Script { namespace Gui { namespace Disassembly { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Disassembly namespace Dump { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Dump namespace Stack { SCRIPT_EXPORT bool SelectionGet(duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(); SCRIPT_EXPORT duint SelectionGetEnd(); }; //Stack namespace Graph { SCRIPT_EXPORT duint SelectionGetStart(); }; //Graph namespace MemMap { SCRIPT_EXPORT duint SelectionGetStart(); }; //MemoryMap namespace SymMod { SCRIPT_EXPORT duint SelectionGetStart(); }; //SymMod }; //Gui namespace Gui { enum Window { DisassemblyWindow, DumpWindow, StackWindow, GraphWindow, MemMapWindow, SymModWindow }; SCRIPT_EXPORT bool SelectionGet(Window window, duint* start, duint* end); SCRIPT_EXPORT bool SelectionSet(Window window, duint start, duint end); SCRIPT_EXPORT duint SelectionGetStart(Window window); SCRIPT_EXPORT duint SelectionGetEnd(Window window); SCRIPT_EXPORT void Message(const char* message); SCRIPT_EXPORT bool MessageYesNo(const char* message); SCRIPT_EXPORT bool InputLine(const char* title, char* text); //text[GUI_MAX_LINE_SIZE] SCRIPT_EXPORT bool InputValue(const char* title, duint* value); SCRIPT_EXPORT void Refresh(); SCRIPT_EXPORT void AddQWidgetTab(void* qWidget); SCRIPT_EXPORT void ShowQWidgetTab(void* qWidget); SCRIPT_EXPORT void CloseQWidgetTab(void* qWidget); }; //Gui }; //Script #endif //_SCRIPTAPI_GUI_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/json_fwd.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ #include <cstdint> // int64_t, uint64_t #include <map> // map #include <memory> // allocator #include <string> // string #include <vector> // vector #include <nlohmann/detail/abi_macros.hpp> /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann @since version 1.0.0 */ NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief default JSONSerializer template argument This serializer ignores the template arguments and uses ADL ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) for serialization. */ template<typename T = void, typename SFINAE = void> struct adl_serializer; /// a class to store JSON values /// @sa https://json.nlohmann.me/api/basic_json/ template<template<typename U, typename V, typename... Args> class ObjectType = std::map, template<typename U, typename... Args> class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template<typename U> class AllocatorType = std::allocator, template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer, class BinaryType = std::vector<std::uint8_t>, // cppcheck-suppress syntaxError class CustomBaseClass = void> class basic_json; /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document /// @sa https://json.nlohmann.me/api/json_pointer/ template<typename RefStringType> class json_pointer; /*! @brief default specialization @sa https://json.nlohmann.me/api/json/ */ using json = basic_json<>; /// @brief a minimal map-like container that preserves insertion order /// @sa https://json.nlohmann.me/api/ordered_map/ template<class Key, class T, class IgnoredLess, class Allocator> struct ordered_map; /// @brief specialization that maintains the insertion order of object keys /// @sa https://json.nlohmann.me/api/ordered_json/ using ordered_json = basic_json<nlohmann::ordered_map>; NLOHMANN_JSON_NAMESPACE_END #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ ``` -------------------------------------------------------------------------------- /include/nlohmann/json_fwd.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ #include <cstdint> // int64_t, uint64_t #include <map> // map #include <memory> // allocator #include <string> // string #include <vector> // vector #include <nlohmann/detail/abi_macros.hpp> /*! @brief namespace for Niels Lohmann @see https://github.com/nlohmann @since version 1.0.0 */ NLOHMANN_JSON_NAMESPACE_BEGIN /*! @brief default JSONSerializer template argument This serializer ignores the template arguments and uses ADL ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) for serialization. */ template<typename T = void, typename SFINAE = void> struct adl_serializer; /// a class to store JSON values /// @sa https://json.nlohmann.me/api/basic_json/ template<template<typename U, typename V, typename... Args> class ObjectType = std::map, template<typename U, typename... Args> class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template<typename U> class AllocatorType = std::allocator, template<typename T, typename SFINAE = void> class JSONSerializer = adl_serializer, class BinaryType = std::vector<std::uint8_t>, // cppcheck-suppress syntaxError class CustomBaseClass = void> class basic_json; /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document /// @sa https://json.nlohmann.me/api/json_pointer/ template<typename RefStringType> class json_pointer; /*! @brief default specialization @sa https://json.nlohmann.me/api/json/ */ using json = basic_json<>; /// @brief a minimal map-like container that preserves insertion order /// @sa https://json.nlohmann.me/api/ordered_map/ template<class Key, class T, class IgnoredLess, class Allocator> struct ordered_map; /// @brief specialization that maintains the insertion order of object keys /// @sa https://json.nlohmann.me/api/ordered_json/ using ordered_json = basic_json<nlohmann::ordered_map>; NLOHMANN_JSON_NAMESPACE_END #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_misc.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MISC_H #define _SCRIPTAPI_MISC_H #include "_scriptapi.h" namespace Script { namespace Misc { /// <summary> /// Evaluates an expression and returns the result. Analagous to using the Command field in x64dbg. /// /// Expressions can consist of memory locations, registers, flags, API names, labels, symbols, variables etc. /// <example> /// Shows how to read from stack at esp+8 /// <code> /// bool success = ParseExpression("[esp+8]", &val) /// </code> /// </example> /// </summary> /// <param name="expression">The expression to evaluate.</param> /// <param name="value">The result of the expression.</param> /// <returns>True on success, False on failure.</returns> SCRIPT_EXPORT bool ParseExpression(const char* expression, duint* value); /// <summary> /// Returns the address of a function in the debuggee's memory space. /// </summary> /// <example> /// <code> /// duint addr = RemoteGetProcAddress("kernel32.dll", "GetProcAddress") /// </code> /// </example> /// <param name="module">The name of the module.</param> /// <param name="api">The name of the function.</param> /// <returns>The address of the function in the debuggee.</returns> SCRIPT_EXPORT duint RemoteGetProcAddress(const char* module, const char* api); /// <summary> /// Returns the address for a label created in the disassembly window. /// </summary> /// <example> /// <code> /// duint addr = ResolveLabel("sneaky_crypto") /// </code> /// </example> /// <param name="label">The name of the label to resolve.</param> /// <returns>The memory address for the label.</returns> SCRIPT_EXPORT duint ResolveLabel(const char* label); /// <summary> /// Allocates the requested number of bytes from x64dbg's default process heap. /// /// Note: this allocation is in the debugger, not the debuggee. /// /// Memory allocated using this function should be Free'd after use. /// </summary> /// <example> /// <code> /// void* addr = Alloc(0x100000) /// </code> /// </example> /// <param name="size">Number of bytes to allocate.</param> /// <returns>A pointer to the newly allocated memory.</returns> SCRIPT_EXPORT void* Alloc(duint size); /// <summary> /// Frees memory previously allocated by Alloc. /// </summary> /// <example> /// <code> /// Free(addr) /// </code> /// </example> /// <param name="ptr">Pointer returned by Alloc.</param> /// <returns>Nothing.</returns> SCRIPT_EXPORT void Free(void* ptr); }; //Misc }; //Script #endif //_SCRIPTAPI_MISC_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_misc.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MISC_H #define _SCRIPTAPI_MISC_H #include "_scriptapi.h" namespace Script { namespace Misc { /// <summary> /// Evaluates an expression and returns the result. Analagous to using the Command field in x64dbg. /// /// Expressions can consist of memory locations, registers, flags, API names, labels, symbols, variables etc. /// <example> /// Shows how to read from stack at esp+8 /// <code> /// bool success = ParseExpression("[esp+8]", &val) /// </code> /// </example> /// </summary> /// <param name="expression">The expression to evaluate.</param> /// <param name="value">The result of the expression.</param> /// <returns>True on success, False on failure.</returns> SCRIPT_EXPORT bool ParseExpression(const char* expression, duint* value); /// <summary> /// Returns the address of a function in the debuggee's memory space. /// </summary> /// <example> /// <code> /// duint addr = RemoteGetProcAddress("kernel32.dll", "GetProcAddress") /// </code> /// </example> /// <param name="module">The name of the module.</param> /// <param name="api">The name of the function.</param> /// <returns>The address of the function in the debuggee.</returns> SCRIPT_EXPORT duint RemoteGetProcAddress(const char* module, const char* api); /// <summary> /// Returns the address for a label created in the disassembly window. /// </summary> /// <example> /// <code> /// duint addr = ResolveLabel("sneaky_crypto") /// </code> /// </example> /// <param name="label">The name of the label to resolve.</param> /// <returns>The memory address for the label.</returns> SCRIPT_EXPORT duint ResolveLabel(const char* label); /// <summary> /// Allocates the requested number of bytes from x64dbg's default process heap. /// /// Note: this allocation is in the debugger, not the debuggee. /// /// Memory allocated using this function should be Free'd after use. /// </summary> /// <example> /// <code> /// void* addr = Alloc(0x100000) /// </code> /// </example> /// <param name="size">Number of bytes to allocate.</param> /// <returns>A pointer to the newly allocated memory.</returns> SCRIPT_EXPORT void* Alloc(duint size); /// <summary> /// Frees memory previously allocated by Alloc. /// </summary> /// <example> /// <code> /// Free(addr) /// </code> /// </example> /// <param name="ptr">Pointer returned by Alloc.</param> /// <returns>Nothing.</returns> SCRIPT_EXPORT void Free(void* ptr); }; //Misc }; //Script #endif //_SCRIPTAPI_MISC_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/iterators/primitive_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // ptrdiff_t #include <limits> // numeric_limits #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /* @brief an iterator for primitive JSON types This class models an iterator for primitive JSON types (boolean, number, string). It's only purpose is to allow the iterator/const_iterator classes to "iterate" over primitive values. Internally, the iterator is modeled by a `difference_type` variable. Value begin_value (`0`) models the begin, end_value (`1`) models past the end. */ class primitive_iterator_t { private: using difference_type = std::ptrdiff_t; static constexpr difference_type begin_value = 0; static constexpr difference_type end_value = begin_value + 1; JSON_PRIVATE_UNLESS_TESTED: /// iterator as signed integer type difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)(); public: constexpr difference_type get_value() const noexcept { return m_it; } /// set iterator to a defined beginning void set_begin() noexcept { m_it = begin_value; } /// set iterator to a defined past the end void set_end() noexcept { m_it = end_value; } /// return whether the iterator can be dereferenced constexpr bool is_begin() const noexcept { return m_it == begin_value; } /// return whether the iterator is at end constexpr bool is_end() const noexcept { return m_it == end_value; } friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it == rhs.m_it; } friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it < rhs.m_it; } primitive_iterator_t operator+(difference_type n) noexcept { auto result = *this; result += n; return result; } friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it - rhs.m_it; } primitive_iterator_t& operator++() noexcept { ++m_it; return *this; } primitive_iterator_t operator++(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; ++m_it; return result; } primitive_iterator_t& operator--() noexcept { --m_it; return *this; } primitive_iterator_t operator--(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; --m_it; return result; } primitive_iterator_t& operator+=(difference_type n) noexcept { m_it += n; return *this; } primitive_iterator_t& operator-=(difference_type n) noexcept { m_it -= n; return *this; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/iterators/primitive_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // ptrdiff_t #include <limits> // numeric_limits #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /* @brief an iterator for primitive JSON types This class models an iterator for primitive JSON types (boolean, number, string). It's only purpose is to allow the iterator/const_iterator classes to "iterate" over primitive values. Internally, the iterator is modeled by a `difference_type` variable. Value begin_value (`0`) models the begin, end_value (`1`) models past the end. */ class primitive_iterator_t { private: using difference_type = std::ptrdiff_t; static constexpr difference_type begin_value = 0; static constexpr difference_type end_value = begin_value + 1; JSON_PRIVATE_UNLESS_TESTED: /// iterator as signed integer type difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)(); public: constexpr difference_type get_value() const noexcept { return m_it; } /// set iterator to a defined beginning void set_begin() noexcept { m_it = begin_value; } /// set iterator to a defined past the end void set_end() noexcept { m_it = end_value; } /// return whether the iterator can be dereferenced constexpr bool is_begin() const noexcept { return m_it == begin_value; } /// return whether the iterator is at end constexpr bool is_end() const noexcept { return m_it == end_value; } friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it == rhs.m_it; } friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it < rhs.m_it; } primitive_iterator_t operator+(difference_type n) noexcept { auto result = *this; result += n; return result; } friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept { return lhs.m_it - rhs.m_it; } primitive_iterator_t& operator++() noexcept { ++m_it; return *this; } primitive_iterator_t operator++(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; ++m_it; return result; } primitive_iterator_t& operator--() noexcept { --m_it; return *this; } primitive_iterator_t operator--(int)& noexcept // NOLINT(cert-dcl21-cpp) { auto result = *this; --m_it; return result; } primitive_iterator_t& operator+=(difference_type n) noexcept { m_it += n; return *this; } primitive_iterator_t& operator-=(difference_type n) noexcept { m_it -= n; return *this; } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/_scriptapi_module.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MODULE_H #define _SCRIPTAPI_MODULE_H #include "_scriptapi.h" namespace Script { namespace Module { struct ModuleInfo { duint base; duint size; duint entry; int sectionCount; char name[MAX_MODULE_SIZE]; char path[MAX_PATH]; }; struct ModuleSectionInfo { duint addr; duint size; char name[MAX_SECTION_SIZE * 5]; }; struct ModuleExport { duint ordinal; duint rva; duint va; bool forwarded; char forwardName[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; char undecoratedName[MAX_STRING_SIZE]; }; struct ModuleImport { duint iatRva; duint iatVa; duint ordinal; //equal to -1 if imported by name char name[MAX_STRING_SIZE]; char undecoratedName[MAX_STRING_SIZE]; }; SCRIPT_EXPORT bool InfoFromAddr(duint addr, ModuleInfo* info); SCRIPT_EXPORT bool InfoFromName(const char* name, ModuleInfo* info); SCRIPT_EXPORT duint BaseFromAddr(duint addr); SCRIPT_EXPORT duint BaseFromName(const char* name); SCRIPT_EXPORT duint SizeFromAddr(duint addr); SCRIPT_EXPORT duint SizeFromName(const char* name); SCRIPT_EXPORT bool NameFromAddr(duint addr, char* name); //name[MAX_MODULE_SIZE] SCRIPT_EXPORT bool PathFromAddr(duint addr, char* path); //path[MAX_PATH] SCRIPT_EXPORT bool PathFromName(const char* name, char* path); //path[MAX_PATH] SCRIPT_EXPORT duint EntryFromAddr(duint addr); SCRIPT_EXPORT duint EntryFromName(const char* name); SCRIPT_EXPORT int SectionCountFromAddr(duint addr); SCRIPT_EXPORT int SectionCountFromName(const char* name); SCRIPT_EXPORT bool SectionFromAddr(duint addr, int number, ModuleSectionInfo* section); SCRIPT_EXPORT bool SectionFromName(const char* name, int number, ModuleSectionInfo* section); SCRIPT_EXPORT bool SectionListFromAddr(duint addr, ListOf(ModuleSectionInfo) list); SCRIPT_EXPORT bool SectionListFromName(const char* name, ListOf(ModuleSectionInfo) list); SCRIPT_EXPORT bool GetMainModuleInfo(ModuleInfo* info); SCRIPT_EXPORT duint GetMainModuleBase(); SCRIPT_EXPORT duint GetMainModuleSize(); SCRIPT_EXPORT duint GetMainModuleEntry(); SCRIPT_EXPORT int GetMainModuleSectionCount(); SCRIPT_EXPORT bool GetMainModuleName(char* name); //name[MAX_MODULE_SIZE] SCRIPT_EXPORT bool GetMainModulePath(char* path); //path[MAX_PATH] SCRIPT_EXPORT bool GetMainModuleSectionList(ListOf(ModuleSectionInfo) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetList(ListOf(ModuleInfo) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetExports(const ModuleInfo* mod, ListOf(ModuleExport) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetImports(const ModuleInfo* mod, ListOf(ModuleImport) list); //caller has the responsibility to free the list }; //Module }; //Script #endif //_SCRIPTAPI_MODULE_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/_scriptapi_module.h: -------------------------------------------------------------------------------- ``` #ifndef _SCRIPTAPI_MODULE_H #define _SCRIPTAPI_MODULE_H #include "_scriptapi.h" namespace Script { namespace Module { struct ModuleInfo { duint base; duint size; duint entry; int sectionCount; char name[MAX_MODULE_SIZE]; char path[MAX_PATH]; }; struct ModuleSectionInfo { duint addr; duint size; char name[MAX_SECTION_SIZE * 5]; }; struct ModuleExport { duint ordinal; duint rva; duint va; bool forwarded; char forwardName[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; char undecoratedName[MAX_STRING_SIZE]; }; struct ModuleImport { duint iatRva; duint iatVa; duint ordinal; //equal to -1 if imported by name char name[MAX_STRING_SIZE]; char undecoratedName[MAX_STRING_SIZE]; }; SCRIPT_EXPORT bool InfoFromAddr(duint addr, ModuleInfo* info); SCRIPT_EXPORT bool InfoFromName(const char* name, ModuleInfo* info); SCRIPT_EXPORT duint BaseFromAddr(duint addr); SCRIPT_EXPORT duint BaseFromName(const char* name); SCRIPT_EXPORT duint SizeFromAddr(duint addr); SCRIPT_EXPORT duint SizeFromName(const char* name); SCRIPT_EXPORT bool NameFromAddr(duint addr, char* name); //name[MAX_MODULE_SIZE] SCRIPT_EXPORT bool PathFromAddr(duint addr, char* path); //path[MAX_PATH] SCRIPT_EXPORT bool PathFromName(const char* name, char* path); //path[MAX_PATH] SCRIPT_EXPORT duint EntryFromAddr(duint addr); SCRIPT_EXPORT duint EntryFromName(const char* name); SCRIPT_EXPORT int SectionCountFromAddr(duint addr); SCRIPT_EXPORT int SectionCountFromName(const char* name); SCRIPT_EXPORT bool SectionFromAddr(duint addr, int number, ModuleSectionInfo* section); SCRIPT_EXPORT bool SectionFromName(const char* name, int number, ModuleSectionInfo* section); SCRIPT_EXPORT bool SectionListFromAddr(duint addr, ListOf(ModuleSectionInfo) list); SCRIPT_EXPORT bool SectionListFromName(const char* name, ListOf(ModuleSectionInfo) list); SCRIPT_EXPORT bool GetMainModuleInfo(ModuleInfo* info); SCRIPT_EXPORT duint GetMainModuleBase(); SCRIPT_EXPORT duint GetMainModuleSize(); SCRIPT_EXPORT duint GetMainModuleEntry(); SCRIPT_EXPORT int GetMainModuleSectionCount(); SCRIPT_EXPORT bool GetMainModuleName(char* name); //name[MAX_MODULE_SIZE] SCRIPT_EXPORT bool GetMainModulePath(char* path); //path[MAX_PATH] SCRIPT_EXPORT bool GetMainModuleSectionList(ListOf(ModuleSectionInfo) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetList(ListOf(ModuleInfo) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetExports(const ModuleInfo* mod, ListOf(ModuleExport) list); //caller has the responsibility to free the list SCRIPT_EXPORT bool GetImports(const ModuleInfo* mod, ListOf(ModuleImport) list); //caller has the responsibility to free the list }; //Module }; //Script #endif //_SCRIPTAPI_MODULE_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/byte_container_with_subtype.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstdint> // uint8_t, uint64_t #include <tuple> // tie #include <utility> // move #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN /// @brief an internal type for a backed binary type /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/ template<typename BinaryType> class byte_container_with_subtype : public BinaryType { public: using container_type = BinaryType; using subtype_type = std::uint64_t; /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype() noexcept(noexcept(container_type())) : container_type() {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) : container_type(b) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) : container_type(b) , m_subtype(subtype_) , m_has_subtype(true) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) , m_subtype(subtype_) , m_has_subtype(true) {} bool operator==(const byte_container_with_subtype& rhs) const { return std::tie(static_cast<const BinaryType&>(*this), m_subtype, m_has_subtype) == std::tie(static_cast<const BinaryType&>(rhs), rhs.m_subtype, rhs.m_has_subtype); } bool operator!=(const byte_container_with_subtype& rhs) const { return !(rhs == *this); } /// @brief sets the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ void set_subtype(subtype_type subtype_) noexcept { m_subtype = subtype_; m_has_subtype = true; } /// @brief return the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ constexpr subtype_type subtype() const noexcept { return m_has_subtype ? m_subtype : static_cast<subtype_type>(-1); } /// @brief return whether the value has a subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ constexpr bool has_subtype() const noexcept { return m_has_subtype; } /// @brief clears the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ void clear_subtype() noexcept { m_subtype = 0; m_has_subtype = false; } private: subtype_type m_subtype = 0; bool m_has_subtype = false; }; NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/byte_container_with_subtype.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstdint> // uint8_t, uint64_t #include <tuple> // tie #include <utility> // move #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN /// @brief an internal type for a backed binary type /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/ template<typename BinaryType> class byte_container_with_subtype : public BinaryType { public: using container_type = BinaryType; using subtype_type = std::uint64_t; /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype() noexcept(noexcept(container_type())) : container_type() {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) : container_type(b) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) : container_type(b) , m_subtype(subtype_) , m_has_subtype(true) {} /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) : container_type(std::move(b)) , m_subtype(subtype_) , m_has_subtype(true) {} bool operator==(const byte_container_with_subtype& rhs) const { return std::tie(static_cast<const BinaryType&>(*this), m_subtype, m_has_subtype) == std::tie(static_cast<const BinaryType&>(rhs), rhs.m_subtype, rhs.m_has_subtype); } bool operator!=(const byte_container_with_subtype& rhs) const { return !(rhs == *this); } /// @brief sets the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ void set_subtype(subtype_type subtype_) noexcept { m_subtype = subtype_; m_has_subtype = true; } /// @brief return the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ constexpr subtype_type subtype() const noexcept { return m_has_subtype ? m_subtype : static_cast<subtype_type>(-1); } /// @brief return whether the value has a subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ constexpr bool has_subtype() const noexcept { return m_has_subtype; } /// @brief clears the binary subtype /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ void clear_subtype() noexcept { m_subtype = 0; m_has_subtype = false; } private: subtype_type m_subtype = 0; bool m_has_subtype = false; }; NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/abi_macros.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once // This file contains all macro definitions affecting or depending on the ABI #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 #warning "Already included a different version of the library!" #endif #endif #endif #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) #ifndef JSON_DIAGNOSTICS #define JSON_DIAGNOSTICS 0 #endif #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 #endif #if JSON_DIAGNOSTICS #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag #else #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS #endif #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp #else #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON #endif #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 #endif // Construct the namespace ABI tags component #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) #define NLOHMANN_JSON_ABI_TAGS \ NLOHMANN_JSON_ABI_TAGS_CONCAT( \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) // Construct the namespace version component #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ _v ## major ## _ ## minor ## _ ## patch #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) #if NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_VERSION #else #define NLOHMANN_JSON_NAMESPACE_VERSION \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ NLOHMANN_JSON_VERSION_MINOR, \ NLOHMANN_JSON_VERSION_PATCH) #endif // Combine namespace components #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) #ifndef NLOHMANN_JSON_NAMESPACE #define NLOHMANN_JSON_NAMESPACE \ nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) #endif #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN #define NLOHMANN_JSON_NAMESPACE_BEGIN \ namespace nlohmann \ { \ inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) \ { #endif #ifndef NLOHMANN_JSON_NAMESPACE_END #define NLOHMANN_JSON_NAMESPACE_END \ } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ } // namespace nlohmann #endif ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/abi_macros.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once // This file contains all macro definitions affecting or depending on the ABI #ifndef JSON_SKIP_LIBRARY_VERSION_CHECK #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 #warning "Already included a different version of the library!" #endif #endif #endif #define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) #define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) #ifndef JSON_DIAGNOSTICS #define JSON_DIAGNOSTICS 0 #endif #ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 #endif #if JSON_DIAGNOSTICS #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag #else #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS #endif #if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp #else #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON #endif #ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 #endif // Construct the namespace ABI tags component #define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b #define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) #define NLOHMANN_JSON_ABI_TAGS \ NLOHMANN_JSON_ABI_TAGS_CONCAT( \ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) // Construct the namespace version component #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ _v ## major ## _ ## minor ## _ ## patch #define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) #if NLOHMANN_JSON_NAMESPACE_NO_VERSION #define NLOHMANN_JSON_NAMESPACE_VERSION #else #define NLOHMANN_JSON_NAMESPACE_VERSION \ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ NLOHMANN_JSON_VERSION_MINOR, \ NLOHMANN_JSON_VERSION_PATCH) #endif // Combine namespace components #define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b #define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) #ifndef NLOHMANN_JSON_NAMESPACE #define NLOHMANN_JSON_NAMESPACE \ nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) #endif #ifndef NLOHMANN_JSON_NAMESPACE_BEGIN #define NLOHMANN_JSON_NAMESPACE_BEGIN \ namespace nlohmann \ { \ inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ NLOHMANN_JSON_ABI_TAGS, \ NLOHMANN_JSON_NAMESPACE_VERSION) \ { #endif #ifndef NLOHMANN_JSON_NAMESPACE_END #define NLOHMANN_JSON_NAMESPACE_END \ } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ } // namespace nlohmann #endif ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/iterators/json_reverse_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // ptrdiff_t #include <iterator> // reverse_iterator #include <utility> // declval #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { ////////////////////// // reverse_iterator // ////////////////////// /*! @brief a template for a reverse iterator class @tparam Base the base iterator type to reverse. Valid types are @ref iterator (to create @ref reverse_iterator) and @ref const_iterator (to create @ref const_reverse_iterator). @requirement The class satisfies the following concept requirements: - [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): The iterator that can be moved can be moved in both directions (i.e. incremented and decremented). - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): It is possible to write to the pointed-to element (only if @a Base is @ref iterator). @since version 1.0.0 */ template<typename Base> class json_reverse_iterator : public std::reverse_iterator<Base> { public: using difference_type = std::ptrdiff_t; /// shortcut to the reverse iterator adapter using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element using reference = typename Base::reference; /// create reverse iterator from iterator explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept : base_iterator(it) {} /// create reverse iterator from base class explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} /// post-increment (it++) json_reverse_iterator operator++(int)& // NOLINT(cert-dcl21-cpp) { return static_cast<json_reverse_iterator>(base_iterator::operator++(1)); } /// pre-increment (++it) json_reverse_iterator& operator++() { return static_cast<json_reverse_iterator&>(base_iterator::operator++()); } /// post-decrement (it--) json_reverse_iterator operator--(int)& // NOLINT(cert-dcl21-cpp) { return static_cast<json_reverse_iterator>(base_iterator::operator--(1)); } /// pre-decrement (--it) json_reverse_iterator& operator--() { return static_cast<json_reverse_iterator&>(base_iterator::operator--()); } /// add to iterator json_reverse_iterator& operator+=(difference_type i) { return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i)); } /// add to iterator json_reverse_iterator operator+(difference_type i) const { return static_cast<json_reverse_iterator>(base_iterator::operator+(i)); } /// subtract from iterator json_reverse_iterator operator-(difference_type i) const { return static_cast<json_reverse_iterator>(base_iterator::operator-(i)); } /// return difference difference_type operator-(const json_reverse_iterator& other) const { return base_iterator(*this) - base_iterator(other); } /// access to successor reference operator[](difference_type n) const { return *(this->operator+(n)); } /// return the key of an object iterator auto key() const -> decltype(std::declval<Base>().key()) { auto it = --this->base(); return it.key(); } /// return the value of an iterator reference value() const { auto it = --this->base(); return it.operator * (); } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/iterators/json_reverse_iterator.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstddef> // ptrdiff_t #include <iterator> // reverse_iterator #include <utility> // declval #include <nlohmann/detail/abi_macros.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { ////////////////////// // reverse_iterator // ////////////////////// /*! @brief a template for a reverse iterator class @tparam Base the base iterator type to reverse. Valid types are @ref iterator (to create @ref reverse_iterator) and @ref const_iterator (to create @ref const_reverse_iterator). @requirement The class satisfies the following concept requirements: - [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): The iterator that can be moved can be moved in both directions (i.e. incremented and decremented). - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): It is possible to write to the pointed-to element (only if @a Base is @ref iterator). @since version 1.0.0 */ template<typename Base> class json_reverse_iterator : public std::reverse_iterator<Base> { public: using difference_type = std::ptrdiff_t; /// shortcut to the reverse iterator adapter using base_iterator = std::reverse_iterator<Base>; /// the reference type for the pointed-to element using reference = typename Base::reference; /// create reverse iterator from iterator explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept : base_iterator(it) {} /// create reverse iterator from base class explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} /// post-increment (it++) json_reverse_iterator operator++(int)& // NOLINT(cert-dcl21-cpp) { return static_cast<json_reverse_iterator>(base_iterator::operator++(1)); } /// pre-increment (++it) json_reverse_iterator& operator++() { return static_cast<json_reverse_iterator&>(base_iterator::operator++()); } /// post-decrement (it--) json_reverse_iterator operator--(int)& // NOLINT(cert-dcl21-cpp) { return static_cast<json_reverse_iterator>(base_iterator::operator--(1)); } /// pre-decrement (--it) json_reverse_iterator& operator--() { return static_cast<json_reverse_iterator&>(base_iterator::operator--()); } /// add to iterator json_reverse_iterator& operator+=(difference_type i) { return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i)); } /// add to iterator json_reverse_iterator operator+(difference_type i) const { return static_cast<json_reverse_iterator>(base_iterator::operator+(i)); } /// subtract from iterator json_reverse_iterator operator-(difference_type i) const { return static_cast<json_reverse_iterator>(base_iterator::operator-(i)); } /// return difference difference_type operator-(const json_reverse_iterator& other) const { return base_iterator(*this) - base_iterator(other); } /// access to successor reference operator[](difference_type n) const { return *(this->operator+(n)); } /// return the key of an object iterator auto key() const -> decltype(std::declval<Base>().key()) { auto it = --this->base(); return it.key(); } /// return the value of an iterator reference value() const { auto it = --this->base(); return it.operator * (); } }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/hash.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstdint> // uint8_t #include <cstddef> // size_t #include <functional> // hash #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/value_t.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // boost::hash_combine inline std::size_t combine(std::size_t seed, std::size_t h) noexcept { seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); return seed; } /*! @brief hash a JSON value The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc. @tparam BasicJsonType basic_json specialization @param j JSON value to hash @return hash value of j */ template<typename BasicJsonType> std::size_t hash(const BasicJsonType& j) { using string_t = typename BasicJsonType::string_t; using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; const auto type = static_cast<std::size_t>(j.type()); switch (j.type()) { case BasicJsonType::value_t::null: case BasicJsonType::value_t::discarded: { return combine(type, 0); } case BasicJsonType::value_t::object: { auto seed = combine(type, j.size()); for (const auto& element : j.items()) { const auto h = std::hash<string_t> {}(element.key()); seed = combine(seed, h); seed = combine(seed, hash(element.value())); } return seed; } case BasicJsonType::value_t::array: { auto seed = combine(type, j.size()); for (const auto& element : j) { seed = combine(seed, hash(element)); } return seed; } case BasicJsonType::value_t::string: { const auto h = std::hash<string_t> {}(j.template get_ref<const string_t&>()); return combine(type, h); } case BasicJsonType::value_t::boolean: { const auto h = std::hash<bool> {}(j.template get<bool>()); return combine(type, h); } case BasicJsonType::value_t::number_integer: { const auto h = std::hash<number_integer_t> {}(j.template get<number_integer_t>()); return combine(type, h); } case BasicJsonType::value_t::number_unsigned: { const auto h = std::hash<number_unsigned_t> {}(j.template get<number_unsigned_t>()); return combine(type, h); } case BasicJsonType::value_t::number_float: { const auto h = std::hash<number_float_t> {}(j.template get<number_float_t>()); return combine(type, h); } case BasicJsonType::value_t::binary: { auto seed = combine(type, j.get_binary().size()); const auto h = std::hash<bool> {}(j.get_binary().has_subtype()); seed = combine(seed, h); seed = combine(seed, static_cast<std::size_t>(j.get_binary().subtype())); for (const auto byte : j.get_binary()) { seed = combine(seed, std::hash<std::uint8_t> {}(byte)); } return seed; } default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE return 0; // LCOV_EXCL_LINE } } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/hash.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <cstdint> // uint8_t #include <cstddef> // size_t #include <functional> // hash #include <nlohmann/detail/abi_macros.hpp> #include <nlohmann/detail/value_t.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { // boost::hash_combine inline std::size_t combine(std::size_t seed, std::size_t h) noexcept { seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); return seed; } /*! @brief hash a JSON value The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc. @tparam BasicJsonType basic_json specialization @param j JSON value to hash @return hash value of j */ template<typename BasicJsonType> std::size_t hash(const BasicJsonType& j) { using string_t = typename BasicJsonType::string_t; using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; const auto type = static_cast<std::size_t>(j.type()); switch (j.type()) { case BasicJsonType::value_t::null: case BasicJsonType::value_t::discarded: { return combine(type, 0); } case BasicJsonType::value_t::object: { auto seed = combine(type, j.size()); for (const auto& element : j.items()) { const auto h = std::hash<string_t> {}(element.key()); seed = combine(seed, h); seed = combine(seed, hash(element.value())); } return seed; } case BasicJsonType::value_t::array: { auto seed = combine(type, j.size()); for (const auto& element : j) { seed = combine(seed, hash(element)); } return seed; } case BasicJsonType::value_t::string: { const auto h = std::hash<string_t> {}(j.template get_ref<const string_t&>()); return combine(type, h); } case BasicJsonType::value_t::boolean: { const auto h = std::hash<bool> {}(j.template get<bool>()); return combine(type, h); } case BasicJsonType::value_t::number_integer: { const auto h = std::hash<number_integer_t> {}(j.template get<number_integer_t>()); return combine(type, h); } case BasicJsonType::value_t::number_unsigned: { const auto h = std::hash<number_unsigned_t> {}(j.template get<number_unsigned_t>()); return combine(type, h); } case BasicJsonType::value_t::number_float: { const auto h = std::hash<number_float_t> {}(j.template get<number_float_t>()); return combine(type, h); } case BasicJsonType::value_t::binary: { auto seed = combine(type, j.get_binary().size()); const auto h = std::hash<bool> {}(j.get_binary().has_subtype()); seed = combine(seed, h); seed = combine(seed, static_cast<std::size_t>(j.get_binary().subtype())); for (const auto byte : j.get_binary()) { seed = combine(seed, std::hash<std::uint8_t> {}(byte)); } return seed; } default: // LCOV_EXCL_LINE JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE return 0; // LCOV_EXCL_LINE } } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/output/output_adapters.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <algorithm> // copy #include <cstddef> // size_t #include <iterator> // back_inserter #include <memory> // shared_ptr, make_shared #include <string> // basic_string #include <vector> // vector #ifndef JSON_NO_IO #include <ios> // streamsize #include <ostream> // basic_ostream #endif // JSON_NO_IO #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// abstract output adapter interface template<typename CharType> struct output_adapter_protocol { virtual void write_character(CharType c) = 0; virtual void write_characters(const CharType* s, std::size_t length) = 0; virtual ~output_adapter_protocol() = default; output_adapter_protocol() = default; output_adapter_protocol(const output_adapter_protocol&) = default; output_adapter_protocol(output_adapter_protocol&&) noexcept = default; output_adapter_protocol& operator=(const output_adapter_protocol&) = default; output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; }; /// a type to simplify interfaces template<typename CharType> using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>; /// output adapter for byte vectors template<typename CharType, typename AllocatorType = std::allocator<CharType>> class output_vector_adapter : public output_adapter_protocol<CharType> { public: explicit output_vector_adapter(std::vector<CharType, AllocatorType>& vec) noexcept : v(vec) {} void write_character(CharType c) override { v.push_back(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { v.insert(v.end(), s, s + length); } private: std::vector<CharType, AllocatorType>& v; }; #ifndef JSON_NO_IO /// output adapter for output streams template<typename CharType> class output_stream_adapter : public output_adapter_protocol<CharType> { public: explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept : stream(s) {} void write_character(CharType c) override { stream.put(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { stream.write(s, static_cast<std::streamsize>(length)); } private: std::basic_ostream<CharType>& stream; }; #endif // JSON_NO_IO /// output adapter for basic_string template<typename CharType, typename StringType = std::basic_string<CharType>> class output_string_adapter : public output_adapter_protocol<CharType> { public: explicit output_string_adapter(StringType& s) noexcept : str(s) {} void write_character(CharType c) override { str.push_back(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { str.append(s, length); } private: StringType& str; }; template<typename CharType, typename StringType = std::basic_string<CharType>> class output_adapter { public: template<typename AllocatorType = std::allocator<CharType>> output_adapter(std::vector<CharType, AllocatorType>& vec) : oa(std::make_shared<output_vector_adapter<CharType, AllocatorType>>(vec)) {} #ifndef JSON_NO_IO output_adapter(std::basic_ostream<CharType>& s) : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {} #endif // JSON_NO_IO output_adapter(StringType& s) : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {} operator output_adapter_t<CharType>() { return oa; } private: output_adapter_t<CharType> oa = nullptr; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/output/output_adapters.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <algorithm> // copy #include <cstddef> // size_t #include <iterator> // back_inserter #include <memory> // shared_ptr, make_shared #include <string> // basic_string #include <vector> // vector #ifndef JSON_NO_IO #include <ios> // streamsize #include <ostream> // basic_ostream #endif // JSON_NO_IO #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /// abstract output adapter interface template<typename CharType> struct output_adapter_protocol { virtual void write_character(CharType c) = 0; virtual void write_characters(const CharType* s, std::size_t length) = 0; virtual ~output_adapter_protocol() = default; output_adapter_protocol() = default; output_adapter_protocol(const output_adapter_protocol&) = default; output_adapter_protocol(output_adapter_protocol&&) noexcept = default; output_adapter_protocol& operator=(const output_adapter_protocol&) = default; output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; }; /// a type to simplify interfaces template<typename CharType> using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>; /// output adapter for byte vectors template<typename CharType, typename AllocatorType = std::allocator<CharType>> class output_vector_adapter : public output_adapter_protocol<CharType> { public: explicit output_vector_adapter(std::vector<CharType, AllocatorType>& vec) noexcept : v(vec) {} void write_character(CharType c) override { v.push_back(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { v.insert(v.end(), s, s + length); } private: std::vector<CharType, AllocatorType>& v; }; #ifndef JSON_NO_IO /// output adapter for output streams template<typename CharType> class output_stream_adapter : public output_adapter_protocol<CharType> { public: explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept : stream(s) {} void write_character(CharType c) override { stream.put(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { stream.write(s, static_cast<std::streamsize>(length)); } private: std::basic_ostream<CharType>& stream; }; #endif // JSON_NO_IO /// output adapter for basic_string template<typename CharType, typename StringType = std::basic_string<CharType>> class output_string_adapter : public output_adapter_protocol<CharType> { public: explicit output_string_adapter(StringType& s) noexcept : str(s) {} void write_character(CharType c) override { str.push_back(c); } JSON_HEDLEY_NON_NULL(2) void write_characters(const CharType* s, std::size_t length) override { str.append(s, length); } private: StringType& str; }; template<typename CharType, typename StringType = std::basic_string<CharType>> class output_adapter { public: template<typename AllocatorType = std::allocator<CharType>> output_adapter(std::vector<CharType, AllocatorType>& vec) : oa(std::make_shared<output_vector_adapter<CharType, AllocatorType>>(vec)) {} #ifndef JSON_NO_IO output_adapter(std::basic_ostream<CharType>& s) : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {} #endif // JSON_NO_IO output_adapter(StringType& s) : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {} operator output_adapter_t<CharType>() { return oa; } private: output_adapter_t<CharType> oa = nullptr; }; } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/bridgelist.h: -------------------------------------------------------------------------------- ``` #ifndef _LIST_H #define _LIST_H typedef struct { int count; //Number of element in the list. size_t size; //Size of list in bytes (used for type checking). void* data; //Pointer to the list contents. Must be deleted by the caller using BridgeFree (or BridgeList::Free). } ListInfo; #define ListOf(Type) ListInfo* #ifdef __cplusplus #include <vector> /** \brief A list object. This object is NOT thread safe. \tparam Type BridgeList contents type. */ template<typename Type> class BridgeList { public: /** \brief BridgeList constructor. \param _freeData (Optional) the free function. */ explicit BridgeList() { memset(&_listInfo, 0, sizeof(_listInfo)); } /** \brief BridgeList destructor. */ ~BridgeList() { Cleanup(); } /** \brief Gets the list data. \return Returns ListInfo->data. Can be null if the list was never initialized. Will be destroyed once this object goes out of scope! */ Type* Data() const { return reinterpret_cast<Type*>(_listInfo.data); } /** \brief Gets the number of elements in the list. This will crash the program if the data is not consistent with the specified template argument. \return The number of elements in the list. */ int Count() const { if(_listInfo.size != _listInfo.count * sizeof(Type)) //make sure the user is using the correct type. __debugbreak(); return _listInfo.count; } /** \brief Cleans up the list, freeing the list data when it is not null. */ void Cleanup() { if(_listInfo.data) { BridgeFree(_listInfo.data); _listInfo.data = nullptr; } } /** \brief Reference operator (cleans up the previous list) \return Pointer to the ListInfo. */ ListInfo* operator&() { Cleanup(); return &_listInfo; } /** \brief Array indexer operator. This will crash if you try to access out-of-bounds. \param index Zero-based index of the item you want to get. \return Reference to a value at that index. */ Type & operator[](size_t index) const { if(index >= size_t(Count())) //make sure the out-of-bounds access is caught as soon as possible. __debugbreak(); return Data()[index]; } /** \brief Copies data to a ListInfo structure.. \param [out] listInfo If non-null, information describing the list. \param listData Data to copy in the ListInfo structure. \return true if it succeeds, false if it fails. */ static bool CopyData(ListInfo* listInfo, const std::vector<Type> & listData) { if(!listInfo) return false; listInfo->count = int(listData.size()); listInfo->size = listInfo->count * sizeof(Type); if(listInfo->count) { listInfo->data = BridgeAlloc(listInfo->size); Type* curItem = reinterpret_cast<Type*>(listInfo->data); for(const auto & item : listData) { *curItem = item; ++curItem; } } else listInfo->data = nullptr; return true; } static bool Free(const ListInfo* listInfo) { if(!listInfo || listInfo->size != listInfo->count * sizeof(Type) || (listInfo->count && !listInfo->data)) return false; BridgeFree(listInfo->data); return true; } static bool ToVector(const ListInfo* listInfo, std::vector<Type> & listData, bool freedata = true) { if(!listInfo || listInfo->size != listInfo->count * sizeof(Type) || (listInfo->count && !listInfo->data)) return false; listData.resize(listInfo->count); for(int i = 0; i < listInfo->count; i++) listData[i] = ((Type*)listInfo->data)[i]; if(freedata && listInfo->data) BridgeFree(listInfo->data); return true; } private: ListInfo _listInfo; }; #endif //__cplusplus #endif //_LIST_H ``` -------------------------------------------------------------------------------- /deps/x64dbg_sdk/pluginsdk/bridgelist.h: -------------------------------------------------------------------------------- ``` #ifndef _LIST_H #define _LIST_H typedef struct { int count; //Number of element in the list. size_t size; //Size of list in bytes (used for type checking). void* data; //Pointer to the list contents. Must be deleted by the caller using BridgeFree (or BridgeList::Free). } ListInfo; #define ListOf(Type) ListInfo* #ifdef __cplusplus #include <vector> /** \brief A list object. This object is NOT thread safe. \tparam Type BridgeList contents type. */ template<typename Type> class BridgeList { public: /** \brief BridgeList constructor. \param _freeData (Optional) the free function. */ explicit BridgeList() { memset(&_listInfo, 0, sizeof(_listInfo)); } /** \brief BridgeList destructor. */ ~BridgeList() { Cleanup(); } /** \brief Gets the list data. \return Returns ListInfo->data. Can be null if the list was never initialized. Will be destroyed once this object goes out of scope! */ Type* Data() const { return reinterpret_cast<Type*>(_listInfo.data); } /** \brief Gets the number of elements in the list. This will crash the program if the data is not consistent with the specified template argument. \return The number of elements in the list. */ int Count() const { if(_listInfo.size != _listInfo.count * sizeof(Type)) //make sure the user is using the correct type. __debugbreak(); return _listInfo.count; } /** \brief Cleans up the list, freeing the list data when it is not null. */ void Cleanup() { if(_listInfo.data) { BridgeFree(_listInfo.data); _listInfo.data = nullptr; } } /** \brief Reference operator (cleans up the previous list) \return Pointer to the ListInfo. */ ListInfo* operator&() { Cleanup(); return &_listInfo; } /** \brief Array indexer operator. This will crash if you try to access out-of-bounds. \param index Zero-based index of the item you want to get. \return Reference to a value at that index. */ Type & operator[](size_t index) const { if(index >= size_t(Count())) //make sure the out-of-bounds access is caught as soon as possible. __debugbreak(); return Data()[index]; } /** \brief Copies data to a ListInfo structure.. \param [out] listInfo If non-null, information describing the list. \param listData Data to copy in the ListInfo structure. \return true if it succeeds, false if it fails. */ static bool CopyData(ListInfo* listInfo, const std::vector<Type> & listData) { if(!listInfo) return false; listInfo->count = int(listData.size()); listInfo->size = listInfo->count * sizeof(Type); if(listInfo->count) { listInfo->data = BridgeAlloc(listInfo->size); Type* curItem = reinterpret_cast<Type*>(listInfo->data); for(const auto & item : listData) { *curItem = item; ++curItem; } } else listInfo->data = nullptr; return true; } static bool Free(const ListInfo* listInfo) { if(!listInfo || listInfo->size != listInfo->count * sizeof(Type) || (listInfo->count && !listInfo->data)) return false; BridgeFree(listInfo->data); return true; } static bool ToVector(const ListInfo* listInfo, std::vector<Type> & listData, bool freedata = true) { if(!listInfo || listInfo->size != listInfo->count * sizeof(Type) || (listInfo->count && !listInfo->data)) return false; listData.resize(listInfo->count); for(int i = 0; i < listInfo->count; i++) listData[i] = ((Type*)listInfo->data)[i]; if(freedata && listInfo->data) BridgeFree(listInfo->data); return true; } private: ListInfo _listInfo; }; #endif //__cplusplus #endif //_LIST_H ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/value_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <array> // array #include <cstddef> // size_t #include <cstdint> // uint8_t #include <string> // string #include <nlohmann/detail/macro_scope.hpp> #if JSON_HAS_THREE_WAY_COMPARISON #include <compare> // partial_ordering #endif NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /////////////////////////// // JSON type enumeration // /////////////////////////// /*! @brief the JSON type enumeration This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and @ref basic_json::is_structured() rely on it. @note There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned integers, @ref basic_json::number_integer_t is used for signed integers, and @ref basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type. @sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with the default value for a given type @since version 1.0.0 */ enum class value_t : std::uint8_t { null, ///< null value object, ///< object (unordered set of name/value pairs) array, ///< array (ordered collection of values) string, ///< string value boolean, ///< boolean value number_integer, ///< number value (signed integer) number_unsigned, ///< number value (unsigned integer) number_float, ///< number value (floating-point) binary, ///< binary array (ordered collection of bytes) discarded ///< discarded by the parser callback function }; /*! @brief comparison operator for JSON types Returns an ordering that is similar to Python: - order: null < boolean < number < object < array < string < binary - furthermore, each type is not smaller than itself - discarded values are not comparable - binary is represented as a b"" string in python and directly comparable to a string; however, making a binary array directly comparable with a string would be surprising behavior in a JSON file. @since version 1.0.0 */ #if JSON_HAS_THREE_WAY_COMPARISON inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* #else inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif { static constexpr std::array<std::uint8_t, 9> order = {{ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, 6 /* binary */ } }; const auto l_index = static_cast<std::size_t>(lhs); const auto r_index = static_cast<std::size_t>(rhs); #if JSON_HAS_THREE_WAY_COMPARISON if (l_index < order.size() && r_index < order.size()) { return order[l_index] <=> order[r_index]; // *NOPAD* } return std::partial_ordering::unordered; #else return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; #endif } // GCC selects the built-in operator< over an operator rewritten from // a user-defined spaceship operator // Clang, MSVC, and ICC select the rewritten candidate // (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) #if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) inline bool operator<(const value_t lhs, const value_t rhs) noexcept { return std::is_lt(lhs <=> rhs); // *NOPAD* } #endif } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/value_t.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #include <array> // array #include <cstddef> // size_t #include <cstdint> // uint8_t #include <string> // string #include <nlohmann/detail/macro_scope.hpp> #if JSON_HAS_THREE_WAY_COMPARISON #include <compare> // partial_ordering #endif NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { /////////////////////////// // JSON type enumeration // /////////////////////////// /*! @brief the JSON type enumeration This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions @ref basic_json::is_null(), @ref basic_json::is_object(), @ref basic_json::is_array(), @ref basic_json::is_string(), @ref basic_json::is_boolean(), @ref basic_json::is_number() (with @ref basic_json::is_number_integer(), @ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and @ref basic_json::is_structured() rely on it. @note There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: @ref basic_json::number_unsigned_t is used for unsigned integers, @ref basic_json::number_integer_t is used for signed integers, and @ref basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type. @sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON value with the default value for a given type @since version 1.0.0 */ enum class value_t : std::uint8_t { null, ///< null value object, ///< object (unordered set of name/value pairs) array, ///< array (ordered collection of values) string, ///< string value boolean, ///< boolean value number_integer, ///< number value (signed integer) number_unsigned, ///< number value (unsigned integer) number_float, ///< number value (floating-point) binary, ///< binary array (ordered collection of bytes) discarded ///< discarded by the parser callback function }; /*! @brief comparison operator for JSON types Returns an ordering that is similar to Python: - order: null < boolean < number < object < array < string < binary - furthermore, each type is not smaller than itself - discarded values are not comparable - binary is represented as a b"" string in python and directly comparable to a string; however, making a binary array directly comparable with a string would be surprising behavior in a JSON file. @since version 1.0.0 */ #if JSON_HAS_THREE_WAY_COMPARISON inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* #else inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif { static constexpr std::array<std::uint8_t, 9> order = {{ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, 6 /* binary */ } }; const auto l_index = static_cast<std::size_t>(lhs); const auto r_index = static_cast<std::size_t>(rhs); #if JSON_HAS_THREE_WAY_COMPARISON if (l_index < order.size() && r_index < order.size()) { return order[l_index] <=> order[r_index]; // *NOPAD* } return std::partial_ordering::unordered; #else return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; #endif } // GCC selects the built-in operator< over an operator rewritten from // a user-defined spaceship operator // Clang, MSVC, and ICC select the rewritten candidate // (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) #if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) inline bool operator<(const value_t lhs, const value_t rhs) noexcept { return std::is_lt(lhs <=> rhs); // *NOPAD* } #endif } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/detail/meta/cpp_future.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-FileCopyrightText: 2018 The Abseil Authors // SPDX-License-Identifier: MIT #pragma once #include <array> // array #include <cstddef> // size_t #include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include <utility> // index_sequence, make_index_sequence, index_sequence_for #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; #ifdef JSON_HAS_CPP_14 // the following utilities are natively available in C++14 using std::enable_if_t; using std::index_sequence; using std::make_index_sequence; using std::index_sequence_for; #else // alias templates to reduce boilerplate template<bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; // The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h // which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. //// START OF CODE FROM GOOGLE ABSEIL // integer_sequence // // Class template representing a compile-time integer sequence. An instantiation // of `integer_sequence<T, Ints...>` has a sequence of integers encoded in its // type through its template arguments (which is a common need when // working with C++11 variadic templates). `absl::integer_sequence` is designed // to be a drop-in replacement for C++14's `std::integer_sequence`. // // Example: // // template< class T, T... Ints > // void user_function(integer_sequence<T, Ints...>); // // int main() // { // // user_function's `T` will be deduced to `int` and `Ints...` // // will be deduced to `0, 1, 2, 3, 4`. // user_function(make_integer_sequence<int, 5>()); // } template <typename T, T... Ints> struct integer_sequence { using value_type = T; static constexpr std::size_t size() noexcept { return sizeof...(Ints); } }; // index_sequence // // A helper template for an `integer_sequence` of `size_t`, // `absl::index_sequence` is designed to be a drop-in replacement for C++14's // `std::index_sequence`. template <size_t... Ints> using index_sequence = integer_sequence<size_t, Ints...>; namespace utility_internal { template <typename Seq, size_t SeqSize, size_t Rem> struct Extend; // Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. template <typename T, T... Ints, size_t SeqSize> struct Extend<integer_sequence<T, Ints...>, SeqSize, 0> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; }; template <typename T, T... Ints, size_t SeqSize> struct Extend<integer_sequence<T, Ints...>, SeqSize, 1> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; }; // Recursion helper for 'make_integer_sequence<T, N>'. // 'Gen<T, N>::type' is an alias for 'integer_sequence<T, 0, 1, ... N-1>'. template <typename T, size_t N> struct Gen { using type = typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; }; template <typename T> struct Gen<T, 0> { using type = integer_sequence<T>; }; } // namespace utility_internal // Compile-time sequences of integers // make_integer_sequence // // This template alias is equivalent to // `integer_sequence<int, 0, 1, ..., N-1>`, and is designed to be a drop-in // replacement for C++14's `std::make_integer_sequence`. template <typename T, T N> using make_integer_sequence = typename utility_internal::Gen<T, N>::type; // make_index_sequence // // This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, // and is designed to be a drop-in replacement for C++14's // `std::make_index_sequence`. template <size_t N> using make_index_sequence = make_integer_sequence<size_t, N>; // index_sequence_for // // Converts a typename pack into an index sequence of the same length, and // is designed to be a drop-in replacement for C++14's // `std::index_sequence_for()` template <typename... Ts> using index_sequence_for = make_index_sequence<sizeof...(Ts)>; //// END OF CODE FROM GOOGLE ABSEIL #endif // dispatch utility (taken from ranges-v3) template<unsigned N> struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; // taken from ranges-v3 template<typename T> struct static_const { static JSON_INLINE_VARIABLE constexpr T value{}; }; #ifndef JSON_HAS_CPP_17 template<typename T> constexpr T static_const<T>::value; #endif template<typename T, typename... Args> inline constexpr std::array<T, sizeof...(Args)> make_array(Args&& ... args) { return std::array<T, sizeof...(Args)> {{static_cast<T>(std::forward<Args>(args))...}}; } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /include/nlohmann/detail/meta/cpp_future.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-FileCopyrightText: 2018 The Abseil Authors // SPDX-License-Identifier: MIT #pragma once #include <array> // array #include <cstddef> // size_t #include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include <utility> // index_sequence, make_index_sequence, index_sequence_for #include <nlohmann/detail/macro_scope.hpp> NLOHMANN_JSON_NAMESPACE_BEGIN namespace detail { template<typename T> using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; #ifdef JSON_HAS_CPP_14 // the following utilities are natively available in C++14 using std::enable_if_t; using std::index_sequence; using std::make_index_sequence; using std::index_sequence_for; #else // alias templates to reduce boilerplate template<bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type; // The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h // which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. //// START OF CODE FROM GOOGLE ABSEIL // integer_sequence // // Class template representing a compile-time integer sequence. An instantiation // of `integer_sequence<T, Ints...>` has a sequence of integers encoded in its // type through its template arguments (which is a common need when // working with C++11 variadic templates). `absl::integer_sequence` is designed // to be a drop-in replacement for C++14's `std::integer_sequence`. // // Example: // // template< class T, T... Ints > // void user_function(integer_sequence<T, Ints...>); // // int main() // { // // user_function's `T` will be deduced to `int` and `Ints...` // // will be deduced to `0, 1, 2, 3, 4`. // user_function(make_integer_sequence<int, 5>()); // } template <typename T, T... Ints> struct integer_sequence { using value_type = T; static constexpr std::size_t size() noexcept { return sizeof...(Ints); } }; // index_sequence // // A helper template for an `integer_sequence` of `size_t`, // `absl::index_sequence` is designed to be a drop-in replacement for C++14's // `std::index_sequence`. template <size_t... Ints> using index_sequence = integer_sequence<size_t, Ints...>; namespace utility_internal { template <typename Seq, size_t SeqSize, size_t Rem> struct Extend; // Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. template <typename T, T... Ints, size_t SeqSize> struct Extend<integer_sequence<T, Ints...>, SeqSize, 0> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; }; template <typename T, T... Ints, size_t SeqSize> struct Extend<integer_sequence<T, Ints...>, SeqSize, 1> { using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; }; // Recursion helper for 'make_integer_sequence<T, N>'. // 'Gen<T, N>::type' is an alias for 'integer_sequence<T, 0, 1, ... N-1>'. template <typename T, size_t N> struct Gen { using type = typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; }; template <typename T> struct Gen<T, 0> { using type = integer_sequence<T>; }; } // namespace utility_internal // Compile-time sequences of integers // make_integer_sequence // // This template alias is equivalent to // `integer_sequence<int, 0, 1, ..., N-1>`, and is designed to be a drop-in // replacement for C++14's `std::make_integer_sequence`. template <typename T, T N> using make_integer_sequence = typename utility_internal::Gen<T, N>::type; // make_index_sequence // // This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, // and is designed to be a drop-in replacement for C++14's // `std::make_index_sequence`. template <size_t N> using make_index_sequence = make_integer_sequence<size_t, N>; // index_sequence_for // // Converts a typename pack into an index sequence of the same length, and // is designed to be a drop-in replacement for C++14's // `std::index_sequence_for()` template <typename... Ts> using index_sequence_for = make_index_sequence<sizeof...(Ts)>; //// END OF CODE FROM GOOGLE ABSEIL #endif // dispatch utility (taken from ranges-v3) template<unsigned N> struct priority_tag : priority_tag < N - 1 > {}; template<> struct priority_tag<0> {}; // taken from ranges-v3 template<typename T> struct static_const { static JSON_INLINE_VARIABLE constexpr T value{}; }; #ifndef JSON_HAS_CPP_17 template<typename T> constexpr T static_const<T>::value; #endif template<typename T, typename... Args> inline constexpr std::array<T, sizeof...(Args)> make_array(Args&& ... args) { return std::array<T, sizeof...(Args)> {{static_cast<T>(std::forward<Args>(args))...}}; } } // namespace detail NLOHMANN_JSON_NAMESPACE_END ``` -------------------------------------------------------------------------------- /deps/pluginsdk/nlohmann/thirdparty/hedley/hedley_undef.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #undef JSON_HEDLEY_ALWAYS_INLINE #undef JSON_HEDLEY_ARM_VERSION #undef JSON_HEDLEY_ARM_VERSION_CHECK #undef JSON_HEDLEY_ARRAY_PARAM #undef JSON_HEDLEY_ASSUME #undef JSON_HEDLEY_BEGIN_C_DECLS #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_BUILTIN #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_EXTENSION #undef JSON_HEDLEY_CLANG_HAS_FEATURE #undef JSON_HEDLEY_CLANG_HAS_WARNING #undef JSON_HEDLEY_COMPCERT_VERSION #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK #undef JSON_HEDLEY_CONCAT #undef JSON_HEDLEY_CONCAT3 #undef JSON_HEDLEY_CONCAT3_EX #undef JSON_HEDLEY_CONCAT_EX #undef JSON_HEDLEY_CONST #undef JSON_HEDLEY_CONSTEXPR #undef JSON_HEDLEY_CONST_CAST #undef JSON_HEDLEY_CPP_CAST #undef JSON_HEDLEY_CRAY_VERSION #undef JSON_HEDLEY_CRAY_VERSION_CHECK #undef JSON_HEDLEY_C_DECL #undef JSON_HEDLEY_DEPRECATED #undef JSON_HEDLEY_DEPRECATED_FOR #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION #undef JSON_HEDLEY_DIAGNOSTIC_POP #undef JSON_HEDLEY_DIAGNOSTIC_PUSH #undef JSON_HEDLEY_DMC_VERSION #undef JSON_HEDLEY_DMC_VERSION_CHECK #undef JSON_HEDLEY_EMPTY_BASES #undef JSON_HEDLEY_EMSCRIPTEN_VERSION #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK #undef JSON_HEDLEY_END_C_DECLS #undef JSON_HEDLEY_FLAGS #undef JSON_HEDLEY_FLAGS_CAST #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_BUILTIN #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_EXTENSION #undef JSON_HEDLEY_GCC_HAS_FEATURE #undef JSON_HEDLEY_GCC_HAS_WARNING #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK #undef JSON_HEDLEY_GCC_VERSION #undef JSON_HEDLEY_GCC_VERSION_CHECK #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_BUILTIN #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_EXTENSION #undef JSON_HEDLEY_GNUC_HAS_FEATURE #undef JSON_HEDLEY_GNUC_HAS_WARNING #undef JSON_HEDLEY_GNUC_VERSION #undef JSON_HEDLEY_GNUC_VERSION_CHECK #undef JSON_HEDLEY_HAS_ATTRIBUTE #undef JSON_HEDLEY_HAS_BUILTIN #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_HAS_EXTENSION #undef JSON_HEDLEY_HAS_FEATURE #undef JSON_HEDLEY_HAS_WARNING #undef JSON_HEDLEY_IAR_VERSION #undef JSON_HEDLEY_IAR_VERSION_CHECK #undef JSON_HEDLEY_IBM_VERSION #undef JSON_HEDLEY_IBM_VERSION_CHECK #undef JSON_HEDLEY_IMPORT #undef JSON_HEDLEY_INLINE #undef JSON_HEDLEY_INTEL_CL_VERSION #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK #undef JSON_HEDLEY_INTEL_VERSION #undef JSON_HEDLEY_INTEL_VERSION_CHECK #undef JSON_HEDLEY_IS_CONSTANT #undef JSON_HEDLEY_IS_CONSTEXPR_ #undef JSON_HEDLEY_LIKELY #undef JSON_HEDLEY_MALLOC #undef JSON_HEDLEY_MCST_LCC_VERSION #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK #undef JSON_HEDLEY_MESSAGE #undef JSON_HEDLEY_MSVC_VERSION #undef JSON_HEDLEY_MSVC_VERSION_CHECK #undef JSON_HEDLEY_NEVER_INLINE #undef JSON_HEDLEY_NON_NULL #undef JSON_HEDLEY_NO_ESCAPE #undef JSON_HEDLEY_NO_RETURN #undef JSON_HEDLEY_NO_THROW #undef JSON_HEDLEY_NULL #undef JSON_HEDLEY_PELLES_VERSION #undef JSON_HEDLEY_PELLES_VERSION_CHECK #undef JSON_HEDLEY_PGI_VERSION #undef JSON_HEDLEY_PGI_VERSION_CHECK #undef JSON_HEDLEY_PREDICT #undef JSON_HEDLEY_PRINTF_FORMAT #undef JSON_HEDLEY_PRIVATE #undef JSON_HEDLEY_PUBLIC #undef JSON_HEDLEY_PURE #undef JSON_HEDLEY_REINTERPRET_CAST #undef JSON_HEDLEY_REQUIRE #undef JSON_HEDLEY_REQUIRE_CONSTEXPR #undef JSON_HEDLEY_REQUIRE_MSG #undef JSON_HEDLEY_RESTRICT #undef JSON_HEDLEY_RETURNS_NON_NULL #undef JSON_HEDLEY_SENTINEL #undef JSON_HEDLEY_STATIC_ASSERT #undef JSON_HEDLEY_STATIC_CAST #undef JSON_HEDLEY_STRINGIFY #undef JSON_HEDLEY_STRINGIFY_EX #undef JSON_HEDLEY_SUNPRO_VERSION #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK #undef JSON_HEDLEY_TINYC_VERSION #undef JSON_HEDLEY_TINYC_VERSION_CHECK #undef JSON_HEDLEY_TI_ARMCL_VERSION #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK #undef JSON_HEDLEY_TI_CL2000_VERSION #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK #undef JSON_HEDLEY_TI_CL430_VERSION #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK #undef JSON_HEDLEY_TI_CL6X_VERSION #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK #undef JSON_HEDLEY_TI_CL7X_VERSION #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK #undef JSON_HEDLEY_TI_CLPRU_VERSION #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK #undef JSON_HEDLEY_TI_VERSION #undef JSON_HEDLEY_TI_VERSION_CHECK #undef JSON_HEDLEY_UNAVAILABLE #undef JSON_HEDLEY_UNLIKELY #undef JSON_HEDLEY_UNPREDICTABLE #undef JSON_HEDLEY_UNREACHABLE #undef JSON_HEDLEY_UNREACHABLE_RETURN #undef JSON_HEDLEY_VERSION #undef JSON_HEDLEY_VERSION_DECODE_MAJOR #undef JSON_HEDLEY_VERSION_DECODE_MINOR #undef JSON_HEDLEY_VERSION_DECODE_REVISION #undef JSON_HEDLEY_VERSION_ENCODE #undef JSON_HEDLEY_WARNING #undef JSON_HEDLEY_WARN_UNUSED_RESULT #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG #undef JSON_HEDLEY_FALL_THROUGH ``` -------------------------------------------------------------------------------- /include/nlohmann/thirdparty/hedley/hedley_undef.hpp: -------------------------------------------------------------------------------- ``` // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.11.3 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT #pragma once #undef JSON_HEDLEY_ALWAYS_INLINE #undef JSON_HEDLEY_ARM_VERSION #undef JSON_HEDLEY_ARM_VERSION_CHECK #undef JSON_HEDLEY_ARRAY_PARAM #undef JSON_HEDLEY_ASSUME #undef JSON_HEDLEY_BEGIN_C_DECLS #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_BUILTIN #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_CLANG_HAS_EXTENSION #undef JSON_HEDLEY_CLANG_HAS_FEATURE #undef JSON_HEDLEY_CLANG_HAS_WARNING #undef JSON_HEDLEY_COMPCERT_VERSION #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK #undef JSON_HEDLEY_CONCAT #undef JSON_HEDLEY_CONCAT3 #undef JSON_HEDLEY_CONCAT3_EX #undef JSON_HEDLEY_CONCAT_EX #undef JSON_HEDLEY_CONST #undef JSON_HEDLEY_CONSTEXPR #undef JSON_HEDLEY_CONST_CAST #undef JSON_HEDLEY_CPP_CAST #undef JSON_HEDLEY_CRAY_VERSION #undef JSON_HEDLEY_CRAY_VERSION_CHECK #undef JSON_HEDLEY_C_DECL #undef JSON_HEDLEY_DEPRECATED #undef JSON_HEDLEY_DEPRECATED_FOR #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION #undef JSON_HEDLEY_DIAGNOSTIC_POP #undef JSON_HEDLEY_DIAGNOSTIC_PUSH #undef JSON_HEDLEY_DMC_VERSION #undef JSON_HEDLEY_DMC_VERSION_CHECK #undef JSON_HEDLEY_EMPTY_BASES #undef JSON_HEDLEY_EMSCRIPTEN_VERSION #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK #undef JSON_HEDLEY_END_C_DECLS #undef JSON_HEDLEY_FLAGS #undef JSON_HEDLEY_FLAGS_CAST #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_BUILTIN #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_GCC_HAS_EXTENSION #undef JSON_HEDLEY_GCC_HAS_FEATURE #undef JSON_HEDLEY_GCC_HAS_WARNING #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK #undef JSON_HEDLEY_GCC_VERSION #undef JSON_HEDLEY_GCC_VERSION_CHECK #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_BUILTIN #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_GNUC_HAS_EXTENSION #undef JSON_HEDLEY_GNUC_HAS_FEATURE #undef JSON_HEDLEY_GNUC_HAS_WARNING #undef JSON_HEDLEY_GNUC_VERSION #undef JSON_HEDLEY_GNUC_VERSION_CHECK #undef JSON_HEDLEY_HAS_ATTRIBUTE #undef JSON_HEDLEY_HAS_BUILTIN #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE #undef JSON_HEDLEY_HAS_EXTENSION #undef JSON_HEDLEY_HAS_FEATURE #undef JSON_HEDLEY_HAS_WARNING #undef JSON_HEDLEY_IAR_VERSION #undef JSON_HEDLEY_IAR_VERSION_CHECK #undef JSON_HEDLEY_IBM_VERSION #undef JSON_HEDLEY_IBM_VERSION_CHECK #undef JSON_HEDLEY_IMPORT #undef JSON_HEDLEY_INLINE #undef JSON_HEDLEY_INTEL_CL_VERSION #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK #undef JSON_HEDLEY_INTEL_VERSION #undef JSON_HEDLEY_INTEL_VERSION_CHECK #undef JSON_HEDLEY_IS_CONSTANT #undef JSON_HEDLEY_IS_CONSTEXPR_ #undef JSON_HEDLEY_LIKELY #undef JSON_HEDLEY_MALLOC #undef JSON_HEDLEY_MCST_LCC_VERSION #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK #undef JSON_HEDLEY_MESSAGE #undef JSON_HEDLEY_MSVC_VERSION #undef JSON_HEDLEY_MSVC_VERSION_CHECK #undef JSON_HEDLEY_NEVER_INLINE #undef JSON_HEDLEY_NON_NULL #undef JSON_HEDLEY_NO_ESCAPE #undef JSON_HEDLEY_NO_RETURN #undef JSON_HEDLEY_NO_THROW #undef JSON_HEDLEY_NULL #undef JSON_HEDLEY_PELLES_VERSION #undef JSON_HEDLEY_PELLES_VERSION_CHECK #undef JSON_HEDLEY_PGI_VERSION #undef JSON_HEDLEY_PGI_VERSION_CHECK #undef JSON_HEDLEY_PREDICT #undef JSON_HEDLEY_PRINTF_FORMAT #undef JSON_HEDLEY_PRIVATE #undef JSON_HEDLEY_PUBLIC #undef JSON_HEDLEY_PURE #undef JSON_HEDLEY_REINTERPRET_CAST #undef JSON_HEDLEY_REQUIRE #undef JSON_HEDLEY_REQUIRE_CONSTEXPR #undef JSON_HEDLEY_REQUIRE_MSG #undef JSON_HEDLEY_RESTRICT #undef JSON_HEDLEY_RETURNS_NON_NULL #undef JSON_HEDLEY_SENTINEL #undef JSON_HEDLEY_STATIC_ASSERT #undef JSON_HEDLEY_STATIC_CAST #undef JSON_HEDLEY_STRINGIFY #undef JSON_HEDLEY_STRINGIFY_EX #undef JSON_HEDLEY_SUNPRO_VERSION #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK #undef JSON_HEDLEY_TINYC_VERSION #undef JSON_HEDLEY_TINYC_VERSION_CHECK #undef JSON_HEDLEY_TI_ARMCL_VERSION #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK #undef JSON_HEDLEY_TI_CL2000_VERSION #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK #undef JSON_HEDLEY_TI_CL430_VERSION #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK #undef JSON_HEDLEY_TI_CL6X_VERSION #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK #undef JSON_HEDLEY_TI_CL7X_VERSION #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK #undef JSON_HEDLEY_TI_CLPRU_VERSION #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK #undef JSON_HEDLEY_TI_VERSION #undef JSON_HEDLEY_TI_VERSION_CHECK #undef JSON_HEDLEY_UNAVAILABLE #undef JSON_HEDLEY_UNLIKELY #undef JSON_HEDLEY_UNPREDICTABLE #undef JSON_HEDLEY_UNREACHABLE #undef JSON_HEDLEY_UNREACHABLE_RETURN #undef JSON_HEDLEY_VERSION #undef JSON_HEDLEY_VERSION_DECODE_MAJOR #undef JSON_HEDLEY_VERSION_DECODE_MINOR #undef JSON_HEDLEY_VERSION_DECODE_REVISION #undef JSON_HEDLEY_VERSION_ENCODE #undef JSON_HEDLEY_WARNING #undef JSON_HEDLEY_WARN_UNUSED_RESULT #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG #undef JSON_HEDLEY_FALL_THROUGH ```