From b6f092d8e631cab1db4e650429d546beac94dcd1 Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Fri, 5 Mar 2021 16:24:03 -0800 Subject: [PATCH 01/15] added stl.natvis --- README.md | 11 + stl/STL.natvis | 1596 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1607 insertions(+) create mode 100644 stl/STL.natvis diff --git a/README.md b/README.md index f81f691f560..15004c47262 100644 --- a/README.md +++ b/README.md @@ -362,6 +362,16 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by * taking a very long time to run * failing or passing for the incorrect reason +# Editing And Testing The Debugger Visualizer + +### Modify The Visualizer + +To modify how elements look on the debugger open the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documantation][]. + +### Test your changes. + +After making your changes overwrithe the file under %Visual Studio instalation path%\Common7\Packages\Debugger\Visualizers\stl.natvis (is remcomended to make a backup of the file). After overwriting the file you should be able to see your chanes in a Visual Studio debugging sesion. + # Block Diagram The STL is built atop other compiler support libraries that ship with Windows and Visual Studio, like the UCRT, @@ -423,3 +433,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [opencode@microsoft.com]: mailto:opencode@microsoft.com [redistributables]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads [vcpkg]: https://github.com/microsoft/vcpkg +[natvis documantation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2019 diff --git a/stl/STL.natvis b/stl/STL.natvis new file mode 100644 index 00000000000..029d9c5aa34 --- /dev/null +++ b/stl/STL.natvis @@ -0,0 +1,1596 @@ + + + + + + {*($T1 *)this} + + *($T1 *)this + + + + + + {_Myval1} + + _Myval1 + + + + + + + null + + + + + + {{ size={_Last - _First} }} + + + _Last - _First + _First + + + + + + + {first}, {second} + ({first}, {second}) + + first + second + + + + + + + ({*this,view(noparens)}) + + + + + {_Myfirst._Val} + ({*this,view(noparens)}) + + _Myfirst._Val + + + + + {_Myfirst._Val}, {((_Mybase *) this)->_Myfirst._Val} + ({*this,view(noparens)}) + + _Myfirst._Val + ((_Mybase *) this)->_Myfirst._Val + + + + + {_Myfirst._Val}, {((_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase *) this)->_Myfirst._Val} + ({*this,view(noparens)}) + + _Myfirst._Val + ((_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase *) this)->_Myfirst._Val + + + + + {_Myfirst._Val}, {((_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val} + ({*this,view(noparens)}) + + _Myfirst._Val + ((_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val + + + + + {_Myfirst._Val}, {((_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val} + ({*this,view(noparens)}) + + _Myfirst._Val + ((_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val + + + + + {_Myfirst._Val}, {((_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val}, {((_Mybase::_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val}, {*((_Mybase::_Mybase::_Mybase::_Mybase::_Mybase *) this),view(noparens)} + ({*this,view(noparens)}) + + _Myfirst._Val + ((_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val + ((_Mybase::_Mybase::_Mybase::_Mybase *) this)->_Myfirst._Val + Next five elements: + *((_Mybase::_Mybase::_Mybase::_Mybase::_Mybase *) this) + + + + + + nullopt + + + + + + nullopt + {value()} + + value() + + + + + + {_Elem} + + + + + [valueless_by_exception] + {{ index=0, value={_Head} }} + {{ index=1, value={_Tail._Head} }} + {{ index=2, value={_Tail._Tail._Head} }} + {{ index=3, value={_Tail._Tail._Tail._Head} }} + {{ index=4, value={_Tail._Tail._Tail._Tail._Head} }} + {{ index=5, value={_Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=6, value={_Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=7, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=8, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=9, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=10, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=11, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=12, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=13, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=14, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=15, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=16, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=17, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=18, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=19, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=20, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=21, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=22, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=23, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=24, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=25, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=26, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=27, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=28, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=29, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=30, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + {{ index=31, value={_Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head} }} + + index() + _Head + _Tail._Head + _Tail._Tail._Head + _Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + _Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Tail._Head + + + + + monostate + + + + + + + + + + + [empty] + [not empty (Small)] + [not empty (Large)] + + + {has_value()} + + + {type()} + + + (Small/Trivial Object) + + + (Small Object) + + + (Dynamic Allocation) + + + + + + + {{ size={$T1} }} + + + $T1 + (_Array[$i / _Bitsperword] >> ($i % _Bitsperword)) & 1,d + + + + + + {(_Pbitset->_Array[_Mypos / _Pbitset->_Bitsperword] >> (_Mypos % _Pbitset->_Bitsperword)) & 1,d} + + _Pbitset + _Mypos + + + + + + allocator + + + + + + default_delete + + + + + + _Myptr + empty + unique_ptr {*_Myptr} + + _Myptr + + + + + + _Mypair._Myval2 + empty + unique_ptr {*_Mypair._Myval2} + + _Mypair._Myval2 + _Mypair + + + + + + default + + _Ptr + + + + + + custom deleter + + _Ptr + _Dtor + + + + + + custom deleter + + _Mypair._Myval2 + _Mypair + + + + + + custom deleter, custom allocator + + _Ptr + _Dtor + _Myal + + + + + + custom deleter, custom allocator + + _Mypair._Myval2._Myval2 + _Mypair + _Mypair._Myval2 + + + + + make_shared + + ($T1 *) &_Storage + + + + + + allocate_shared + + ($T1 *) &_Storage + _Myal + + + + + + allocate_shared + + ($T1 *) &_Mypair._Myval2 + _Mypair + + + + + + custom deleter + + _Mypair._Myval2 + _Mypair + + + + + + custom deleter, custom allocator + + _Mypair._Myval2._Myval2 + _Mypair + _Mypair._Myval2 + + + + + _Ptr + empty + nullptr + {*_Ptr} + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong ref] [{*_Rep}] + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong ref, {_Rep->_Weaks - 1} weak ref] [{*_Rep}] + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong ref, {_Rep->_Weaks - 1} weak refs] [{*_Rep}] + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong refs] [{*_Rep}] + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong refs, {_Rep->_Weaks - 1} weak ref] [{*_Rep}] + shared_ptr {*this,view(ptr)} [{_Rep->_Uses} strong refs, {_Rep->_Weaks - 1} weak refs] [{*_Rep}] + + _Ptr + *_Rep + + + + + empty + nullptr + {*_Ptr} + expired [{_Rep->_Weaks} weak ref] [{*_Rep}] + expired [{_Rep->_Weaks} weak refs] [{*_Rep}] + weak_ptr {*this,view(ptr)} [{_Rep->_Uses} strong ref, {_Rep->_Weaks - 1} weak ref] [{*_Rep}] + weak_ptr {*this,view(ptr)} [{_Rep->_Uses} strong ref, {_Rep->_Weaks - 1} weak refs] [{*_Rep}] + weak_ptr {*this,view(ptr)} [{_Rep->_Uses} strong refs, {_Rep->_Weaks - 1} weak ref] [{*_Rep}] + weak_ptr {*this,view(ptr)} [{_Rep->_Uses} strong refs, {_Rep->_Weaks - 1} weak refs] [{*_Rep}] + + _Ptr + *_Rep + + + + + + + {*_Ptr} + + _Ptr + + + + + + {_Object} + + + + + + {_Callee} + + _Callee + + + + + + {*_Ptr} + + _Ptr + + + + + plus<> + minus<> + multiplies<> + divides<> + modulus<> + negate<> + equal_to<> + not_equal_to<> + greater<> + less<> + greater_equal<> + less_equal<> + logical_and<> + logical_or<> + logical_not<> + bit_and<> + bit_or<> + bit_xor<> + bit_not<> + + + + plus + + + + + minus + + + + + multiplies + + + + + divides + + + + + modulus + + + + + negate + + + + + equal_to + + + + + not_equal_to + + + + + greater + + + + + less + + + + + greater_equal + + + + + less_equal + + + + + logical_and + + + + + logical_or + + + + + logical_not + + + + + bit_and + + + + + bit_or + + + + + bit_xor + + + + + bit_not + + + + + + not1({_Functor}) + + _Functor + + + + + not2({_Functor}) + + _Functor + + + + + + _{$T1,d} + + + + + + bind({_Myfun}, {_Mybargs,view(noparens)}) + + _Myfun + _Mybargs + + + + + + bind({_Mypair}, {_Mypair._Myval2,view(noparens)}) + + _Mypair + _Mypair._Myval2 + + + + + + + mem_fn({_Callee._Object}) + + + + + + mem_fn({_Pm}) + + + + + + + {_Callee._Object} + + _Callee._Object + _Myal + + + + + + {_Mypair._Myval2} + + _Mypair._Myval2 + _Mypair + + + + + {_Callee} + + _Callee + + + + + + empty + {*_Impl} + + *_Impl + + + + + + empty + {*_Mystorage._Ptrs[_EEN_IMPL]} + + *_Mystorage._Ptrs[_EEN_IMPL] + + + + + + hash + + + + + + {_MyRep} nanoseconds + + + + + {_MyRep} microseconds + + + + + {_MyRep} milliseconds + + + + + {_MyRep} seconds + + + + + {_MyRep} minutes + + + + + {_MyRep} hours + + + + + + + {_Bx._Buf,na} + {_Bx._Ptr,na} + _Bx._Buf,na + _Bx._Ptr,na + + _Mysize + _Myres + + _Mysize + _Bx._Buf + _Bx._Ptr + + + + + + + + {_Bx._Buf,su} + {_Bx._Ptr,su} + _Bx._Buf,su + _Bx._Ptr,su + + _Mysize + _Myres + + _Mysize + _Bx._Buf + _Bx._Ptr + + + + + + + + + + + + + {_Mypair._Myval2._Bx._Buf,na} + {_Mypair._Myval2._Bx._Ptr,na} + _Mypair._Myval2._Bx._Buf,na + _Mypair._Myval2._Bx._Ptr,na + + size() + capacity() + _Mypair + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Bx._Buf + _Mypair._Myval2._Bx._Ptr + + + + + + + + + + + + + + + {_Mypair._Myval2._Bx._Buf,su} + {_Mypair._Myval2._Bx._Ptr,su} + _Mypair._Myval2._Bx._Buf,su + _Mypair._Myval2._Bx._Ptr,su + + size() + capacity() + _Mypair + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Bx._Buf + _Mypair._Myval2._Bx._Ptr + + + + + + + + + + + + {_Mypair._Myval2._Bx._Buf,s32} + {_Mypair._Myval2._Bx._Ptr,s32} + _Mypair._Myval2._Bx._Buf,s32 + _Mypair._Myval2._Bx._Ptr,s32 + + size() + capacity() + _Mypair + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Bx._Buf + _Mypair._Myval2._Bx._Ptr + + + + + + + _Ptr,na + + _Ptr + + + + + + + + + + _Ptr,su + + _Ptr + + + + + + _Ptr,s32 + + _Ptr + + + + + + + {_Mydata,[_Mysize]} + + size() + + size() + data() + + + + + + + _Myptr + + _Myptr + + + + + + _Mydata + _Myoff + + _Mydata + _Myoff + _Myoff + _Mydata,[_Mysize] + + + + + + {{ size={$T2} }} + + + $T2 + _Elems + + + + + + + + _Ptr,na + + _Ptr + + + + + + + _Ptr + _Idx + {_Ptr[_Idx]} + end + + _Ptr + _Idx + + + + + + {{ size={_Mysize} }} + + + _Mysize + _Map[(($i + _Myoff) / _EEN_DS) % _Mapsize][($i + _Myoff) % _EEN_DS] + + + + + + + {{ size={_Mypair._Myval2._Mysize} }} + + _Mypair + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Map[(($i + _Mypair._Myval2._Myoff) / _EEN_DS) % _Mypair._Myval2._Mapsize][($i + _Mypair._Myval2._Myoff) % _EEN_DS] + + + + + + + {((_Mydeque_t *)_Myproxy->_Mycont)->_Map[(_Myoff / _EEN_DS) % ((_Mydeque_t *)_Myproxy->_Mycont)->_Mapsize][_Myoff % _EEN_DS]} + end + + _Myoff - ((_Mydeque_t *)_Myproxy->_Mycont)->_Myoff + &((_Mydeque_t *)_Myproxy->_Mycont)->_Map[(_Myoff / _EEN_DS) % ((_Mydeque_t *)_Myproxy->_Mycont)->_Mapsize][_Myoff % _EEN_DS] + + + + + + + empty + non-empty + + + _Myhead + _Next + _Myval + + + + + + + empty + non-empty + + _Mypair + + _Mypair._Myval2._Myhead + _Next + _Myval + + + + + + + &_Ptr->_Myval,na + end + {**this} + + + + + + {{ size={_Mysize} }} + + + _Mysize + _Myhead->_Next + _Next + _Myval + + + + + + + {{ size={_Mypair._Myval2._Mysize} }} + + _Mypair + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Myhead->_Next + _Next + _Myval + + + + + + + &_Ptr->_Myval,na + + + + + + {{ size={_Mysize} }} + + (_Myvec._Myend - _Myvec._Myfirst) * _EEN_VBITS + + _Mysize + (bool)((_Myvec._Myfirst[$i / _EEN_VBITS] >> ($i % _EEN_VBITS)) & 1) + + + + + + + + + {{ size={size()} }} + + capacity() + _Myvec._Mypair + + _Mysize + (bool)((_Myvec._Mypair._Myval2._Myfirst[$i / _EEN_VBITS] >> ($i % _EEN_VBITS)) & 1) + + + + + + + + {(bool)((*_Myptr >> _Myoff) & 1)} + + _Myptr + _Myoff + + + + + + + {{ size={_Mylast - _Myfirst} }} + + _Myend - _Myfirst + + _Mylast - _Myfirst + _Myfirst + + + + + + + + + {{ size={size()} }} + + capacity() + _Mypair + + size() + _Mypair._Myval2._Myfirst + + + + + + + _Ptr,na + + _Ptr + + + + + + + + + + {{ size={_Mysize} }} + + + _Mysize + _Myhead->_Parent + _Left + _Right + _Myval + + + + + + + + + + {{ size={_Mypair._Myval2._Myval2._Mysize} }} + + _Mypair + _Mypair._Myval2 + + _Mypair._Myval2._Myval2._Mysize + _Mypair._Myval2._Myval2._Myhead->_Parent + _Left + _Right + _Myval + + + + + + + + {{ size={_Mypair._Myval2._Myval2._Mysize} }} + + _Mypair + _Mypair._Myval2 + + _Mypair._Myval2._Myval2._Mysize + _Mypair._Myval2._Myval2._Myhead->_Parent + _Left + _Right + _Myval,view(MapHelper) + + + + + + {second} + + + + + _Ptr->_Isnil ? nullptr : &_Ptr->_Myval + {_Ptr->_Myval} + end + + &_Ptr->_Myval + + + + + + + + + + + + + + {_List} + + _List + + + + + + + + + + + + + {_List} + + _Maxidx + ((float)_List._Mypair._Myval2._Mysize) / ((float)_Maxidx) + _Traitsobj._Mypair._Myval2._Myval2 + _Traitsobj._Mypair + _Traitsobj._Mypair._Myval2 + _List._Mypair + _List,view(simple) + + + + + + {_List} + + _Maxidx + ((float)_List._Mypair._Myval2._Mysize) / ((float)_Maxidx) + _Traitsobj._Mypair._Myval2._Myval2 + _Traitsobj._Mypair + _Traitsobj._Mypair._Myval2 + _List._Mypair + _List,view(MapHelper) + + + + + + Test + + + _Mypair._Myval2._Mysize + _Mypair._Myval2._Myhead->_Next + _Next + _Myval + + + + + + + + {c} + + c + + + + + + {c} + + c + comp + + + + + + + + current._Ptr - 1,na + reverse_iterator {current._Ptr[-1]} + + current._Ptr - 1 + + + + + + + current._Ptr + current._Idx - 1,na + reverse_iterator {current._Ptr[current._Idx - 1]} + reverse_iterator rend + + current._Ptr + current._Idx - 1 + + + + + + &current._Ptr->_Prev->_Myval,na + reverse_iterator {**this} + + + + + current._Ptr - 1,na + reverse_iterator {**this} + + current._Ptr - 1 + + + + + reverse_iterator base() {current} + + NOTE: *ri is equivalent to *prev(ri.base()) + current + + + + + + current - 1 + reverse_iterator {current[-1]} + + current - 1 + + + + + + back_insert_iterator into {container} + + container + + + + + + front_insert_iterator into {container} + + container + + + + + + insert_iterator into {container} at {iter} + + container + iter + + + + + + move_iterator {current} + + current + + + + + + -i*{-_Val[1]} + {_Val[0]}-i*{-_Val[1]} + {_Val[0]} + i*{_Val[1]} + {_Val[0]}+i*{_Val[1]} + + _Val[0] + _Val[1] + + + + + + {{ size={_Mysize} }} + + + _Mysize + _Myptr + + + + + + + + + {data(),[size()]} + + + + + {_Stringbuffer} + + _Stringbuffer + + + + + {_Stringbuffer} + + _Stringbuffer + + + + + {_Stringbuffer} + + _Stringbuffer + + + + + + empty + {_Visualization} + _Visualization + + + + + + {first,[second - first]na} + false + + matched + first + second + + + + + + {first._Ptr,[second._Ptr - first._Ptr]na} + false + + matched + first + second + + + + + + not ready + {_Matches} + + _Matches,view(simple) + _Prefix + _Suffix + + + + + + &_MyVal + end + {_MyVal} + + _Begin + _End + _MyRe + _Flags + _MyVal + + + + + + _Res + end + {*_Res} + + _Pos + _Res + _Suffix + _Cur + _Subs + + + + + + + + + + {value()} + + value() + + + + + + + + + + {value()} + + + + + + + unlocked + locked + unlocked + locked + + *(long *)((char *)(&_Mtx_storage) + 40) + *(long *)((char *)(&_Mtx_storage) + 72) + *(int *)((char *)(&_Mtx_storage) + 44) + *(int *)((char *)(&_Mtx_storage) + 76) + + + + + + + + _Retrieved + _Result + _Exception + + + + + + + empty + pending + has_result + + *_MyPromise._State._Assoc_state + _MyPromise._Future_retrieved + + + + + + + empty + pending + has_result + + *_Assoc_state + + + + + + + ptr_fun({_Pfun}) + + + + + + + + mem_fun({_Pmemfun}) + + + + + + + + mem_fun_ref({_Pmemfun}) + + + + + bind1st({op}, {value}) + + op + value + + + + + bind2nd({op}, {value}) + + op + value + + + + + empty + auto_ptr {*_Myptr} + + _Myptr + + + + + + + {_Ptr->_Fn,na}, #initial suspend + {_Ptr->_Fn,na}, #final suspend + {_Ptr->_Fn,na}, suspend point #{(_Ptr->_Index)/2 - 1} + {_Ptr->_Fn,na} + + "initial suspend" + "final suspend" + (_Ptr->_Index)/2 - 1 + this,view(ViewPromise) + + + + + + + + + + + + *reinterpret_cast<$T1 *>(reinterpret_cast<char*>(_Ptr) - _ALIGNED_SIZE) + + + From 9137e264e3bbb4e8a7da92f2681cef8e5be0e93a Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Mon, 8 Mar 2021 12:59:42 -0800 Subject: [PATCH 02/15] Update README.md Fixed typos Co-authored-by: IhateTrains --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 15004c47262..ae9df3e0366 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,8 @@ To modify how elements look on the debugger open the file STL\stl\STL.natvis. Fo ### Test your changes. -After making your changes overwrithe the file under %Visual Studio instalation path%\Common7\Packages\Debugger\Visualizers\stl.natvis (is remcomended to make a backup of the file). After overwriting the file you should be able to see your chanes in a Visual Studio debugging sesion. +After making your changes overwrite the file under %Visual Studio instalation path%\Common7\Packages\Debugger\Visualizers\stl.natvis (is recommended to make a backup of the file). After overwriting the file you should be able to see your changes in a Visual Studio debugging session. + # Block Diagram From cd1025e47bb28847c93b8278de9ff0d5d3dd5fa4 Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Mon, 8 Mar 2021 13:00:49 -0800 Subject: [PATCH 03/15] fixed link Co-authored-by: Casey Carter --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae9df3e0366..6608188737d 100644 --- a/README.md +++ b/README.md @@ -434,4 +434,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [opencode@microsoft.com]: mailto:opencode@microsoft.com [redistributables]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads [vcpkg]: https://github.com/microsoft/vcpkg -[natvis documantation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2019 +[natvis documantation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects From ad15553dc10fc78aa2b13e5673e00983d734abab Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Mon, 8 Mar 2021 13:01:24 -0800 Subject: [PATCH 04/15] Update README.md Co-authored-by: Casey Carter --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6608188737d..129abc84945 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,7 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by ### Modify The Visualizer -To modify how elements look on the debugger open the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documantation][]. +To modify how components are visualized in the debugger open the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documantation][]. ### Test your changes. From c393bb1bee16c6e6a33db3093cd1605d2d9166fa Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Mon, 8 Mar 2021 13:15:41 -0800 Subject: [PATCH 05/15] updated read.me --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 129abc84945..0f3b3ecc480 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,7 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by ### Modify The Visualizer -To modify how components are visualized in the debugger open the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documantation][]. +To modify how components are visualized in the debugger edit the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documentation][]. ### Test your changes. @@ -434,4 +434,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception [opencode@microsoft.com]: mailto:opencode@microsoft.com [redistributables]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads [vcpkg]: https://github.com/microsoft/vcpkg -[natvis documantation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects +[natvis documentation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects From 158e4d8fadceffffe48c972576a0d7bb8c9a3d7e Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Mon, 8 Mar 2021 16:25:19 -0800 Subject: [PATCH 06/15] fixed instrucions to not override the stl.natvis file --- README.md | 2 +- stl/{ => debugger}/STL.natvis | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) rename stl/{ => debugger}/STL.natvis (97%) diff --git a/README.md b/README.md index 0f3b3ecc480..7b1a9e42dc7 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,7 @@ To modify how components are visualized in the debugger edit the file STL\stl\ST ### Test your changes. -After making your changes overwrite the file under %Visual Studio instalation path%\Common7\Packages\Debugger\Visualizers\stl.natvis (is recommended to make a backup of the file). After overwriting the file you should be able to see your changes in a Visual Studio debugging session. +After making your changes copy the file to any c++ Visual Studio project, after that select your right click your project > Add > Existing Item and select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging session. # Block Diagram diff --git a/stl/STL.natvis b/stl/debugger/STL.natvis similarity index 97% rename from stl/STL.natvis rename to stl/debugger/STL.natvis index 029d9c5aa34..110f8a6bb46 100644 --- a/stl/STL.natvis +++ b/stl/debugger/STL.natvis @@ -847,6 +847,7 @@ {_Mydata,[_Mysize]} + _Mydata,[_Mysize] size() @@ -1059,8 +1060,8 @@ - - + + {{ size={size()} }} capacity() From b431f0e3100ce5e96cd4ae237d7bdd2bc59e200a Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Mon, 15 Mar 2021 10:53:04 -0700 Subject: [PATCH 07/15] Update README.md Co-authored-by: Casey Carter --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b1a9e42dc7..6c73647df53 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,7 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by ### Modify The Visualizer -To modify how components are visualized in the debugger edit the file STL\stl\STL.natvis. For more information on how to modify this file check the [natvis documentation][]. +To modify how components are visualized in the debugger edit the file stl\debugger\STL.natvis. For more information on how to modify this file check the [natvis documentation][]. ### Test your changes. From 946e13d869700d94a953b5632c9bd12b9dc5c5c6 Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Mon, 15 Mar 2021 10:53:43 -0700 Subject: [PATCH 08/15] Update README.md Co-authored-by: Daniel Marshall --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c73647df53..55fd5e3ebc8 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,7 @@ To modify how components are visualized in the debugger edit the file stl\debugg ### Test your changes. -After making your changes copy the file to any c++ Visual Studio project, after that select your right click your project > Add > Existing Item and select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging session. +You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging session. # Block Diagram From bba1d605bc51094e05326a7c240b90614d9c5d2f Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Mon, 15 Mar 2021 12:44:19 -0700 Subject: [PATCH 09/15] updated with coroutines --- stl/debugger/STL.natvis | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/stl/debugger/STL.natvis b/stl/debugger/STL.natvis index 110f8a6bb46..44c36065a62 100644 --- a/stl/debugger/STL.natvis +++ b/stl/debugger/STL.natvis @@ -1569,7 +1569,7 @@ - + {_Ptr->_Fn,na}, #initial suspend {_Ptr->_Fn,na}, #final suspend @@ -1583,15 +1583,36 @@ - + - + *reinterpret_cast<$T1 *>(reinterpret_cast<char*>(_Ptr) - _ALIGNED_SIZE) + + + + + *reinterpret_cast<$T1 *>(reinterpret_cast<char*>(_Ptr) + 2*sizeof(void*)) + + + + + {*reinterpret_cast<void(__cdecl**)(void*)>(_Ptr),na} + {*(reinterpret_cast<void(__cdecl**)(void*)>(_Ptr) + 1),na} + + this,view(ViewPromise) + + + + + + + + From 6d760d5ce34703e919077ada9998c7603b20fec8 Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Mon, 15 Mar 2021 13:17:32 -0700 Subject: [PATCH 10/15] made lines smaller --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 55fd5e3ebc8..77b996f9c24 100644 --- a/README.md +++ b/README.md @@ -366,11 +366,14 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by ### Modify The Visualizer -To modify how components are visualized in the debugger edit the file stl\debugger\STL.natvis. For more information on how to modify this file check the [natvis documentation][]. +To modify how components are visualized in the debugger edit the file stl\debugger\STL.natvis. For more information on +how to modify this file check the [natvis documentation][]. ### Test your changes. -You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging session. +You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and +select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging +session. # Block Diagram From e40c5797469c7cdbab12c14ef9ce83178e68f732 Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Tue, 16 Mar 2021 09:50:21 -0700 Subject: [PATCH 11/15] Update README.md Co-authored-by: Stephan T. Lavavej --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77b996f9c24..c81a662cc6c 100644 --- a/README.md +++ b/README.md @@ -369,7 +369,7 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by To modify how components are visualized in the debugger edit the file stl\debugger\STL.natvis. For more information on how to modify this file check the [natvis documentation][]. -### Test your changes. +### Test Your Changes You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging From abe6e1b6c3b0dfa7e4692190cd483d5a7396d986 Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Tue, 16 Mar 2021 09:50:37 -0700 Subject: [PATCH 12/15] Update README.md Co-authored-by: Stephan T. Lavavej --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c81a662cc6c..2eaa6b36eb8 100644 --- a/README.md +++ b/README.md @@ -372,7 +372,7 @@ how to modify this file check the [natvis documentation][]. ### Test Your Changes You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and -select the stl.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging +select the STL.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging session. From a9a81e04a292a0123a87b39c8fbd853c494024fd Mon Sep 17 00:00:00 2001 From: Anju del Moral Gonzalez Date: Tue, 16 Mar 2021 09:51:00 -0700 Subject: [PATCH 13/15] Update README.md Co-authored-by: Stephan T. Lavavej --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2eaa6b36eb8..1d2ab321af3 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,7 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by ### Modify The Visualizer -To modify how components are visualized in the debugger edit the file stl\debugger\STL.natvis. For more information on +To modify how components are visualized in the debugger edit the file `stl\debugger\STL.natvis`. For more information on how to modify this file check the [natvis documentation][]. ### Test Your Changes From a1e291fa0cf0326bcb03c5e27d02252ffbc0c751 Mon Sep 17 00:00:00 2001 From: Anju Del Moral Gonzalez Date: Tue, 16 Mar 2021 10:17:16 -0700 Subject: [PATCH 14/15] added copyright --- stl/debugger/STL.natvis | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stl/debugger/STL.natvis b/stl/debugger/STL.natvis index 44c36065a62..fae90154942 100644 --- a/stl/debugger/STL.natvis +++ b/stl/debugger/STL.natvis @@ -1,4 +1,8 @@ + From b427c552940d08f1a9932bbbf3d2f7f672bd5a94 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 16 Mar 2021 18:12:27 -0700 Subject: [PATCH 15/15] Remove extra spaces (apparently introduced by GitHub's code preview). --- stl/debugger/STL.natvis | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stl/debugger/STL.natvis b/stl/debugger/STL.natvis index fae90154942..008bb6ddb97 100644 --- a/stl/debugger/STL.natvis +++ b/stl/debugger/STL.natvis @@ -1,8 +1,8 @@ - +