├── .editorconfig ├── .gitattributes ├── .gitignore ├── .vsconfig ├── CPPDebuggerVisualizers.VS2012.sln ├── CPPDebuggerVisualizers.VS2013.sln ├── CPPDebuggerVisualizers.VS2015.sln ├── CPPDebuggerVisualizers.VS2017.sln ├── CPPDebuggerVisualizers.VS2019.sln ├── CPPDebuggerVisualizersNatvisAddIn ├── CPPDebuggerVisualizersNatvisAddIn.cpp ├── CPPDebuggerVisualizersNatvisAddIn.h ├── CPPDebuggerVisualizersNatvisAddIn.vcxproj ├── CPPDebuggerVisualizersNatvisAddIn.vcxproj.filters ├── dllmain.cpp ├── stdafx.cpp └── stdafx.h ├── Changelog.txt ├── LICENSE.txt ├── README.md ├── Tests ├── BoostTest │ ├── BoostTest.VS2013.vcxproj │ ├── BoostTest.VS2013.vcxproj.filters │ ├── BoostTest.VS2015.vcxproj │ ├── BoostTest.VS2015.vcxproj.filters │ ├── BoostTest.VS2017.vcxproj │ ├── BoostTest.VS2017.vcxproj.filters │ ├── BoostTest.VS2019.vcxproj │ ├── BoostTest.VS2019.vcxproj.filters │ ├── BoostTest.cpp │ ├── BoostTest.vcxproj │ ├── BoostTest.vcxproj.filters │ ├── test.xml │ └── test_image.png ├── DynBitsetTest │ ├── BoostTest.cpp │ ├── DynBitsetTest.vcxproj │ ├── DynBitsetTest.vcxproj.filters │ ├── DynBitsetTest.zip │ └── test.natvis └── libs.props ├── VS2012 ├── CPPDebuggerVisualizers.VS2012.csproj ├── EnableNatvisDebugging.reg ├── Visualizers │ ├── TinyXML.natvis │ ├── TinyXML2.natvis │ ├── boost.natstepfilter │ ├── boost.natvis │ ├── boost_Containers.natvis │ ├── boost_DateTime.natvis │ ├── boost_Geometry.natvis │ ├── boost_Gil.natvis │ ├── boost_IntrusiveContainers.natvis │ ├── boost_Multiprecision.natvis │ ├── boost_PointerContainerLibrary.natvis │ ├── boost_Rational.natvis │ ├── boost_Regex.natvis │ ├── boost_SmartPointers.natvis │ ├── boost_Unordered.natvis │ ├── boost_Variant.natvis │ ├── boost_uBLAS.natvis │ ├── directx.natvis │ └── wxWidgets.natvis └── source.extension.vsixmanifest ├── VS2013 ├── CPPDebuggerVisualizers.VS2013.csproj ├── EnableNatvisDebugging.reg ├── Visualizers │ ├── TinyXML.natvis │ ├── TinyXML2.natvis │ ├── boost.natstepfilter │ ├── boost.natvis │ ├── boost_Containers.natvis │ ├── boost_DateTime.natvis │ ├── boost_Geometry.natvis │ ├── boost_Gil.natvis │ ├── boost_IntrusiveContainers.natvis │ ├── boost_MultiArray.natvis │ ├── boost_PointerContainerLibrary.natvis │ ├── boost_SmartPointers.natvis │ ├── boost_Unordered.natvis │ ├── boost_Variant.natvis │ ├── boost_multiprecision.natvis │ ├── boost_rational.natvis │ ├── boost_regex.natvis │ ├── boost_uBLAS.natvis │ ├── directx.natvis │ ├── external.natjmc │ └── wxWidgets.natvis └── source.extension.vsixmanifest ├── VS2015 ├── CPPDebuggerVisualizers.VS2015.csproj ├── Visualizers │ ├── TinyXML.natvis │ ├── TinyXML2.natvis │ ├── boost.natstepfilter │ ├── boost.natvis │ ├── boost_Containers.natvis │ ├── boost_DateTime.natvis │ ├── boost_Geometry.natvis │ ├── boost_Gil.natvis │ ├── boost_IntrusiveContainers.natvis │ ├── boost_MultiArray.natvis │ ├── boost_MultiIndex.natvis │ ├── boost_Multiprecision.natvis │ ├── boost_PointerContainerLibrary.natvis │ ├── boost_PropertyTree.natvis │ ├── boost_Rational.natvis │ ├── boost_Regex.natvis │ ├── boost_SmartPointers.natvis │ ├── boost_Unordered.natvis │ ├── boost_Variant.natvis │ ├── boost_uBLAS.natvis │ ├── directx.natvis │ ├── external.natjmc │ ├── gsl.natvis │ └── wxWidgets.natvis ├── readme.txt └── source.extension.vsixmanifest ├── VS2017 ├── CPPDebuggerVisualizers.VS2017.csproj ├── Visualizers │ ├── TinyXML.natvis │ ├── TinyXML2.natvis │ ├── boost.natstepfilter │ ├── boost.natvis │ ├── boost_Containers.natvis │ ├── boost_DateTime.natvis │ ├── boost_Geometry.natvis │ ├── boost_Gil.natvis │ ├── boost_IntrusiveContainers.natvis │ ├── boost_MultiArray.natvis │ ├── boost_MultiIndex.natvis │ ├── boost_Multiprecision.natvis │ ├── boost_PointerContainerLibrary.natvis │ ├── boost_PropertyTree.natvis │ ├── boost_Rational.natvis │ ├── boost_Regex.natvis │ ├── boost_SmartPointers.natvis │ ├── boost_Unordered.natvis │ ├── boost_Variant.natvis │ ├── boost_uBLAS.natvis │ ├── directx.natvis │ ├── external.natjmc │ ├── gsl.natvis │ ├── icu.natvis │ └── wxWidgets.natvis ├── packages.config ├── readme.txt └── source.extension.vsixmanifest ├── VS2019 ├── CPPDebuggerVisualizers.VS2019.csproj ├── Visualizers │ ├── TinyXML.natvis │ ├── TinyXML2.natvis │ ├── boost.natstepfilter │ ├── boost.natvis │ ├── boost_Containers.natvis │ ├── boost_DateTime.natvis │ ├── boost_Geometry.natvis │ ├── boost_Gil.natvis │ ├── boost_IntrusiveContainers.natvis │ ├── boost_MultiArray.natvis │ ├── boost_MultiIndex.natvis │ ├── boost_Multiprecision.natvis │ ├── boost_PointerContainerLibrary.natvis │ ├── boost_PropertyTree.natvis │ ├── boost_Rational.natvis │ ├── boost_Regex.natvis │ ├── boost_SmartPointers.natvis │ ├── boost_Unordered.natvis │ ├── boost_Variant.natvis │ ├── boost_uBLAS.natvis │ ├── directx.natvis │ ├── external.natjmc │ ├── gsl.natvis │ ├── icu.natvis │ └── wxWidgets.natvis ├── packages.config ├── readme.txt └── source.extension.vsixmanifest ├── build.bat ├── cppVisualizerIcon.png ├── cppVisualizerScreenshot.png └── format_type.py /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Windows-style newlines 7 | [*] 8 | end_of_line = crlf 9 | indent_style = space 10 | indent_size = 4 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.natvis eol=lf 2 | *.natstepfilter eol=lf 3 | *.xml eol=lf 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Debug/ 2 | Release/ 3 | obj/ 4 | ipch/* 5 | Backup/ 6 | _ReSharper.*/ 7 | *.sdf 8 | *.suo 9 | *.opensdf 10 | *.user 11 | .vs/ 12 | packages/ 13 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Component.CoreEditor", 5 | "Microsoft.VisualStudio.Workload.CoreEditor", 6 | "Microsoft.VisualStudio.Component.NuGet", 7 | "Microsoft.VisualStudio.Component.Roslyn.Compiler", 8 | "Microsoft.VisualStudio.Component.Roslyn.LanguageServices", 9 | "Microsoft.Component.MSBuild", 10 | "Microsoft.VisualStudio.Component.TextTemplating", 11 | "Microsoft.VisualStudio.Component.DiagnosticTools", 12 | "Microsoft.VisualStudio.Component.VC.CoreIde", 13 | "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", 14 | "Microsoft.VisualStudio.Component.Graphics.Tools", 15 | "Microsoft.VisualStudio.Component.VC.DiagnosticTools", 16 | "Microsoft.VisualStudio.Component.Windows10SDK.18362", 17 | "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", 18 | "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", 19 | "Microsoft.VisualStudio.Component.VC.CMake.Project", 20 | "Microsoft.VisualStudio.Workload.NativeDesktop", 21 | "Microsoft.VisualStudio.Component.VSSDK", 22 | "Microsoft.VisualStudio.ComponentGroup.VisualStudioExtension.Prerequisites", 23 | "Microsoft.VisualStudio.Workload.VisualStudioExtension" 24 | ] 25 | } -------------------------------------------------------------------------------- /CPPDebuggerVisualizers.VS2012.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BoostTest", "Tests\BoostTest\BoostTest.vcxproj", "{48A389F6-E2E8-4318-8DB5-65DB8206BA6B}" 5 | EndProject 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{074968F7-C3B2-4F5C-8F6F-D8F46582267C}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPPDebuggerVisualizers", "VS2012\CPPDebuggerVisualizers.csproj", "{D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Debug|Mixed Platforms = Debug|Mixed Platforms 14 | Debug|Win32 = Debug|Win32 15 | Debug|x64 = Debug|x64 16 | Release|Any CPU = Release|Any CPU 17 | Release|Mixed Platforms = Release|Mixed Platforms 18 | Release|Win32 = Release|Win32 19 | Release|x64 = Release|x64 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|Any CPU.ActiveCfg = Debug|Win32 23 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 24 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|Mixed Platforms.Build.0 = Debug|Win32 25 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|Win32.ActiveCfg = Debug|Win32 26 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|Win32.Build.0 = Debug|Win32 27 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|x64.ActiveCfg = Debug|x64 28 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Debug|x64.Build.0 = Debug|x64 29 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|Any CPU.ActiveCfg = Release|Win32 30 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|Mixed Platforms.ActiveCfg = Release|Win32 31 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|Mixed Platforms.Build.0 = Release|Win32 32 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|Win32.ActiveCfg = Release|Win32 33 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|Win32.Build.0 = Release|Win32 34 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|x64.ActiveCfg = Release|x64 35 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B}.Release|x64.Build.0 = Release|x64 36 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 39 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 40 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|Win32.ActiveCfg = Debug|Any CPU 41 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Debug|x64.ActiveCfg = Debug|Any CPU 42 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 45 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|Mixed Platforms.Build.0 = Release|Any CPU 46 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|Win32.ActiveCfg = Release|Any CPU 47 | {D97ABE0D-8F29-4728-8A3F-FF63F42E6A87}.Release|x64.ActiveCfg = Release|Any CPU 48 | EndGlobalSection 49 | GlobalSection(SolutionProperties) = preSolution 50 | HideSolutionNode = FALSE 51 | EndGlobalSection 52 | GlobalSection(NestedProjects) = preSolution 53 | {48A389F6-E2E8-4318-8DB5-65DB8206BA6B} = {074968F7-C3B2-4F5C-8F6F-D8F46582267C} 54 | EndGlobalSection 55 | EndGlobal 56 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/CPPDebuggerVisualizersNatvisAddIn.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #define ADDIN_API __declspec(dllexport) 9 | 10 | typedef struct tagDEBUGHELPER 11 | { 12 | DWORD dwVersion; 13 | HRESULT(WINAPI *ReadDebuggeeMemory)(struct tagDEBUGHELPER *pThis, DWORD dwAddr, DWORD nWant, VOID* pWhere, DWORD *nGot); 14 | // from here only when dwVersion >= 0x20000 15 | DWORDLONG(WINAPI *GetRealAddress)(struct tagDEBUGHELPER *pThis); 16 | HRESULT(WINAPI *ReadDebuggeeMemoryEx)(struct tagDEBUGHELPER *pThis, DWORDLONG qwAddr, DWORD nWant, VOID* pWhere, DWORD *nGot); 17 | int (WINAPI *GetProcessorType)(struct tagDEBUGHELPER *pThis); 18 | } DEBUGHELPER; 19 | 20 | typedef HRESULT(WINAPI *CUSTOMVIEWER)(DWORD dwAddress, DEBUGHELPER *pHelper, int nBase, BOOL bUniStrings, char *pResult, size_t max, DWORD reserved); 21 | 22 | extern "C" ADDIN_API HRESULT BoostUuidFormatter(DWORD dwAddress, DEBUGHELPER *pHelper, int nBase, BOOL bUniStrings, char *pResult, size_t max, DWORD reserved); 23 | 24 | ADDIN_API HRESULT BoostUuidFormatter(DWORD dwAddress, DEBUGHELPER *pHelper, int nBase, BOOL bUniStrings, char *pResult, size_t max, DWORD reserved) 25 | { 26 | char uuid_data[16]; 27 | DWORD bytesRead; 28 | HRESULT hr = pHelper->ReadDebuggeeMemoryEx(pHelper, pHelper->GetRealAddress(pHelper), sizeof(uuid_data), &uuid_data, &bytesRead); 29 | if (FAILED(hr)) 30 | return hr; 31 | 32 | boost::uuids::uuid uuid; 33 | memcpy(&uuid, uuid_data, std::min(bytesRead, 16)); 34 | std::string str = "{" + boost::uuids::to_string(uuid) + "}"; 35 | sprintf_s(pResult, max, str.c_str()); 36 | return S_OK; 37 | } 38 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/CPPDebuggerVisualizersNatvisAddIn.h: -------------------------------------------------------------------------------- 1 | // The following ifdef block is the standard way of creating macros which make exporting 2 | // from a DLL simpler. All files within this DLL are compiled with the CPPDEBUGGERVISUALIZERSNATVISADDIN_EXPORTS 3 | // symbol defined on the command line. This symbol should not be defined on any project 4 | // that uses this DLL. This way any other project whose source files include this file see 5 | // ADDIN_API functions as being imported from a DLL, whereas this DLL sees symbols 6 | // defined with this macro as being exported. 7 | #ifdef CPPDEBUGGERVISUALIZERSNATVISADDIN_EXPORTS 8 | #define ADDIN_API __declspec(dllexport) 9 | #else 10 | #define ADDIN_API __declspec(dllimport) 11 | #endif 12 | 13 | // This class is exported from the CPPDebuggerVisualizersNatvisAddIn.dll 14 | class ADDIN_API CCPPDebuggerVisualizersNatvisAddIn { 15 | public: 16 | CCPPDebuggerVisualizersNatvisAddIn(void); 17 | // TODO: add your methods here. 18 | }; 19 | 20 | extern ADDIN_API int nCPPDebuggerVisualizersNatvisAddIn; 21 | 22 | ADDIN_API int fnCPPDebuggerVisualizersNatvisAddIn(void); 23 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/CPPDebuggerVisualizersNatvisAddIn.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {A1C04A4B-8BDE-48B6-9106-CADC8D39C99C} 15 | Win32Proj 16 | CPPDebuggerVisualizersNatvisAddIn 17 | 10.0 18 | 19 | 20 | 21 | DynamicLibrary 22 | true 23 | $(DefaultPlatformToolset) 24 | Unicode 25 | 26 | 27 | DynamicLibrary 28 | false 29 | $(DefaultPlatformToolset) 30 | true 31 | Unicode 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | true 45 | $(Configuration)\$(Platform)\ 46 | $(Configuration)\$(Platform)\ 47 | 48 | 49 | false 50 | $(Configuration)\$(Platform)\ 51 | $(Configuration)\$(Platform)\ 52 | 53 | 54 | true 55 | true 56 | true 57 | x86-windows 58 | 59 | 60 | true 61 | true 62 | true 63 | x86-windows 64 | 65 | 66 | 67 | Use 68 | Level3 69 | Disabled 70 | WIN32;NOMINMAX;_DEBUG;_WINDOWS;_USRDLL;CPPDEBUGGERVISUALIZERSNATVISADDIN_EXPORTS;%(PreprocessorDefinitions) 71 | MultiThreadedDebug 72 | c:\Work\boost\;%(AdditionalIncludeDirectories) 73 | 74 | 75 | Windows 76 | true 77 | c:\Work\boost\stage\lib;%(AdditionalLibraryDirectories) 78 | 79 | 80 | 81 | 82 | Level3 83 | Use 84 | MaxSpeed 85 | true 86 | true 87 | WIN32;NOMINMAX;NDEBUG;_WINDOWS;_USRDLL;CPPDEBUGGERVISUALIZERSNATVISADDIN_EXPORTS;%(PreprocessorDefinitions) 88 | MultiThreaded 89 | c:\Work\boost\;%(AdditionalIncludeDirectories) 90 | 91 | 92 | Windows 93 | true 94 | true 95 | true 96 | c:\Work\boost\stage\lib;%(AdditionalLibraryDirectories) 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | false 107 | 108 | 109 | false 110 | 111 | 112 | 113 | 114 | Create 115 | Create 116 | 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/CPPDebuggerVisualizersNatvisAddIn.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | 26 | 27 | Source Files 28 | 29 | 30 | Source Files 31 | 32 | 33 | Source Files 34 | 35 | 36 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : Defines the entry point for the DLL application. 2 | #include "stdafx.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // CPPDebuggerVisualizersNatvisAddIn.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /CPPDebuggerVisualizersNatvisAddIn/stdafx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 9 | // Windows Header Files: 10 | #include 11 | -------------------------------------------------------------------------------- /Changelog.txt: -------------------------------------------------------------------------------- 1 | Legend: 2 | + New 3 | * Changed 4 | ! Fixed 5 | 6 | 1.0.22 - 20.06.2020 7 | ========================= 8 | * Updated version for Visual Studio 2017 9 | 10 | 1.0.21 - 26.04.2020 11 | ========================= 12 | + Support Visual Studio 2019 (boost::uuid doesn't work right now) 13 | + Support boost 1.72 14 | * Use 64-bit literals in boost::date_time to prevent arithmetic overflow. Thanks to Andy Webber 15 | * boost::optional. Print 'nullopt' for empty optional. Thanks to Artem Tokmakov 16 | 17 | Derives from tag: v1.0.20 + 1 commits 18 | 1.0.20 - 20.02.2018 19 | ========================= 20 | + Support boost 1.66 21 | + Support boost 1.65 flat_map & flat_set (#15) 22 | + Boost.MultiIndex visualizer added. Thanks to Anton Tokar 23 | + Boost.PropertyTree visualizer added 24 | ! Fixed boost::unordered_map and unordered_set for Boost 1.66 25 | ! Fixed Boost.Gil with ImageWatch 26 | ! Fixed boost::interprocess::offset_ptr for Boost 1.66 27 | * Improved visualisers for several other types 28 | 29 | 1.0.19 - 05.04.2017 30 | ========================= 31 | + Support Visual Studio 2017 32 | + Support boost 1.63 33 | ! Fixed smart pointers visualisers and boost::optional for Boost 1.63 34 | * Rewrited visualisers for boost::date_time for VS2017 35 | * Improved visualisers for several other types 36 | 37 | 1.0.18 - 12.07.2015 38 | ========================= 39 | + Support Visual Studio 2015 40 | + Support boost 1.58 41 | + Visualizers for boost::optional added. Thanks to mattlindner 42 | ! "no step into" fixed. Thanks to Brent Smith 43 | 44 | 1.0.17 - 12.11.2014 45 | ========================= 46 | + Image visualizers for boost::gil::image and boost::gil::variant added 47 | + Visualizers for boost::value_initialized, boost::initialized added. Thanks to tobias_loew 48 | 49 | 1.0.16 - 14.09.2014 50 | ========================= 51 | + Visualizers for boost::multiprecision, boost::rational added. Thanks to jzmaddock 52 | + Visualizers for boost::variant > added. Thanks to Antony Polukhin 53 | * Visualizers for boost::regex improved. Thanks to jzmaddock 54 | ! boost::uuids::uuid visualizer fixed 55 | 56 | 1.0.15 - 23.03.2014 57 | ========================= 58 | + Support changed boost::container::* and boost::intrusive::* in boost 1.55 59 | * boost::scoped_ptr, boost::shared_ptr operator-> added to no step into 60 | * boost::scoped_array, boost::shared_array operator[] added to no step into 61 | 62 | 1.0.14 - 03.07.2013 63 | ========================= 64 | ! boost::container::list, slist, set and map containers visualizers fixed 65 | * boost::local_time::posix_time_zone minor enhancement 66 | 67 | 1.0.13 - 28.06.2013 68 | ========================= 69 | + Support Visual Studio 2013 Preview 70 | 71 | 1.0.12 - 08.06.2013 72 | ========================= 73 | + Visualizers for boost::intrusive::set added. Thanks to johanst 74 | 75 | 1.0.11 - 03.03.2013 76 | ========================= 77 | + Visualizers for "boost::container::flat_map, flat_set and stable_vector added 78 | ! Intrusive containers with member hook fixed 79 | 80 | 1.0.10 - 15.11.2012 81 | ========================= 82 | + Visualizers for boost::numeric::ublas::vector, mapped_vector, compressed_vector and matrix added 83 | 84 | 1.0.9 - 13.11.2012 85 | ========================= 86 | ! wxString visualizer fixed for wxWidgets 2.9 87 | ! Boost Geometry visualizer updated by Michal Zajic 88 | 89 | 1.0.8 - 19.10.2012 90 | ========================= 91 | + Visualizers for boost::intrusive::list and boost::intrusive::slist with base hook added 92 | 93 | 1.0.7 - 14.08.2012 94 | ========================= 95 | + Visualizers for wxVector, wxList, wxArrayShort, wxArrayInt, wxArrayDouble, 96 | wxArrayLong, wxArrayPtrVoid added 97 | ! wxArrayString visualizer fixed 98 | 99 | 1.0.6 - 10.08.2012 100 | ========================= 101 | + Visualizers for boost::geometry added (thanks to Mateusz Loskot) 102 | ! wxWidgets visualizers fixed 103 | 104 | 1.0.5 - 29.07.2012 105 | ========================= 106 | + TinyXML visualizers added 107 | + Visualizers for boost::filesystem::path, boost::filesystem::directory_entry, 108 | boost::filesystem::file_status added 109 | 110 | 1.0.4 - 29.07.2012 111 | ========================= 112 | ! TinyXML2 string handling improved 113 | + Visualizers for boost::uuid, boost::circular_buffer, 114 | boost::container::basic_string, boost::container::deque, boost::container::vector added 115 | + Disabled step into boost::forward, boost::move and boost::addressof functions 116 | 117 | 1.0.3 - 23.07.2012 118 | ========================= 119 | + Description for DirectX errors added 120 | + Visualizers for boost::ratio, boost::tuple, boost::chrono::duration added 121 | 122 | 1.0.2 - 26.07.2012 123 | ========================= 124 | + Boost Unordered containers support added 125 | 126 | 1.0.1 - 25.07.2012 127 | ========================= 128 | ! Visualizers for boost::shared_ptr and boost::weak_ptr fixed 129 | * Boost::Variant visualizer new implementation 130 | * Boost visualizers divided to several files 131 | 132 | 1.0.0 - 22.07.2012 133 | ========================= 134 | + First release -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Boost Software License - Version 1.0 - August 17th, 2003 2 | 3 | Permission is hereby granted, free of charge, to any person or organization 4 | obtaining a copy of the software and accompanying documentation covered by 5 | this license (the "Software") to use, reproduce, display, distribute, 6 | execute, and transmit the Software, and to prepare derivative works of the 7 | Software, and to permit third-parties to whom the Software is furnished to 8 | do so, all subject to the following: 9 | 10 | The copyright notices in the Software and this entire statement, including 11 | the above license grant, this restriction and the following disclaimer, 12 | must be included in all copies of the Software, in whole or in part, and 13 | all derivative works of the Software, unless such copies or derivative 14 | works are solely in the form of machine-executable object code generated by 15 | a source language processor. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 20 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 21 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 22 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | C++ Debugger Visualizers [![Donate][1]][2] 2 | ======================== 3 | 4 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML2. 5 | 6 | Debugger Visualizers for Boost based on [visualizers for VS2010](https://svn.boost.org/trac/boost/wiki/DebuggerVisualizers) and 7 | Microsoft [boost::shared_ptr visualizer](http://archive.msdn.microsoft.com/boostsharedptrvis) 8 | 9 | * [Boost library](http://www.boost.org/) 10 | * boost::shared_ptr, boost::weak_ptr, boost::intrusive_ptr, boost::shared_array, boost::scoped_ptr, boost::scoped_array 11 | * boost::ptr_array, boost::ptr_vector, boost::ptr_list, boost::ptr_deque, boost::ptr_map, boost::ptr_set, boost::ptr_multimap, boost::ptr_multiset 12 | * boost::array, boost::dynamic_bitset, boost::circular_buffer 13 | * boost::unordered_map, boost::unordered_set, boost::unordered_multimap, boost::unordered_multiset 14 | * boost::intrusive::list, boost::intrusive::slist, boost::intrusive::set 15 | * boost::container::basic_string, boost::container::deque, boost::container::vector 16 | * boost::optional, boost::any, boost::variant 17 | * boost::filesystem::path, boost::filesystem::directory_entry, boost::filesystem::file_status 18 | * boost::posix_time::ptime, boost::posix_time::time_duration 19 | * boost::multiprecision 20 | * boost::rational 21 | * boost::regex 22 | * boost::interprocess::offset_ptr 23 | * boost::tribool 24 | * boost::unique_lock 25 | * boost::uuids::uuid 26 | * [wxWidgets library](http://www.wxwidgets.org/): wxPoint, wxSize, wxRect, wxDateTime, wxLongLong, wxString, wxArrayString, wxDir, wxFileName 27 | * [TinyXML library](http://www.grinninglizard.com/tinyxml/): TiXmlNode, TiXmlElement, TiXmlAttribute 28 | * [TinyXML2 library](http://www.grinninglizard.com/tinyxml2/index.html): XMLNode, XMLElement, XMLAttribute 29 | * HRESULT for DirectX 30 | 31 | You can install this extension from Visual Studio marketplace for [VS2012](https://marketplace.visualstudio.com/items?itemName=ArkadyShapkin.CDebuggerVisualizersforVS2012), [VS2013](https://marketplace.visualstudio.com/items?itemName=ArkadyShapkin.CDebuggerVisualizersforVS2013), [VS2015](https://marketplace.visualstudio.com/items?itemName=ArkadyShapkin.CDebuggerVisualizersforVS2015) and [VS2017](https://marketplace.visualstudio.com/items?itemName=ArkadyShapkin.CDebuggerVisualizersforVS2017) 32 | 33 | Please submit a request for support for new libraries and classes to this page https://github.com/KindDragon/CPPDebuggerVisualizers/issues 34 | 35 | [1]: https://www.paypalobjects.com/en_GB/i/btn/btn_donate_LG.gif 36 | [2]: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=N3QTYHP9LH6UY&lc=RU&item_name=C%2b%2b%20Debugger%20Visualizers&item_number=CPPDebuggerVisualizers¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted 37 | -------------------------------------------------------------------------------- /Tests/BoostTest/BoostTest.VS2013.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/BoostTest.VS2015.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/BoostTest.VS2017.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/BoostTest.VS2019.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/BoostTest.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Some recipes used for the XML tutorial. 5 | 6 | 7 | Beef Parmesan with Garlic Angel Hair Pasta 8 | 9 | 10 | 11 | Preheat oven to 350 degrees F (175 degrees C). 12 | 13 | 14 | 15 | Make the meat ahead of time, and refrigerate over night, the acid in the 16 | tomato sauce will tenderize the meat even more. If you do this, save the 17 | mozzarella till the last minute. 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/BoostTest/test_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/Tests/BoostTest/test_image.png -------------------------------------------------------------------------------- /Tests/DynBitsetTest/BoostTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | 4 | class test 5 | { 6 | static const int index = 5; 7 | enum { eIndex = 5 }; 8 | char* a; 9 | public: 10 | test() 11 | { 12 | a = new char[10]; 13 | for (int i = 0; i < 10; i++) 14 | a[i] = i; 15 | } 16 | }; 17 | 18 | int main(int argc, const char* argv[]) 19 | { 20 | test x; 21 | return 0; 22 | } 23 | -------------------------------------------------------------------------------- /Tests/DynBitsetTest/DynBitsetTest.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/DynBitsetTest/DynBitsetTest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/Tests/DynBitsetTest/DynBitsetTest.zip -------------------------------------------------------------------------------- /Tests/DynBitsetTest/test.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ {a[index]} }} 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Tests/libs.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | D:\Work 6 | 7 | 8 | 9 | 10 | $(LibsFolder)\boost\;$(LibsFolder)\zlib-1.2.8\;$(LibsFolder)\lpng1617\;$(LibsFolder)\lpng1617\lib32\;%(AdditionalIncludeDirectories) 11 | 12 | 13 | zlibstatic.lib;libpng16_static.lib;%(AdditionalDependencies) 14 | $(LibsFolder)\zlib-1.2.8\lib32\Release\;$(LibsFolder)\lpng1617\lib32\Release\;$(LibsFolder)\boost\stage\lib;%(AdditionalLibraryDirectories) 15 | $(LibsFolder)\zlib-1.2.8\lib64\Release\;$(LibsFolder)\lpng1617\lib64\Release\;$(LibsFolder)\boost\stage64\lib;%(AdditionalLibraryDirectories) 16 | 17 | 18 | 19 | 20 | $(LibsFolder) 21 | 22 | 23 | -------------------------------------------------------------------------------- /VS2012/CPPDebuggerVisualizers.VS2012.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12.0 5 | 11.0 6 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 7 | 8 | 9 | 10 | 11 | 4.0 12 | 13 | 14 | 15 | Debug 16 | AnyCPU 17 | 2.0 18 | {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 19 | {6D42FE63-9BF1-4966-AE17-A8C9A112AC53} 20 | Library 21 | Properties 22 | CPPDebuggerVisualizers 23 | CPPDebuggerVisualizers.VS2012 24 | v4.5 25 | false 26 | false 27 | false 28 | false 29 | false 30 | false 31 | 32 | 33 | true 34 | full 35 | false 36 | bin\Debug\ 37 | DEBUG;TRACE 38 | prompt 39 | 4 40 | 41 | 42 | pdbonly 43 | true 44 | bin\Release\ 45 | TRACE 46 | prompt 47 | 4 48 | 49 | 50 | 51 | 52 | Changelog.txt 53 | true 54 | 55 | 56 | Visualizers\CPPDebuggerVisualizersNatvisAddIn.dll 57 | true 58 | 59 | 60 | cppVisualizerIcon.png 61 | true 62 | 63 | 64 | cppVisualizerScreenshot.png 65 | true 66 | 67 | 68 | LICENSE.txt 69 | true 70 | 71 | 72 | true 73 | 74 | 75 | true 76 | 77 | 78 | true 79 | 80 | 81 | true 82 | 83 | 84 | true 85 | 86 | 87 | true 88 | 89 | 90 | true 91 | 92 | 93 | true 94 | 95 | 96 | true 97 | 98 | 99 | true 100 | 101 | 102 | true 103 | 104 | 105 | true 106 | 107 | 108 | true 109 | 110 | 111 | true 112 | 113 | 114 | true 115 | 116 | 117 | true 118 | 119 | 120 | true 121 | 122 | 123 | true 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 139 | -------------------------------------------------------------------------------- /VS2012/EnableNatvisDebugging.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/VS2012/EnableNatvisDebugging.reg -------------------------------------------------------------------------------- /VS2012/Visualizers/TinyXML.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [{type}] {value} 5 | value 6 | 7 | 8 | firstChild 9 | next 10 | *this 11 | 12 | 13 | 14 | 15 | [{type}] {value} 16 | value 17 | 18 | attributeSet 19 | 20 | firstChild 21 | next 22 | *this 23 | 24 | 25 | 26 | 27 | {name} = {value} 28 | 29 | 30 | 31 | 32 | 33 | 34 | sentinel.next 35 | next 36 | this 37 | 38 | 39 | 40 | 41 | [{rep_-<size}] {rep_-<str,s} 42 | rep_-<str,s 43 | 44 | -------------------------------------------------------------------------------- /VS2012/Visualizers/TinyXML2.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {start, [end-start]s} 5 | start, [end-start]s 6 | 7 | 8 | {value} 9 | value 10 | 11 | 12 | firstChild 13 | next 14 | this 15 | 16 | 17 | 18 | 19 | [CLOSED] {value} 20 | [CLOSING] {value} 21 | [OPEN] {value} 22 | value 23 | 24 | rootAttribute 25 | 26 | firstChild 27 | next 28 | this 29 | 30 | 31 | 32 | 33 | {name} = {value} 34 | 35 | 36 | this 37 | next 38 | this 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost.natstepfilter: -------------------------------------------------------------------------------- 1 | 2 | 3 | boost::forward<.*NoStepInto 4 | boost::move<.*NoStepInto 5 | boost::addressof<.*NoStepInto 6 | boost::foreach_detail_::.*NoStepInto 7 | boost::scoped_ptr<.*::operator->NoStepInto 8 | boost::shared_ptr<.*::operator->NoStepInto 9 | boost::scoped_array<.*::operator\[\]NoStepInto 10 | boost::shared_array<.*::operator\[\]NoStepInto 11 | 12 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_DateTime.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {100*((4*(days_+32044)+3)/146097)+((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461)-4800+(((5*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4)-(1461*((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)/10)}-{((5*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4)-(1461*((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)+3-12*(((5*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4)-(1461*((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)/10)}-{(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4)-(1461*((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461))/4)-((153*((5*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4)-(1461*((4*(days_+32044-((146097*((4*(days_+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)+2)/5)+1} 17 | 18 | 19 | 20 | {days_.value_} day 21 | {days_.value_} days 22 | 23 | 24 | 25 | 26 | {ticks_.value_/86400000000}d {(ticks_.value_-86400000000*(ticks_.value_/86400000000))/3600000000}h {(ticks_.value_-86400000000*(ticks_.value_/86400000000)-3600000000*((ticks_.value_-86400000000*(ticks_.value_/86400000000))/3600000000))/60000000}m {((ticks_.value_-86400000000*(ticks_.value_/86400000000)-3600000000*((ticks_.value_-86400000000*(ticks_.value_/86400000000))/3600000000))-60000000*((ticks_.value_-86400000000*(ticks_.value_/86400000000) - 3600000000*((ticks_.value_-86400000000*(ticks_.value_/86400000000))/3600000000))/60000000))/1000000}s {(ticks_.value_%1000000)/1000}ms {ticks_.value_%1000}us 27 | 28 | 29 | 30 | 31 | {100*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097)+((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461)-4800+(((5*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4)-(1461*((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)/10)}-{((5*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4)-(1461*((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)+3-12*(((5*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4)-(1461*((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)/10)}-{((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4)-(1461*((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461))/4)-((153*((5*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4)-(1461*((4*((time_.time_count_.value_/86400000000)+32044-((146097*((4*((time_.time_count_.value_/86400000000)+32044)+3)/146097))/4))+3)/1461))/4)+2)/153)+2)/5)+1} {(time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000))/3600000000}h{(time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000)-3600000000*((time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000))/3600000000))/60000000}m{((time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000)-3600000000*((time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000))/3600000000))-60000000*((time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000) - 3600000000*((time_.time_count_.value_-86400000000*(time_.time_count_.value_/86400000000))/3600000000))/60000000))/1000000}s ({time_.time_count_.value_%1000000}us) 32 | 33 | 34 | 35 | {begin_}/{last_} 36 | 37 | begin_ 38 | last_ 39 | 40 | 41 | 42 | 43 | {current_} 44 | 45 | current_ 46 | 47 | 48 | 49 | 50 | {current_} 51 | 52 | current_ 53 | 54 | 55 | 56 | 57 | {zone_names_.std_zone_abbrev_}{(base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000))/3600000000}:{(base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000)-3600000000*((base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000))/3600000000))/60000000}:{((base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000)-3600000000*((base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000))/3600000000))-60000000*((base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000) - 3600000000*((base_utc_offset_.ticks_.value_-86400000000*(base_utc_offset_.ticks_.value_/86400000000))/3600000000))/60000000))/1000000} 58 | 59 | 60 | 61 | {rep_} {*(($T2*)1)} 62 | 63 | rep_ 64 | *(($T2*)1) 65 | 66 | 67 | 68 | 69 | {d_} 70 | 71 | d_ 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_Geometry.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | {{x={m_values[0]} y={m_values[1]}}} 14 | 15 | m_values[0] 16 | m_values[1] 17 | 18 | 19 | 20 | 21 | 22 | [{m_values[0]}] 23 | [{m_values[0]}, {m_values[1]}] 24 | [{m_values[0]}, {m_values[1]}, {m_values[2]}] 25 | {{size = {sizeof(m_values)/sizeof(m_values[0])}}} 26 | 27 | sizeof(m_values)/sizeof(m_values[0]) 28 | 29 | sizeof(m_values)/sizeof(m_values[0]) 30 | m_values 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_PointerContainerLibrary.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{ size={(size_t) $T2} }} 12 | 13 | 14 | $T2 15 | ($T1**)c_.elems 16 | 17 | 18 | 19 | 20 | 21 | {($T1*)(*iter_)} 22 | 23 | ($T1*)(*iter_) 24 | 25 | 26 | 27 | 28 | 29 | {{ size={c_._Mylast - c_._Myfirst} }} 30 | 31 | c_._Mylast - c_._Myfirst 32 | c_._Myend - c_._Myfirst 33 | 34 | c_._Mylast - c_._Myfirst 35 | ($T1**)c_._Myfirst 36 | 37 | 38 | 39 | 40 | 41 | 42 | {($T2*)(*iter_._Ptr)} 43 | 44 | ($T2*)(*iter_._Ptr) 45 | 46 | 47 | 48 | 49 | 50 | {{ size={c_._Mysize} }} 51 | 52 | 53 | c_._Mysize 54 | c_._Myhead->_Parent 55 | _Left 56 | _Right 57 | *(std::pair<$T1,$T2 *>*)&(_Myval) 58 | 59 | 60 | 61 | 62 | 63 | {m_iterator._Ptr->_Myval.first}, {($T3)m_iterator._Ptr->_Myval.second} 64 | 65 | m_iterator._Ptr->_Myval.first 66 | ($T3)m_iterator._Ptr->_Myval.second 67 | 68 | 69 | 70 | 71 | 72 | {{ size={c_._Mysize} }} 73 | 74 | 75 | c_._Mysize 76 | c_._Myhead->_Parent 77 | _Left 78 | _Right 79 | ($T1*)_Myval 80 | 81 | 82 | 83 | 84 | 85 | 86 | {($T2*)(iter_._Ptr->_Myval)} 87 | 88 | ($T2*)(iter_._Ptr->_Myval) 89 | 90 | 91 | 92 | 93 | 94 | {{ size={c_._Mysize} }} 95 | 96 | 97 | c_._Mysize 98 | c_._Myhead->_Next 99 | _Next 100 | ($T1*)_Myval 101 | 102 | 103 | 104 | 105 | 106 | 107 | {($T2*)(iter_._Ptr->_Myval)} 108 | 109 | ($T2*)(iter_._Ptr->_Myval) 110 | 111 | 112 | 113 | 114 | 115 | {{ size={c_._Mysize} }} 116 | 117 | 118 | c_._Mysize 119 | ($T1*)c_._Map[(($i + c_._Myoff) / c_._EEN_DS) % c_._Mapsize][($i + c_._Myoff) % c_._EEN_DS] 120 | 121 | 122 | 123 | 124 | 125 | 126 | {($T2*)(($T1 *)iter_._Myproxy->_Mycont)->_Map[(iter_._Myoff / iter_._EEN_DS) % (($T1 *)iter_._Myproxy->_Mycont)->_Mapsize][iter_._Myoff % iter_._EEN_DS]} 127 | end 128 | 129 | iter_._Myoff - (($T1 *)iter_._Myproxy->_Mycont)->_Myoff 130 | ($T2*)(($T1 *)iter_._Myproxy->_Mycont)->_Map[(iter_._Myoff / iter_._EEN_DS) % (($T1 *)iter_._Myproxy->_Mycont)->_Mapsize][iter_._Myoff % iter_._EEN_DS] 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_Rational.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {num}/{den} 8 | 9 | num 10 | den 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_SmartPointers.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | empty 5 | scoped_ptr {*px} 6 | 7 | px 8 | 9 | 10 | 11 | 12 | empty 13 | scoped_array {px} 14 | 15 | &px 16 | 17 | 18 | 19 | 20 | default 21 | 22 | 23 | 24 | 25 | 26 | custom deleter 27 | 28 | del 29 | 30 | 31 | 32 | 33 | custom deleter, custom allocator 34 | 35 | d_ 36 | a_ 37 | 38 | 39 | 40 | 41 | empty 42 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref] [{*pn.pi_}] 43 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 44 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 45 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs] [{*pn.pi_}] 46 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 47 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 48 | 49 | px 50 | *pn.pi_ 51 | 52 | 53 | 54 | 55 | empty 56 | expired [{pn.pi_->weak_count_} weak ref] [{*pn.pi_}] 57 | expired [{pn.pi_->weak_count_} weak refs] [{*pn.pi_}] 58 | weak_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 59 | weak_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 60 | weak_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 61 | weak_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 62 | 63 | px 64 | *pn.pi_ 65 | 66 | 67 | 68 | 69 | empty 70 | intrusive_ptr {*px} 71 | 72 | px 73 | 74 | 75 | 76 | 77 | empty 78 | shared_array {*px} [{pn.pi_->use_count_} strong ref] [{*pn.pi_}] 79 | shared_array {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 80 | shared_array {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 81 | shared_array {*px} [{pn.pi_->use_count_} strong refs] [{*pn.pi_}] 82 | shared_array {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 83 | shared_array {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 84 | 85 | px 86 | *pn.pi_ 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_Unordered.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ size={size_} }} 5 | 6 | 7 | size_ 8 | buckets_[bucket_count_].next_ 9 | next_ 10 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::ptr_node<std::pair<$T2 const ,$T3> >*)this)->data_) 11 | 12 | 13 | 14 | 15 | 16 | {{ size={size_} }} 17 | 18 | 19 | size_ 20 | buckets_[bucket_count_].next_ 21 | next_ 22 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::grouped_ptr_node<std::pair<$T2 const ,$T3> >*)this)->data_) 23 | 24 | 25 | 26 | 27 | 28 | {{ size={size_} }} 29 | 30 | 31 | size_ 32 | buckets_[bucket_count_].next_ 33 | next_ 34 | *(($T2*)&((boost::unordered::detail::ptr_node<$T2>*)this)->data_) 35 | 36 | 37 | 38 | 39 | 40 | {{ size={size_} }} 41 | 42 | 43 | size_ 44 | buckets_[bucket_count_].next_ 45 | next_ 46 | *(($T2*)&((boost::unordered::detail::grouped_ptr_node<$T2>*)this)->data_) 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {table_} 56 | 57 | table_ 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /VS2012/Visualizers/boost_uBLAS.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ size={size_} }} 6 | 7 | size_ 8 | 9 | size_ 10 | data_ 11 | 12 | 13 | 14 | 15 | 16 | {data_} 17 | 18 | data_ 19 | 20 | 21 | 22 | 23 | {{ size={size_} }} 24 | 25 | size_ 26 | data_ 27 | 28 | 29 | 30 | 31 | {{ size={size_} }} 32 | 33 | size_ 34 | capacity_ 35 | filled_ 36 | index_data_ 37 | value_data_ 38 | 39 | 40 | 41 | 42 | {{ size={size1_}x{size2_} }} 43 | 44 | data_.size_ 45 | 46 | Forward 47 | 2 48 | size1_ 49 | size2_ 50 | data_.data_ 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /VS2012/Visualizers/wxWidgets.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {x},{y} 6 | 7 | x 8 | y 9 | 10 | 11 | 12 | 13 | {x}*{y} 14 | 15 | x 16 | y 17 | 18 | 19 | 20 | 21 | {x},{y} {width}*{height} 22 | 23 | x 24 | y 25 | width 26 | height 27 | 28 | 29 | 30 | 31 | {m_time.m_ll}ms 32 | 33 | 34 | 35 | 36 | {m_ll} 37 | 38 | 39 | 40 | 52 | 53 | 54 | 55 | {m_impl,su} 56 | m_impl,su 57 | 58 | m_impl 59 | 60 | 61 | 62 | 63 | 64 | {m_pchData,su} 65 | m_pchData,su 66 | 67 | m_pchData 68 | (*((wxStringData**)m_pchData) - 1)->nDataLength 69 | (*((wxStringData**)m_pchData) - 1)->nAllocLength 70 | (*((wxStringData**)m_pchData) - 1)->nRefs 71 | *((wxStringData**)m_pchData) - 1 72 | 73 | 74 | 75 | 76 | {{ size={m_nCount} }} 77 | 78 | m_nCount 79 | m_nSize 80 | m_autoSort 81 | 82 | m_nCount 83 | m_pItems 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | {{ size={m_nCount} }} 94 | 95 | m_nCount 96 | m_nSize 97 | 98 | m_nCount 99 | m_pItems 100 | 101 | 102 | 103 | 104 | 105 | {{ size={m_count} }} 106 | 107 | 108 | m_count 109 | m_nodeFirst 110 | m_next 111 | m_data 112 | 113 | 114 | 115 | 116 | 117 | {{ size={m_size} }} 118 | 119 | m_size 120 | m_capacity 121 | 122 | m_size 123 | m_objects 124 | 125 | 126 | 127 | 128 | 129 | empty 130 | wxDir {*((wchar_t**)&m_data->m_dirname),su} 131 | 132 | m_data 133 | 134 | 135 | 136 | 137 | Volume {*((wchar_t**)&m_volume),su}, Dirs {m_dirs}, Name {*((wchar_t**)&m_name),su}, Ext {*((wchar_t**)&m_ext),su} 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /VS2012/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C++ Debugger Visualizers for VS2012 6 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML, TinyXML2 7 | https://cppvisualizers.codeplex.com/ 8 | LICENSE.txt 9 | Changelog.txt 10 | cppVisualizerIcon.png 11 | cppVisualizerScreenshot.png 12 | C++, Debugger, Visualizer, Boost, wxWidgets, TinyXML2 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2013/EnableNatvisDebugging.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/VS2013/EnableNatvisDebugging.reg -------------------------------------------------------------------------------- /VS2013/Visualizers/TinyXML.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [{type}] {value} 5 | value 6 | 7 | 8 | firstChild 9 | next 10 | *this 11 | 12 | 13 | 14 | 15 | [{type}] {value} 16 | value 17 | 18 | attributeSet 19 | 20 | firstChild 21 | next 22 | *this 23 | 24 | 25 | 26 | 27 | {name} = {value} 28 | 29 | 30 | 31 | 32 | 33 | 34 | sentinel.next 35 | next 36 | this 37 | 38 | 39 | 40 | 41 | [{rep_-<size}] {rep_-<str,s} 42 | rep_-<str,s 43 | 44 | -------------------------------------------------------------------------------- /VS2013/Visualizers/TinyXML2.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {start, [end-start]s} 5 | start, [end-start]s 6 | 7 | 8 | {value} 9 | value 10 | 11 | 12 | firstChild 13 | next 14 | this 15 | 16 | 17 | 18 | 19 | [CLOSED] {value} 20 | [CLOSING] {value} 21 | [OPEN] {value} 22 | value 23 | 24 | rootAttribute 25 | 26 | firstChild 27 | next 28 | this 29 | 30 | 31 | 32 | 33 | {name} = {value} 34 | 35 | 36 | this 37 | next 38 | this 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost.natstepfilter: -------------------------------------------------------------------------------- 1 | 2 | 3 | boost::forward<.*NoStepInto 4 | boost::move<.*NoStepInto 5 | boost::addressof<.*NoStepInto 6 | boost::foreach_detail_::.*NoStepInto 7 | boost::scoped_ptr<.*::operator->NoStepInto 8 | boost::shared_ptr<.*::operator->NoStepInto 9 | boost::scoped_array<.*::operator\[\]NoStepInto 10 | boost::shared_array<.*::operator\[\]NoStepInto 11 | 12 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_Geometry.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | {{x={m_values[0]} y={m_values[1]}}} 14 | 15 | m_values[0] 16 | m_values[1] 17 | 18 | 19 | 20 | 21 | 22 | [{m_values[0]}] 23 | [{m_values[0]}, {m_values[1]}] 24 | [{m_values[0]}, {m_values[1]}, {m_values[2]}] 25 | {{size = {sizeof(m_values)/sizeof(m_values[0])}}} 26 | 27 | sizeof(m_values)/sizeof(m_values[0]) 28 | 29 | sizeof(m_values)/sizeof(m_values[0]) 30 | m_values 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_MultiArray.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | extent = {extent_list_,view(expand)} 6 | 7 | 8 | $T2 9 | extent_list_[$i] 10 | base_ 11 | 12 | 13 | 14 | 15 | 16 | extent = {extent_list_,view(expand)} 17 | 18 | 19 | 1 20 | extent_list_[0] 21 | ($T1*)base_ 22 | 23 | 24 | 25 | 26 | 27 | extent = {extent_list_,view(expand)} 28 | 29 | 30 | extent_list_[0] 31 | (base_ + origin_offset_ + stride_list_[0] * $i),[extent_list_[1]]na 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_SmartPointers.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | empty 5 | scoped_ptr {*px} 6 | 7 | px 8 | 9 | 10 | 11 | 12 | empty 13 | scoped_array {px} 14 | 15 | &px 16 | 17 | 18 | 19 | 20 | default 21 | 22 | 23 | 24 | 25 | 26 | custom deleter 27 | 28 | del 29 | 30 | 31 | 32 | 33 | custom deleter, custom allocator 34 | 35 | d_ 36 | a_ 37 | 38 | 39 | 40 | 41 | empty 42 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref] [{*pn.pi_}] 43 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 44 | shared_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 45 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs] [{*pn.pi_}] 46 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 47 | shared_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 48 | 49 | px 50 | *pn.pi_ 51 | 52 | 53 | 54 | 55 | empty 56 | expired [{pn.pi_->weak_count_} weak ref] [{*pn.pi_}] 57 | expired [{pn.pi_->weak_count_} weak refs] [{*pn.pi_}] 58 | weak_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 59 | weak_ptr {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 60 | weak_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 61 | weak_ptr {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 62 | 63 | px 64 | *pn.pi_ 65 | 66 | 67 | 68 | 69 | empty 70 | intrusive_ptr {*px} 71 | 72 | px 73 | 74 | 75 | 76 | 77 | empty 78 | shared_array {*px} [{pn.pi_->use_count_} strong ref] [{*pn.pi_}] 79 | shared_array {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 80 | shared_array {*px} [{pn.pi_->use_count_} strong ref, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 81 | shared_array {*px} [{pn.pi_->use_count_} strong refs] [{*pn.pi_}] 82 | shared_array {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak ref] [{*pn.pi_}] 83 | shared_array {*px} [{pn.pi_->use_count_} strong refs, {pn.pi_->weak_count_ - 1} weak refs] [{*pn.pi_}] 84 | 85 | px 86 | *pn.pi_ 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_Unordered.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ size={size_} }} 7 | 8 | 9 | size_ 10 | buckets_[bucket_count_].next_ 11 | next_ 12 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::ptr_node<std::pair<$T2 const ,$T3> >*)this)->data_) 13 | 14 | 15 | 16 | 17 | 18 | 19 | {{ size={size_} }} 20 | 21 | 22 | size_ 23 | buckets_[bucket_count_].next_ 24 | next_ 25 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::ptr_node<std::pair<$T2 const ,$T3> >*)this)->value_base_.data_) 26 | 27 | 28 | 29 | 30 | 31 | 32 | {{ size={size_} }} 33 | 34 | 35 | size_ 36 | buckets_[bucket_count_].next_ 37 | next_ 38 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::grouped_ptr_node<std::pair<$T2 const ,$T3> >*)this)->data_) 39 | 40 | 41 | 42 | 43 | 44 | 45 | {{ size={size_} }} 46 | 47 | 48 | size_ 49 | buckets_[bucket_count_].next_ 50 | next_ 51 | *((std::pair<$T2 const ,$T3>*)&((boost::unordered::detail::grouped_ptr_node<std::pair<$T2 const ,$T3> >*)this)->value_base_.data_) 52 | 53 | 54 | 55 | 56 | 57 | 58 | {{ size={size_} }} 59 | 60 | 61 | size_ 62 | buckets_[bucket_count_].next_ 63 | next_ 64 | *(($T2*)&((boost::unordered::detail::ptr_node<$T2>*)this)->data_) 65 | 66 | 67 | 68 | 69 | 70 | 71 | {{ size={size_} }} 72 | 73 | 74 | size_ 75 | buckets_[bucket_count_].next_ 76 | next_ 77 | *(($T2*)&((boost::unordered::detail::ptr_node<$T2>*)this)->value_base_.data_) 78 | 79 | 80 | 81 | 82 | 83 | 84 | {{ size={size_} }} 85 | 86 | 87 | size_ 88 | buckets_[bucket_count_].next_ 89 | next_ 90 | *(($T2*)&((boost::unordered::detail::grouped_ptr_node<$T2>*)this)->data_) 91 | 92 | 93 | 94 | 95 | 96 | 97 | {{ size={size_} }} 98 | 99 | 100 | size_ 101 | buckets_[bucket_count_].next_ 102 | next_ 103 | *(($T2*)&((boost::unordered::detail::grouped_ptr_node<$T2>*)this)->value_base_.data_) 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | {table_} 113 | 114 | table_ 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_rational.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {num}/{den} 8 | 9 | num 10 | den 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VS2013/Visualizers/boost_uBLAS.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ size={size_} }} 6 | 7 | size_ 8 | 9 | size_ 10 | data_ 11 | 12 | 13 | 14 | 15 | 16 | {data_} 17 | 18 | data_ 19 | 20 | 21 | 22 | 23 | {{ size={size_} }} 24 | 25 | size_ 26 | data_ 27 | 28 | 29 | 30 | 31 | {{ size={size_} filled={filled_} }} 32 | 33 | size_ 34 | capacity_ 35 | filled_ 36 | index_data_ 37 | value_data_ 38 | 39 | 40 | 41 | 42 | {{ size={size_} filled={filled_} }} 43 | 44 | size_ 45 | capacity_ 46 | sorted_ 47 | filled_ 48 | sorted_filled_ 49 | index_data_ 50 | value_data_ 51 | 52 | 53 | 54 | 55 | {{ size={size1_}x{size2_} }} 56 | 57 | data_.size_ 58 | 59 | Forward 60 | 2 61 | size1_ 62 | size2_ 63 | data_.data_ 64 | 65 | 66 | 67 | 68 | 69 | {{ size={size1_}x{size2_} }} 70 | 71 | size1_ 72 | size2_ 73 | 74 | 75 | 76 | 77 | {{ size={size1_}x{size2_} }} 78 | 79 | size1_ 80 | size2_ 81 | 82 | 83 | 84 | 85 | {{ size={size1_}x{size2_} }} 86 | 87 | size1_ 88 | size2_ 89 | value_ 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /VS2013/Visualizers/external.natjmc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VS2013/Visualizers/wxWidgets.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {x},{y} 6 | 7 | x 8 | y 9 | 10 | 11 | 12 | 13 | {x}*{y} 14 | 15 | x 16 | y 17 | 18 | 19 | 20 | 21 | {x},{y} {width}*{height} 22 | 23 | x 24 | y 25 | width 26 | height 27 | 28 | 29 | 30 | 31 | {m_time.m_ll}ms 32 | 33 | 34 | 35 | 36 | {m_ll} 37 | 38 | 39 | 40 | 52 | 53 | 54 | 55 | {m_impl,su} 56 | m_impl,su 57 | 58 | m_impl 59 | 60 | 61 | 62 | 63 | 64 | {m_pchData,su} 65 | m_pchData,su 66 | 67 | m_pchData 68 | (*((wxStringData**)m_pchData) - 1)->nDataLength 69 | (*((wxStringData**)m_pchData) - 1)->nAllocLength 70 | (*((wxStringData**)m_pchData) - 1)->nRefs 71 | *((wxStringData**)m_pchData) - 1 72 | 73 | 74 | 75 | 76 | {{ size={m_nCount} }} 77 | 78 | m_nCount 79 | m_nSize 80 | m_autoSort 81 | 82 | m_nCount 83 | m_pItems 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | {{ size={m_nCount} }} 94 | 95 | m_nCount 96 | m_nSize 97 | 98 | m_nCount 99 | m_pItems 100 | 101 | 102 | 103 | 104 | 105 | {{ size={m_count} }} 106 | 107 | 108 | m_count 109 | m_nodeFirst 110 | m_next 111 | m_data 112 | 113 | 114 | 115 | 116 | 117 | {{ size={m_size} }} 118 | 119 | m_size 120 | m_capacity 121 | 122 | m_size 123 | m_objects 124 | 125 | 126 | 127 | 128 | 129 | empty 130 | wxDir {*((wchar_t**)&m_data->m_dirname),su} 131 | 132 | m_data 133 | 134 | 135 | 136 | 137 | Volume {*((wchar_t**)&m_volume),su}, Dirs {m_dirs}, Name {*((wchar_t**)&m_name),su}, Ext {*((wchar_t**)&m_ext),su} 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /VS2013/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C++ Debugger Visualizers for VS2013 6 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML, TinyXML2 7 | https://cppvisualizers.codeplex.com/ 8 | LICENSE.txt 9 | Changelog.txt 10 | cppVisualizerIcon.png 11 | cppVisualizerScreenshot.png 12 | C++, Debugger, Visualizer, Boost, wxWidgets, TinyXML2 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /VS2015/Visualizers/TinyXML.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [{type}] {value} 5 | value 6 | 7 | 8 | firstChild 9 | next 10 | *this 11 | 12 | 13 | 14 | 15 | [{type}] {value} 16 | value 17 | 18 | attributeSet 19 | 20 | firstChild 21 | next 22 | *this 23 | 24 | 25 | 26 | 27 | {name} = {value} 28 | 29 | 30 | 31 | 32 | 33 | 34 | sentinel.next 35 | next 36 | this 37 | 38 | 39 | 40 | 41 | [{rep_-<size}] {rep_-<str,s} 42 | rep_-<str,s 43 | 44 | -------------------------------------------------------------------------------- /VS2015/Visualizers/TinyXML2.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {start, [end-start]s} 5 | start, [end-start]s 6 | 7 | 8 | {value} 9 | value 10 | 11 | 12 | firstChild 13 | next 14 | this 15 | 16 | 17 | 18 | 19 | [CLOSED] {value} 20 | [CLOSING] {value} 21 | [OPEN] {value} 22 | value 23 | 24 | rootAttribute 25 | 26 | firstChild 27 | next 28 | this 29 | 30 | 31 | 32 | 33 | {name} = {value} 34 | 35 | 36 | this 37 | next 38 | this 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost.natstepfilter: -------------------------------------------------------------------------------- 1 | 2 | 3 | boost::forward<.*NoStepInto 4 | boost::move<.*NoStepInto 5 | boost::addressof<.*NoStepInto 6 | boost::foreach_detail_::.*NoStepInto 7 | boost::scoped_ptr<.*::operator->NoStepInto 8 | boost::shared_ptr<.*::operator->NoStepInto 9 | boost::scoped_array<.*::operator\[\]NoStepInto 10 | boost::shared_array<.*::operator\[\]NoStepInto 11 | 12 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_Geometry.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | {{x={m_values[0]} y={m_values[1]}}} 14 | 15 | m_values[0] 16 | m_values[1] 17 | 18 | 19 | 20 | 21 | 22 | [{m_values[0]}] 23 | [{m_values[0]}, {m_values[1]}] 24 | [{m_values[0]}, {m_values[1]}, {m_values[2]}] 25 | {{size = {sizeof(m_values)/sizeof(m_values[0])}}} 26 | 27 | sizeof(m_values)/sizeof(m_values[0]) 28 | 29 | sizeof(m_values)/sizeof(m_values[0]) 30 | m_values 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_MultiArray.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | extent = {extent_list_,view(expand)} 6 | 7 | 8 | $T2 9 | extent_list_[$i] 10 | base_ 11 | 12 | 13 | 14 | 15 | 16 | extent = {extent_list_,view(expand)} 17 | 18 | 19 | 1 20 | extent_list_[0] 21 | ($T1*)base_ 22 | 23 | 24 | 25 | 26 | 27 | extent = {extent_list_,view(expand)} 28 | 29 | 30 | extent_list_[0] 31 | (base_ + origin_offset_ + stride_list_[0] * $i),[extent_list_[1]]na 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_MultiIndex.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | {{ size={(($T2*)this)->node_count} }} 12 | 13 | 14 | (($T2*)this)->node_count 15 | ((boost::multi_index::detail::sequenced_index_node<$T1>*)(member))->next_ 16 | next_ 17 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::sequenced_index_node<$T1>*)this)->space) 18 | 19 | 20 | 21 | 22 | 23 | 24 | {{ size={(($T3*)this)->node_count} }} 25 | 26 | 27 | 28 | (($T3*)this)->node_count 29 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parentcolor_&~uintptr_type(1)) 30 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 31 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 32 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 33 | 34 | 35 | 36 | (($T3*)this)->node_count 37 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parent_) 38 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 39 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 40 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 41 | 42 | 43 | 44 | 45 | 46 | 47 | {{ size={(($T2*)this)->node_count} }} 48 | 49 | (($T2*)this)->ptrs.capacity_ 50 | 51 | (($T2*)this)->node_count 52 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::random_access_index_node<$T1>*)((($T2*)this)->ptrs.spc.data_[$i]))->space) 53 | 54 | 55 | 56 | 57 | 58 | {{ size={(($T3*)this)->node_count} }} 59 | 60 | 61 | (($T3*)this)->buckets.spc.n_ - 1 62 | (($T3*)this)->max_load 63 | (($T3*)this)->mlf 64 | (($T3*)this)->eq_ 65 | (($T3*)this)->hash_ 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)((((($T3*)this)->buckets.spc.data_ + BucketIndex))->prior_) 77 | 78 | 79 | 80 | *reinterpret_cast<$T3::value_type*>(&(((boost::multi_index::detail::hashed_index_node<$T1,$T2>*)NodePtr))->space) 81 | 82 | 83 | 84 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)(NodePtr->next_) 85 | 86 | 87 | 88 | ++BucketIndex 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_PropertyTree.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {*static_cast<boost::property_tree::ptree::subs::base_container*>(m_children)} 5 | 6 | *static_cast<boost::property_tree::ptree::subs::base_container*>(m_children) 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_Rational.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {num}/{den} 8 | 9 | num 10 | den 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VS2015/Visualizers/boost_uBLAS.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ size={size_} }} 6 | 7 | size_ 8 | 9 | size_ 10 | data_ 11 | 12 | 13 | 14 | 15 | 16 | {data_} 17 | 18 | data_ 19 | 20 | 21 | 22 | 23 | {{ size={size_} }} 24 | 25 | size_ 26 | data_ 27 | 28 | 29 | 30 | 31 | {{ size={size_} filled={filled_} }} 32 | 33 | size_ 34 | capacity_ 35 | filled_ 36 | index_data_ 37 | value_data_ 38 | 39 | 40 | 41 | 42 | {{ size={size_} filled={filled_} }} 43 | 44 | size_ 45 | capacity_ 46 | sorted_ 47 | filled_ 48 | sorted_filled_ 49 | index_data_ 50 | value_data_ 51 | 52 | 53 | 54 | 55 | {{ size={size1_}x{size2_} }} 56 | 57 | data_.size_ 58 | 59 | Forward 60 | 2 61 | size1_ 62 | size2_ 63 | data_.data_ 64 | 65 | 66 | 67 | 68 | 69 | {{ size={size1_}x{size2_} }} 70 | 71 | size1_ 72 | size2_ 73 | 74 | 75 | 76 | 77 | {{ size={size1_}x{size2_} }} 78 | 79 | size1_ 80 | size2_ 81 | 82 | 83 | 84 | 85 | {{ size={size1_}x{size2_} }} 86 | 87 | size1_ 88 | size2_ 89 | value_ 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /VS2015/Visualizers/external.natjmc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VS2015/Visualizers/gsl.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | span_.storage_.data_ 5 | {span_.storage_.data_,[span_.storage_.size_]} 6 | span_.storage_.data_,[span_.storage_.size_] 7 | 8 | span_.storage_.size_ 9 | 10 | span_.storage_.size_ 11 | span_.storage_.data_ 12 | 13 | 14 | 15 | 16 | 17 | span_.storage_.data_ 18 | {span_.storage_.data_,[$T2]} 19 | span_.storage_.data_,[$T2] 20 | 21 | $T2 22 | 23 | $T2 24 | span_.storage_.data_ 25 | 26 | 27 | 28 | 29 | 30 | storage_.data_ 31 | {{ size={storage_.size_} }} 32 | 33 | storage_.size_ 34 | 35 | storage_.size_ 36 | storage_.data_ 37 | 38 | 39 | 40 | 41 | 42 | storage_.data_ 43 | {{ size={$T2} }} 44 | 45 | $T2 46 | 47 | $T2 48 | storage_.data_ 49 | 50 | 51 | 52 | 53 | 54 | ptr_ 55 | not_null {*ptr_} 56 | 57 | ptr_ 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /VS2015/Visualizers/wxWidgets.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {x},{y} 6 | 7 | x 8 | y 9 | 10 | 11 | 12 | 13 | {x}*{y} 14 | 15 | x 16 | y 17 | 18 | 19 | 20 | 21 | {x},{y} {width}*{height} 22 | 23 | x 24 | y 25 | width 26 | height 27 | 28 | 29 | 30 | 31 | {m_time.m_ll}ms 32 | 33 | 34 | 35 | 36 | {m_ll} 37 | 38 | 39 | 40 | 52 | 53 | 54 | 55 | {m_impl,su} 56 | m_impl,su 57 | 58 | m_impl 59 | 60 | 61 | 62 | 63 | 64 | {m_pchData,su} 65 | m_pchData,su 66 | 67 | m_pchData 68 | (*((wxStringData**)m_pchData) - 1)->nDataLength 69 | (*((wxStringData**)m_pchData) - 1)->nAllocLength 70 | (*((wxStringData**)m_pchData) - 1)->nRefs 71 | *((wxStringData**)m_pchData) - 1 72 | 73 | 74 | 75 | 76 | {{ size={m_nCount} }} 77 | 78 | m_nCount 79 | m_nSize 80 | m_autoSort 81 | 82 | m_nCount 83 | m_pItems 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | {{ size={m_nCount} }} 94 | 95 | m_nCount 96 | m_nSize 97 | 98 | m_nCount 99 | m_pItems 100 | 101 | 102 | 103 | 104 | 105 | {{ size={m_count} }} 106 | 107 | 108 | m_count 109 | m_nodeFirst 110 | m_next 111 | m_data 112 | 113 | 114 | 115 | 116 | 117 | {{ size={m_size} }} 118 | 119 | m_size 120 | m_capacity 121 | 122 | m_size 123 | m_objects 124 | 125 | 126 | 127 | 128 | 129 | empty 130 | wxDir {*((wchar_t**)&m_data->m_dirname),su} 131 | 132 | m_data 133 | 134 | 135 | 136 | 137 | Volume {*((wchar_t**)&m_volume),su}, Dirs {m_dirs}, Name {*((wchar_t**)&m_name),su}, Ext {*((wchar_t**)&m_ext),su} 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /VS2015/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/VS2015/readme.txt -------------------------------------------------------------------------------- /VS2015/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C++ Debugger Visualizers for VS2015 6 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML, TinyXML2 7 | https://github.com/KindDragon/CPPDebuggerVisualizers 8 | LICENSE.txt 9 | Changelog.txt 10 | cppVisualizerIcon.png 11 | cppVisualizerScreenshot.png 12 | C++, Debugger, Visualizer, Boost, wxWidgets, TinyXML2 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /VS2017/Visualizers/TinyXML.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [{type}] {value} 5 | value 6 | 7 | 8 | firstChild 9 | next 10 | *this 11 | 12 | 13 | 14 | 15 | [{type}] {value} 16 | value 17 | 18 | attributeSet 19 | 20 | firstChild 21 | next 22 | *this 23 | 24 | 25 | 26 | 27 | {name} = {value} 28 | 29 | 30 | 31 | 32 | 33 | 34 | sentinel.next 35 | next 36 | this 37 | 38 | 39 | 40 | 41 | [{rep_-<size}] {rep_-<str,s} 42 | rep_-<str,s 43 | 44 | -------------------------------------------------------------------------------- /VS2017/Visualizers/TinyXML2.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {start, [end-start]s} 5 | start, [end-start]s 6 | 7 | 8 | {value} 9 | value 10 | 11 | 12 | firstChild 13 | next 14 | this 15 | 16 | 17 | 18 | 19 | [CLOSED] {value} 20 | [CLOSING] {value} 21 | [OPEN] {value} 22 | value 23 | 24 | rootAttribute 25 | 26 | firstChild 27 | next 28 | this 29 | 30 | 31 | 32 | 33 | {name} = {value} 34 | 35 | 36 | this 37 | next 38 | this 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost.natstepfilter: -------------------------------------------------------------------------------- 1 | 2 | 3 | boost::forward<.*NoStepInto 4 | boost::move<.*NoStepInto 5 | boost::addressof<.*NoStepInto 6 | boost::foreach_detail_::.*NoStepInto 7 | boost::scoped_ptr<.*::operator->NoStepInto 8 | boost::shared_ptr<.*::operator->NoStepInto 9 | boost::scoped_array<.*::operator\[\]NoStepInto 10 | boost::shared_array<.*::operator\[\]NoStepInto 11 | 12 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_Geometry.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | {{x={m_values[0]} y={m_values[1]}}} 14 | 15 | m_values[0] 16 | m_values[1] 17 | 18 | 19 | 20 | 21 | 22 | [{m_values[0]}] 23 | [{m_values[0]}, {m_values[1]}] 24 | [{m_values[0]}, {m_values[1]}, {m_values[2]}] 25 | {{size = {sizeof(m_values)/sizeof(m_values[0])}}} 26 | 27 | sizeof(m_values)/sizeof(m_values[0]) 28 | 29 | sizeof(m_values)/sizeof(m_values[0]) 30 | m_values 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_MultiArray.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | extent = {extent_list_,view(expand)} 6 | 7 | 8 | $T2 9 | extent_list_[$i] 10 | base_ 11 | 12 | 13 | 14 | 15 | 16 | extent = {extent_list_,view(expand)} 17 | 18 | 19 | 1 20 | extent_list_[0] 21 | ($T1*)base_ 22 | 23 | 24 | 25 | 26 | 27 | extent = {extent_list_,view(expand)} 28 | 29 | 30 | extent_list_[0] 31 | (base_ + origin_offset_ + stride_list_[0] * $i),[extent_list_[1]]na 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_MultiIndex.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | {{ size={(($T2*)this)->node_count} }} 12 | 13 | 14 | (($T2*)this)->node_count 15 | ((boost::multi_index::detail::sequenced_index_node<$T1>*)(member))->next_ 16 | next_ 17 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::sequenced_index_node<$T1>*)this)->space) 18 | 19 | 20 | 21 | 22 | 23 | 24 | {{ size={(($T3*)this)->node_count} }} 25 | 26 | 27 | 28 | (($T3*)this)->node_count 29 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parentcolor_&~uintptr_type(1)) 30 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 31 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 32 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 33 | 34 | 35 | 36 | (($T3*)this)->node_count 37 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parent_) 38 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 39 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 40 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 41 | 42 | 43 | 44 | 45 | 46 | 47 | {{ size={(($T2*)this)->node_count} }} 48 | 49 | (($T2*)this)->ptrs.capacity_ 50 | 51 | (($T2*)this)->node_count 52 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::random_access_index_node<$T1>*)((($T2*)this)->ptrs.spc.data_[$i]))->space) 53 | 54 | 55 | 56 | 57 | 58 | {{ size={(($T3*)this)->node_count} }} 59 | 60 | 61 | (($T3*)this)->buckets.spc.n_ - 1 62 | (($T3*)this)->max_load 63 | (($T3*)this)->mlf 64 | (($T3*)this)->eq_ 65 | (($T3*)this)->hash_ 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)((((($T3*)this)->buckets.spc.data_ + BucketIndex))->prior_) 77 | 78 | 79 | 80 | *reinterpret_cast<$T3::value_type*>(&(((boost::multi_index::detail::hashed_index_node<$T1,$T2>*)NodePtr))->space) 81 | 82 | 83 | 84 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)(NodePtr->next_) 85 | 86 | 87 | 88 | ++BucketIndex 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_PropertyTree.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {m_data}:{*static_cast<subs::base_container*>(this->m_children)} 8 | {*static_cast<subs::base_container*>(this->m_children)} 9 | 10 | m_data 11 | 12 | *static_cast<subs::base_container*>(this->m_children),view(ptree) 13 | *this,view(raw) 14 | 15 | 16 | 17 | 18 | 19 | {m_data}:{*static_cast<subs::base_container*>(m_children)} 20 | {*static_cast<subs::base_container*>(m_children)} 21 | 22 | m_data 23 | static_cast<subs::base_container*>(m_children) 24 | 25 | 26 | 27 | 28 | 29 | {{ size={(($T2*)this)->node_count} }} 30 | 31 | 32 | (($T2*)this)->node_count 33 | ((boost::multi_index::detail::sequenced_index_node<$T1>*)(member))->next_ 34 | next_ 35 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::sequenced_index_node<$T1>*)this)->space),view(ptree) 36 | 37 | 38 | 39 | 40 | 41 | 42 | {second} 43 | 44 | first 45 | second 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_Rational.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {num}/{den} 8 | 9 | num 10 | den 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VS2017/Visualizers/boost_uBLAS.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ size={size_} }} 6 | 7 | size_ 8 | 9 | size_ 10 | data_ 11 | 12 | 13 | 14 | 15 | 16 | {data_} 17 | 18 | data_ 19 | 20 | 21 | 22 | 23 | {{ size={size_} }} 24 | 25 | size_ 26 | data_ 27 | 28 | 29 | 30 | 31 | {{ size={size_} filled={filled_} }} 32 | 33 | size_ 34 | capacity_ 35 | filled_ 36 | index_data_ 37 | value_data_ 38 | 39 | 40 | 41 | 42 | {{ size={size_} filled={filled_} }} 43 | 44 | size_ 45 | capacity_ 46 | sorted_ 47 | filled_ 48 | sorted_filled_ 49 | index_data_ 50 | value_data_ 51 | 52 | 53 | 54 | 55 | {{ size={size1_}x{size2_} }} 56 | 57 | data_.size_ 58 | 59 | Forward 60 | 2 61 | size1_ 62 | size2_ 63 | data_.data_ 64 | 65 | 66 | 67 | 68 | 69 | {{ size={size1_}x{size2_} }} 70 | 71 | size1_ 72 | size2_ 73 | 74 | 75 | 76 | 77 | {{ size={size1_}x{size2_} }} 78 | 79 | size1_ 80 | size2_ 81 | 82 | 83 | 84 | 85 | {{ size={size1_}x{size2_} }} 86 | 87 | size1_ 88 | size2_ 89 | value_ 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /VS2017/Visualizers/external.natjmc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VS2017/Visualizers/gsl.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | span_.storage_.data_ 5 | {span_.storage_.data_,[span_.storage_.size_]} 6 | span_.storage_.data_,[span_.storage_.size_] 7 | 8 | span_.storage_.size_ 9 | 10 | span_.storage_.size_ 11 | span_.storage_.data_ 12 | 13 | 14 | 15 | 16 | 17 | span_.storage_.data_ 18 | {span_.storage_.data_,[$T2]} 19 | span_.storage_.data_,[$T2] 20 | 21 | $T2 22 | 23 | $T2 24 | span_.storage_.data_ 25 | 26 | 27 | 28 | 29 | 30 | storage_.data_ 31 | {{ size={storage_.size_} }} 32 | 33 | storage_.size_ 34 | 35 | storage_.size_ 36 | storage_.data_ 37 | 38 | 39 | 40 | 41 | 42 | storage_.data_ 43 | {{ size={$T2} }} 44 | 45 | $T2 46 | 47 | $T2 48 | storage_.data_ 49 | 50 | 51 | 52 | 53 | 54 | ptr_ 55 | not_null {*ptr_} 56 | 57 | ptr_ 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /VS2017/Visualizers/icu.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {fUnion.fStackFields.fBuffer,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na} 15 | 16 | 17 | 18 | 19 | {fUnion.fFields.fArray,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na} 20 | 21 | 22 | 23 | 24 | {fUnion.fFields.fArray,[fUnion.fFields.fLength]na} 25 | 26 | 27 | 28 | 29 | 30 | fUnion.fStackFields.fBuffer,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na 31 | 32 | 33 | 34 | 35 | fUnion.fFields.fArray,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na 36 | 37 | 38 | 39 | 40 | fUnion.fFields.fArray,[fUnion.fFields.fLength]na 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /VS2017/Visualizers/wxWidgets.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {x},{y} 6 | 7 | x 8 | y 9 | 10 | 11 | 12 | 13 | {x}*{y} 14 | 15 | x 16 | y 17 | 18 | 19 | 20 | 21 | {x},{y} {width}*{height} 22 | 23 | x 24 | y 25 | width 26 | height 27 | 28 | 29 | 30 | 31 | {m_time.m_ll}ms 32 | 33 | 34 | 35 | 36 | {m_ll} 37 | 38 | 39 | 40 | 52 | 53 | 54 | 55 | {m_impl,su} 56 | m_impl,su 57 | 58 | m_impl 59 | 60 | 61 | 62 | 63 | 64 | {m_pchData,su} 65 | m_pchData,su 66 | 67 | m_pchData 68 | (*((wxStringData**)m_pchData) - 1)->nDataLength 69 | (*((wxStringData**)m_pchData) - 1)->nAllocLength 70 | (*((wxStringData**)m_pchData) - 1)->nRefs 71 | *((wxStringData**)m_pchData) - 1 72 | 73 | 74 | 75 | 76 | {{ size={m_nCount} }} 77 | 78 | m_nCount 79 | m_nSize 80 | m_autoSort 81 | 82 | m_nCount 83 | m_pItems 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | {{ size={m_nCount} }} 94 | 95 | m_nCount 96 | m_nSize 97 | 98 | m_nCount 99 | m_pItems 100 | 101 | 102 | 103 | 104 | 105 | {{ size={m_count} }} 106 | 107 | 108 | m_count 109 | m_nodeFirst 110 | m_next 111 | m_data 112 | 113 | 114 | 115 | 116 | 117 | {{ size={m_size} }} 118 | 119 | m_size 120 | m_capacity 121 | 122 | m_size 123 | m_objects 124 | 125 | 126 | 127 | 128 | 129 | empty 130 | wxDir {*((wchar_t**)&m_data->m_dirname),su} 131 | 132 | m_data 133 | 134 | 135 | 136 | 137 | Volume {*((wchar_t**)&m_volume),su}, Dirs {m_dirs}, Name {*((wchar_t**)&m_name),su}, Ext {*((wchar_t**)&m_ext),su} 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /VS2017/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /VS2017/readme.txt: -------------------------------------------------------------------------------- 1 | VS2017 Tools > Options... > Debugging > Output Window > Natvis diagnostic messages = Verbose 2 | -------------------------------------------------------------------------------- /VS2017/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C++ Debugger Visualizers for VS2017 6 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML, TinyXML2 7 | https://github.com/KindDragon/CPPDebuggerVisualizers 8 | LICENSE.txt 9 | Changelog.txt 10 | cppVisualizerIcon.png 11 | cppVisualizerScreenshot.png 12 | C++, Debugger, Visualizer, Boost, wxWidgets, TinyXML2 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /VS2019/Visualizers/TinyXML.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [{type}] {value} 5 | value 6 | 7 | 8 | firstChild 9 | next 10 | *this 11 | 12 | 13 | 14 | 15 | [{type}] {value} 16 | value 17 | 18 | attributeSet 19 | 20 | firstChild 21 | next 22 | *this 23 | 24 | 25 | 26 | 27 | {name} = {value} 28 | 29 | 30 | 31 | 32 | 33 | 34 | sentinel.next 35 | next 36 | this 37 | 38 | 39 | 40 | 41 | [{rep_-<size}] {rep_-<str,s} 42 | rep_-<str,s 43 | 44 | -------------------------------------------------------------------------------- /VS2019/Visualizers/TinyXML2.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {start, [end-start]s} 5 | start, [end-start]s 6 | 7 | 8 | {value} 9 | value 10 | 11 | 12 | firstChild 13 | next 14 | this 15 | 16 | 17 | 18 | 19 | [CLOSED] {value} 20 | [CLOSING] {value} 21 | [OPEN] {value} 22 | value 23 | 24 | rootAttribute 25 | 26 | firstChild 27 | next 28 | this 29 | 30 | 31 | 32 | 33 | {name} = {value} 34 | 35 | 36 | this 37 | next 38 | this 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost.natstepfilter: -------------------------------------------------------------------------------- 1 | 2 | 3 | boost::forward<.*NoStepInto 4 | boost::move<.*NoStepInto 5 | boost::addressof<.*NoStepInto 6 | boost::foreach_detail_::.*NoStepInto 7 | boost::scoped_ptr<.*::operator->NoStepInto 8 | boost::shared_ptr<.*::operator->NoStepInto 9 | boost::scoped_array<.*::operator\[\]NoStepInto 10 | boost::shared_array<.*::operator\[\]NoStepInto 11 | 12 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_Geometry.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | {{x={m_values[0]} y={m_values[1]}}} 14 | 15 | m_values[0] 16 | m_values[1] 17 | 18 | 19 | 20 | 21 | 22 | [{m_values[0]}] 23 | [{m_values[0]}, {m_values[1]}] 24 | [{m_values[0]}, {m_values[1]}, {m_values[2]}] 25 | {{size = {sizeof(m_values)/sizeof(m_values[0])}}} 26 | 27 | sizeof(m_values)/sizeof(m_values[0]) 28 | 29 | sizeof(m_values)/sizeof(m_values[0]) 30 | m_values 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_MultiArray.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | extent = {extent_list_,view(expand)} 6 | 7 | 8 | $T2 9 | extent_list_[$i] 10 | base_ 11 | 12 | 13 | 14 | 15 | 16 | extent = {extent_list_,view(expand)} 17 | 18 | 19 | 1 20 | extent_list_[0] 21 | ($T1*)base_ 22 | 23 | 24 | 25 | 26 | 27 | extent = {extent_list_,view(expand)} 28 | 29 | 30 | extent_list_[0] 31 | (base_ + origin_offset_ + stride_list_[0] * $i),[extent_list_[1]]na 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_MultiIndex.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | {{ size={(($T2*)this)->node_count} }} 12 | 13 | 14 | (($T2*)this)->node_count 15 | ((boost::multi_index::detail::sequenced_index_node<$T1>*)(member))->next_ 16 | next_ 17 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::sequenced_index_node<$T1>*)this)->space) 18 | 19 | 20 | 21 | 22 | 23 | 24 | {{ size={(($T3*)this)->node_count} }} 25 | 26 | 27 | 28 | (($T3*)this)->node_count 29 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parentcolor_&~uintptr_type(1)) 30 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 31 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 32 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 33 | 34 | 35 | 36 | (($T3*)this)->node_count 37 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(((boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)(member))->parent_) 38 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)left_ 39 | (boost::multi_index::detail::ordered_index_node_trampoline<$T1,$T2>*)right_ 40 | *reinterpret_cast<$T3::value_type*>(&((boost::multi_index::detail::ordered_index_node<$T1,$T2>*)this)->space) 41 | 42 | 43 | 44 | 45 | 46 | 47 | {{ size={(($T2*)this)->node_count} }} 48 | 49 | (($T2*)this)->ptrs.capacity_ 50 | 51 | (($T2*)this)->node_count 52 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::random_access_index_node<$T1>*)((($T2*)this)->ptrs.spc.data_[$i]))->space) 53 | 54 | 55 | 56 | 57 | 58 | {{ size={(($T3*)this)->node_count} }} 59 | 60 | 61 | (($T3*)this)->buckets.spc.n_ - 1 62 | (($T3*)this)->max_load 63 | (($T3*)this)->mlf 64 | (($T3*)this)->eq_ 65 | (($T3*)this)->hash_ 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)((((($T3*)this)->buckets.spc.data_ + BucketIndex))->prior_) 77 | 78 | 79 | 80 | *reinterpret_cast<$T3::value_type*>(&(((boost::multi_index::detail::hashed_index_node<$T1,$T2>*)NodePtr))->space) 81 | 82 | 83 | 84 | NodePtr = (boost::multi_index::detail::hashed_index_node_trampoline<$T1>*)(NodePtr->next_) 85 | 86 | 87 | 88 | ++BucketIndex 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_PropertyTree.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {m_data}:{*static_cast<subs::base_container*>(this->m_children)} 8 | {*static_cast<subs::base_container*>(this->m_children)} 9 | 10 | m_data 11 | 12 | *static_cast<subs::base_container*>(this->m_children),view(ptree) 13 | *this,view(raw) 14 | 15 | 16 | 17 | 18 | 19 | {m_data}:{*static_cast<subs::base_container*>(m_children)} 20 | {*static_cast<subs::base_container*>(m_children)} 21 | 22 | m_data 23 | static_cast<subs::base_container*>(m_children) 24 | 25 | 26 | 27 | 28 | 29 | {{ size={(($T2*)this)->node_count} }} 30 | 31 | 32 | (($T2*)this)->node_count 33 | ((boost::multi_index::detail::sequenced_index_node<$T1>*)(member))->next_ 34 | next_ 35 | *reinterpret_cast<$T2::value_type*>(&((boost::multi_index::detail::sequenced_index_node<$T1>*)this)->space),view(ptree) 36 | 37 | 38 | 39 | 40 | 41 | 42 | {second} 43 | 44 | first 45 | second 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_Rational.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {num}/{den} 8 | 9 | num 10 | den 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /VS2019/Visualizers/boost_uBLAS.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ size={size_} }} 6 | 7 | size_ 8 | 9 | size_ 10 | data_ 11 | 12 | 13 | 14 | 15 | 16 | {data_} 17 | 18 | data_ 19 | 20 | 21 | 22 | 23 | {{ size={size_} }} 24 | 25 | size_ 26 | data_ 27 | 28 | 29 | 30 | 31 | {{ size={size_} filled={filled_} }} 32 | 33 | size_ 34 | capacity_ 35 | filled_ 36 | index_data_ 37 | value_data_ 38 | 39 | 40 | 41 | 42 | {{ size={size_} filled={filled_} }} 43 | 44 | size_ 45 | capacity_ 46 | sorted_ 47 | filled_ 48 | sorted_filled_ 49 | index_data_ 50 | value_data_ 51 | 52 | 53 | 54 | 55 | {{ size={size1_}x{size2_} }} 56 | 57 | data_.size_ 58 | 59 | Forward 60 | 2 61 | size1_ 62 | size2_ 63 | data_.data_ 64 | 65 | 66 | 67 | 68 | 69 | {{ size={size1_}x{size2_} }} 70 | 71 | size1_ 72 | size2_ 73 | 74 | 75 | 76 | 77 | {{ size={size1_}x{size2_} }} 78 | 79 | size1_ 80 | size2_ 81 | 82 | 83 | 84 | 85 | {{ size={size1_}x{size2_} }} 86 | 87 | size1_ 88 | size2_ 89 | value_ 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /VS2019/Visualizers/external.natjmc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VS2019/Visualizers/gsl.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | span_.storage_.data_ 5 | {span_.storage_.data_,[span_.storage_.size_]} 6 | span_.storage_.data_,[span_.storage_.size_] 7 | 8 | span_.storage_.size_ 9 | 10 | span_.storage_.size_ 11 | span_.storage_.data_ 12 | 13 | 14 | 15 | 16 | 17 | span_.storage_.data_ 18 | {span_.storage_.data_,[$T2]} 19 | span_.storage_.data_,[$T2] 20 | 21 | $T2 22 | 23 | $T2 24 | span_.storage_.data_ 25 | 26 | 27 | 28 | 29 | 30 | storage_.data_ 31 | {{ size={storage_.size_} }} 32 | 33 | storage_.size_ 34 | 35 | storage_.size_ 36 | storage_.data_ 37 | 38 | 39 | 40 | 41 | 42 | storage_.data_ 43 | {{ size={$T2} }} 44 | 45 | $T2 46 | 47 | $T2 48 | storage_.data_ 49 | 50 | 51 | 52 | 53 | 54 | ptr_ 55 | not_null {*ptr_} 56 | 57 | ptr_ 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /VS2019/Visualizers/icu.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {fUnion.fStackFields.fBuffer,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na} 15 | 16 | 17 | 18 | 19 | {fUnion.fFields.fArray,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na} 20 | 21 | 22 | 23 | 24 | {fUnion.fFields.fArray,[fUnion.fFields.fLength]na} 25 | 26 | 27 | 28 | 29 | 30 | fUnion.fStackFields.fBuffer,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na 31 | 32 | 33 | 34 | 35 | fUnion.fFields.fArray,[fUnion.fFields.fLengthAndFlags >> kLengthShift]na 36 | 37 | 38 | 39 | 40 | fUnion.fFields.fArray,[fUnion.fFields.fLength]na 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /VS2019/Visualizers/wxWidgets.natvis: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {x},{y} 6 | 7 | x 8 | y 9 | 10 | 11 | 12 | 13 | {x}*{y} 14 | 15 | x 16 | y 17 | 18 | 19 | 20 | 21 | {x},{y} {width}*{height} 22 | 23 | x 24 | y 25 | width 26 | height 27 | 28 | 29 | 30 | 31 | {m_time.m_ll}ms 32 | 33 | 34 | 35 | 36 | {m_ll} 37 | 38 | 39 | 40 | 52 | 53 | 54 | 55 | {m_impl,su} 56 | m_impl,su 57 | 58 | m_impl 59 | 60 | 61 | 62 | 63 | 64 | {m_pchData,su} 65 | m_pchData,su 66 | 67 | m_pchData 68 | (*((wxStringData**)m_pchData) - 1)->nDataLength 69 | (*((wxStringData**)m_pchData) - 1)->nAllocLength 70 | (*((wxStringData**)m_pchData) - 1)->nRefs 71 | *((wxStringData**)m_pchData) - 1 72 | 73 | 74 | 75 | 76 | {{ size={m_nCount} }} 77 | 78 | m_nCount 79 | m_nSize 80 | m_autoSort 81 | 82 | m_nCount 83 | m_pItems 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | {{ size={m_nCount} }} 94 | 95 | m_nCount 96 | m_nSize 97 | 98 | m_nCount 99 | m_pItems 100 | 101 | 102 | 103 | 104 | 105 | {{ size={m_count} }} 106 | 107 | 108 | m_count 109 | m_nodeFirst 110 | m_next 111 | m_data 112 | 113 | 114 | 115 | 116 | 117 | {{ size={m_size} }} 118 | 119 | m_size 120 | m_capacity 121 | 122 | m_size 123 | m_objects 124 | 125 | 126 | 127 | 128 | 129 | empty 130 | wxDir {*((wchar_t**)&m_data->m_dirname),su} 131 | 132 | m_data 133 | 134 | 135 | 136 | 137 | Volume {*((wchar_t**)&m_volume),su}, Dirs {m_dirs}, Name {*((wchar_t**)&m_name),su}, Ext {*((wchar_t**)&m_ext),su} 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /VS2019/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /VS2019/readme.txt: -------------------------------------------------------------------------------- 1 | VS2019 Tools > Options... > Debugging > Output Window > Natvis diagnostic messages = Verbose 2 | -------------------------------------------------------------------------------- /VS2019/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C++ Debugger Visualizers for VS2019 6 | C++ Debugger Visualizers for Boost, wxWidgets, TinyXML, TinyXML2 7 | https://github.com/KindDragon/CPPDebuggerVisualizers 8 | LICENSE.txt 9 | Changelog.txt 10 | cppVisualizerIcon.png 11 | cppVisualizerScreenshot.png 12 | C++, Debugger, Visualizer, Boost, wxWidgets, TinyXML2 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 2 | msbuild.exe CPPDebuggerVisualizers.VS2012.sln /t:Build /p:Configuration=Release;"Platform=Mixed Platforms" 3 | msbuild.exe CPPDebuggerVisualizers.VS2013.sln /t:Build /p:Configuration=Release;"Platform=Mixed Platforms" 4 | msbuild.exe CPPDebuggerVisualizers.VS2015.sln /t:Build /p:Configuration=Release;"Platform=Mixed Platforms" 5 | -------------------------------------------------------------------------------- /cppVisualizerIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/cppVisualizerIcon.png -------------------------------------------------------------------------------- /cppVisualizerScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KindDragon/CPPDebuggerVisualizers/11e0f2277d151906093dfd018dcae7dd6173fe65/cppVisualizerScreenshot.png -------------------------------------------------------------------------------- /format_type.py: -------------------------------------------------------------------------------- 1 | '''Tools that format C++ type for reading''' 2 | cpp_type = input("Please enter type: ") 3 | if not cpp_type: 4 | cpp_type = "boost::gil::variant,boost::mpl::range_c > >,0,std::allocator >,boost::gil::image,boost::mpl::range_c > >,0,std::allocator >,boost::gil::image,boost::mpl::range_c > >,0,std::allocator >,boost::gil::image,boost::mpl::range_c > >,0,std::allocator >,boost::gil::image,boost::mpl::range_c > >,0,std::allocator >,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na,boost::mpl::na> >" 5 | print() 6 | indent = 0 7 | for c in cpp_type: 8 | if c == "<": 9 | print(c) 10 | indent+=1 11 | print(indent*" ", end="") 12 | elif c == ">": 13 | indent-=1 14 | print() 15 | print(indent*" " + c, end="") 16 | elif c == ",": 17 | print(c, end="") 18 | print() 19 | print(indent*" ", end="") 20 | else: 21 | print(c, end="") 22 | --------------------------------------------------------------------------------