<?xml version="1.0" encoding="utf-8"?>

<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

<!-- stlport::basic_string -->
<Type Name="stlpmtx_std::basic_string&lt;char,*&gt;">
    <AlternativeType Name="stlp_std::basic_string&lt;char,*&gt;" />
    <AlternativeType Name="stlpx_std::basic_string&lt;char,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::basic_string&lt;char,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_str&lt;char,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_str&lt;char,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_str&lt;char,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_str&lt;char,*&gt;" />
    <DisplayString>{_M_start_of_storage._M_data, s}</DisplayString>
    <StringView>_M_start_of_storage._M_data, s</StringView>
    <Expand>
        <Item Name="[buffer]">_M_start_of_storage._M_data, s</Item>
        <Item Name="[length]">_M_finish - _M_start_of_storage._M_data</Item>
        <Item Name="[capacity]" Condition="_M_start_of_storage._M_data == _M_buffers._M_static_buf">_DEFAULT_SIZE</Item>
        <Item Name="[capacity]" Condition="_M_start_of_storage._M_data != _M_buffers._M_static_buf">_M_buffers._M_end_of_storage - _M_start_of_storage._M_data</Item>
        <ArrayItems>
            <Size>_M_finish - _M_start_of_storage._M_data</Size>
            <ValuePointer>_M_start_of_storage._M_data</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::basic_string&lt;unsigned short,*&gt;">
    <AlternativeType Name="stlpmtx_std::basic_string&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlp_std::basic_string&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlp_std::basic_string&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpx_std::basic_string&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpx_std::basic_string&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::basic_string&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::basic_string&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_str&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_str&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_str&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_str&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_str&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_str&lt;wchar_t,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_str&lt;unsigned short,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_str&lt;wchar_t,*&gt;" />
    <DisplayString>{_M_start_of_storage._M_data, su}</DisplayString>
    <StringView>_M_start_of_storage._M_data, su</StringView>
    <Expand>
        <Item Name="[buffer]">_M_start_of_storage._M_data, su</Item>
        <Item Name="[length]">_M_finish - _M_start_of_storage._M_data</Item>
        <Item Name="[capacity]" Condition="_M_start_of_storage._M_data == _M_buffers._M_static_buf">_DEFAULT_SIZE</Item>
        <Item Name="[capacity]" Condition="_M_start_of_storage._M_data != _M_buffers._M_static_buf">_M_buffers._M_end_of_storage - _M_start_of_storage._M_data</Item>
        <ArrayItems>
            <Size>_M_finish - _M_start_of_storage._M_data</Size>
            <ValuePointer>_M_start_of_storage._M_data</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::basic_string&lt;*&gt;">
    <AlternativeType Name="stlp_std::basic_string&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::basic_string&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::basic_string&lt;*&gt;" />
    <DisplayString>{_M_non_dbg_impl}</DisplayString>
    <StringView>_M_non_dbg_impl</StringView>
    <Expand>
        <Item Name="[string]">_M_non_dbg_impl</Item>
    </Expand>
</Type>

<!-- stlport::vector -->
<Type Name="stlpmtx_std::vector&lt;bool,*&gt;">
    <AlternativeType Name="stlp_std::vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpx_std::vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_vector&lt;bool,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_vector&lt;bool,*&gt;" />
    <DisplayString>{{ size = {(_M_finish._M_p - _M_start._M_p) * sizeof(unsigned int) * 8 + _M_finish._M_offset} }}</DisplayString>
    <Expand>
        <Item Name="[buffer]">_M_start._M_p, x</Item>
        <Item Name="[size]">(_M_finish._M_p - _M_start._M_p) * sizeof(unsigned int) * 8 + _M_finish._M_offset</Item>
        <!-- <Item Name="[capacity]">(_M_end_of_storage._M_data - _M_start._M_p) * sizeof(unsigned int) * 8 - _M_start._M_offset</Item> -->
        <IndexListItems>
            <Size>(_M_finish._M_p - _M_start._M_p) * sizeof(unsigned int) * 8 + _M_finish._M_offset</Size>
            <ValueNode>(bool)((_M_start._M_p[$i / (sizeof(unsigned int) * 8)] &gt;&gt; ($i % (sizeof(unsigned int) * 8))) &amp; 1)</ValueNode>
        </IndexListItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::priv::_Bit_iter&lt;*&gt;">
    <AlternativeType Name="stlp_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_Bit_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_Bit_iter&lt;*&gt;" />
    <DisplayString>{(bool)(((*_M_p) &gt;&gt; _M_offset) &amp; 1)}</DisplayString>
    <Expand>
        <Item Name="[value]">(bool)(((*_M_p) &gt;&gt; _M_offset) &amp; 1)</Item>
    </Expand>
</Type>

<Type Name="stlpmtx_std::vector&lt;*&gt;">
    <AlternativeType Name="stlp_std::vector&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::vector&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::vector&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_vector&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_vector&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_vector&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_vector&lt;*&gt;" />
    <DisplayString>{{ size = {_M_finish - _M_start} }}</DisplayString>
    <Expand>
        <Item Name="[size]">_M_finish - _M_start</Item>
        <Item Name="[capacity]">_M_end_of_storage._M_data - _M_start</Item>
        <ArrayItems>
            <Size>_M_finish - _M_start</Size>
            <ValuePointer>_M_start</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

<Type Name="stlpdmtx_std::vector&lt;*&gt;">
    <AlternativeType Name="stlpd_std::vector&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::vector&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::vector&lt;*&gt;" />
    <DisplayString>{_M_non_dbg_impl}</DisplayString>
    <Expand>
        <Item Name="[vector]">_M_non_dbg_impl</Item>
    </Expand>
</Type>


<!-- stlport::deque -->
<Type Name="stlpmtx_std::deque&lt;*,*&gt;">
    <AlternativeType Name="stlp_std::deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpx_std::deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_deque&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_deque&lt;*,*&gt;" />
    <DisplayString Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &lt; _MAX_BYTES">{{ size = {((_M_finish._M_node - _M_start._M_node + 1) * (_MAX_BYTES / sizeof($T1))) - (_M_start._M_cur - _M_start._M_first) - (_M_finish._M_last - _M_finish._M_cur)} }}</DisplayString>
    <DisplayString Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &gt;= _MAX_BYTES">{{ size = {_M_finish._M_node - _M_start._M_node} }}</DisplayString>
    <Expand>
        <Item Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &lt; _MAX_BYTES" Name="[size]">((_M_finish._M_node - _M_start._M_node + 1) * (_MAX_BYTES / sizeof($T1))) - (_M_start._M_cur - _M_start._M_first) - (_M_finish._M_last - _M_finish._M_cur)</Item>
        <Item Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &gt;= _MAX_BYTES" Name="[size]">_M_finish._M_node - _M_start._M_node</Item>
        <Item Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &lt; _MAX_BYTES" Name="[capacity]">(_M_finish._M_node - _M_start._M_node + 1) * (_MAX_BYTES / sizeof($T1)) - 1</Item>
        <Item Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &gt;= _MAX_BYTES" Name="[capacity]">_M_finish._M_node - _M_start._M_node</Item>
        <IndexListItems>
            <Size Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &lt; _MAX_BYTES">((_M_finish._M_node - _M_start._M_node + 1) * (_MAX_BYTES / sizeof($T1))) - (_M_start._M_cur - _M_start._M_first) - (_M_finish._M_last - _M_finish._M_cur)</Size>
            <Size Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &gt;= _MAX_BYTES">_M_finish._M_node - _M_start._M_node</Size>
            <ValueNode Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &lt; _MAX_BYTES">*(*(_M_start._M_node + (($i + (_M_start._M_cur - _M_start._M_first)) / (_MAX_BYTES / sizeof($T1)))) + (($i + (_M_start._M_cur - _M_start._M_first)) % (_MAX_BYTES / sizeof($T1))))</ValueNode>
            <ValueNode Condition="((unsigned int)(_M_start._M_cur + 1) - ((unsigned int)_M_start._M_cur)) &gt;= _MAX_BYTES">**(_M_start._M_node + $i)</ValueNode>
        </IndexListItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::priv::_Deque_iterator&lt;*&gt;">
    <AlternativeType Name="stlp_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_Deque_iterator&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_Deque_iterator&lt;*&gt;" />
    <DisplayString>{*_M_cur}</DisplayString>
    <Expand>
        <Item Name="[ptr]">_M_cur, x</Item>
        <Item Name="[value]">*(_M_cur)</Item>
    </Expand>
</Type>

<Type Name="stlpdmtx_std::deque&lt;*&gt;">
    <AlternativeType Name="stlpd_std::deque&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::deque&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::deque&lt;*&gt;" />
    <DisplayString>{_M_non_dbg_impl}</DisplayString>
    <Expand>
        <Item Name="[deque]">_M_non_dbg_impl</Item>
    </Expand>
</Type>

<!-- stlport::list -->
<Type Name="stlpmtx_std::list&lt;*,*&gt;">
    <AlternativeType Name="stlp_std::list&lt;*,*&gt;" />
    <AlternativeType Name="stlpx_std::list&lt;*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::list&lt;*,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_list&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_list&lt;*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_list&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_list&lt;*,*&gt;" />
    <DisplayString>{{ size= ':(' }}</DisplayString>
    <Expand>
        <LinkedListItems>
            <!-- TODO: <Size> </Size> -->
            <HeadPointer>_M_node._M_data._M_next</HeadPointer>
            <NextPointer>_M_next</NextPointer>
            <ValueNode>*($T1 *)(this + 1)</ValueNode>
        </LinkedListItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::priv::_List_iterator&lt;*,*&gt;">
    <AlternativeType Name="stlp_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_List_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_List_iterator&lt;*,*&gt;" />
    <DisplayString>{*($T1 *)(_M_node + 1)}</DisplayString>
    <Expand>
        <Item Name="[ptr]">($T1 *)(_M_node + 1), x</Item>
        <Item Name="[value]">*($T1 *)(_M_node + 1)</Item>
    </Expand>
</Type>

<Type Name="stlpdmtx_std::list&lt;*,*&gt;">
    <AlternativeType Name="stlpd_std::list&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::list&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::list&lt;*,*&gt;" />
    <DisplayString>{_M_non_dbg_impl}</DisplayString>
    <Expand>
        <Item Name="[list]">_M_non_dbg_impl</Item>
    </Expand>
</Type>

<!-- TODO: add stlport::slist -->

<!-- stlport::pair -->
<Type Name="stlpmtx_std::pair&lt;*,*&gt;">
    <AlternativeType Name="stlp_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpx_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpd_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::pair&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::pair&lt;*,*&gt;" />
    <DisplayString>({first}, {second})</DisplayString>
    <Expand>
        <Item Name="first">first</Item>
        <Item Name="second">second</Item>
    </Expand>
</Type>

<!-- stlport::map -->
<Type Name="stlpmtx_std::map&lt;*&gt;">
    <AlternativeType Name="stlp_std::map&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::map&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::map&lt;*&gt;" />
    <AlternativeType Name="stlp_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpmtx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlp_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpmtx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlp_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpmtx_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::multiset&lt;*&gt;" />
    <DisplayString>{{ size = {_M_t._M_node_count} }}</DisplayString>
    <Expand>
        <Item Name="[size]">_M_t._M_node_count</Item>
        <Item Name="[tree]">_M_t</Item>
    </Expand>
</Type>

<Type Name="stlpdmtx_std::map&lt;*&gt;">
    <AlternativeType Name="stlpd_std::map&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::map&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::map&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::multimap&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::set&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::multiset&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::multiset&lt;*&gt;" />
    <DisplayString>{{ size = {_M_t._M_non_dbg_impl._M_node_count} }}</DisplayString>
    <Expand>
        <Item Name="[size]">_M_t._M_non_dbg_impl._M_node_count</Item>
        <Item Name="[tree]">_M_t._M_non_dbg_impl</Item>
    </Expand>
</Type>



<Type Name="stlpmtx_std::priv::_Rb_tree&lt;*,*,*,*,*&gt;">
    <AlternativeType Name="stlp_std::priv::_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_NonDbg_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_NonDbg_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_NonDbg_Rb_tree&lt;*,*,*,*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_NonDbg_Rb_tree&lt;*,*,*,*,*&gt;" />
    <DisplayString>{*($T3 *)(&amp;(_M_header._M_data) + 1)}</DisplayString>
    <Expand>
        <TreeItems>
            <Size>_M_node_count</Size>
            <HeadPointer>_M_header._M_data._M_parent</HeadPointer>
            <LeftPointer>_M_left</LeftPointer>
            <RightPointer>_M_right</RightPointer>
            <ValueNode>*($T3 *)(this + 1)</ValueNode>
        </TreeItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::priv::_Rb_tree_iterator&lt;*,*&gt;">
    <AlternativeType Name="stlp_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_Rb_tree_iterator&lt;*,*&gt;" />
    <DisplayString>{*($T1 *)(_M_node + 1)}</DisplayString>
    <Expand>
        <Item Name="[ptr]">($T1 *)(_M_node + 1), x</Item>
        <Item Name="[value]">*($T1 *)(_M_node + 1)</Item>
    </Expand>
</Type>

<!-- TODO: add
     stlport::hash_map, stlport::hash_multimap, stlport::hash_set, stlport::hash_multiset
     stlport::unordered_map, stlport::unordered_multimap, stlport::unordered_set, stlport::unordered_multiset
-->

<!-- stlport::queue, stlport::priority_queue, stlport::stack -->
<Type Name="stlpmtx_std::queue&lt;*&gt;">
    <AlternativeType Name="stlp_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::queue&lt;*&gt;" />
    <AlternativeType Name="stlp_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpmtx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priority_queue&lt;*&gt;" />
    <AlternativeType Name="stlp_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpmtx_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::stack&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::stack&lt;*&gt;" />
    <DisplayString>{c}</DisplayString>
    <Expand>
        <Item Name="[container]">c</Item>
    </Expand>
</Type>

<!-- stlport debug iterator -->
<Type Name="stlpmtx_std::priv::_DBG_iter&lt;*&gt;">
    <AlternativeType Name="stlp_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::priv::_DBG_iter&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::priv::_DBG_iter&lt;*&gt;" />
    <DisplayString Condition="_M_owner != 0">{_M_iterator}</DisplayString>
    <DisplayString Condition="_M_owner == 0">{"undefined"}</DisplayString>
    <Expand>
        <Item Name="[iterator]" Condition="_M_owner != 0">_M_iterator</Item>
        <Item Name="[valid]" Condition="_M_owner != 0">true</Item>
        <Item Name="[valid]" Condition="_M_owner == 0">false</Item>
    </Expand>
</Type>

<!-- stlport::bitset -->
<Type Name="stlpmtx_std::bitset&lt;*&gt;">
    <AlternativeType Name="stlp_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::bitset&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::bitset&lt;*&gt;" />
    <DisplayString>{{ size = {$T1} }}</DisplayString>
    <Expand>
        <IndexListItems Condition="_Words == 1">
            <Size>$T1</Size>
            <ValueNode>(((_WordT)_M_w) &gt;&gt; ($i % (sizeof(_WordT) * 8))) &amp; 1, d</ValueNode>
        </IndexListItems>
        <IndexListItems Condition="_Words &gt; 1">
            <Size>$T1</Size>
            <ValueNode>(((_WordT *)_M_w)[$i / (sizeof(_WordT) * 8)] &gt;&gt; ($i % (sizeof(_WordT) * 8))) &amp; 1, d</ValueNode>
        </IndexListItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::bitset&lt;0&gt;">
    <AlternativeType Name="stlp_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpx_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpxmtx_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpd_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpdx_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpdmtx_std::bitset&lt;0&gt;" />
    <AlternativeType Name="stlpdxmtx_std::bitset&lt;0&gt;" />
    <DisplayString>{{ size = 0 }}</DisplayString>
    <Expand>
        <!-- raw view -->
    </Expand>
</Type>

<Type Name="stlpmtx_std::bitset&lt;*&gt;::reference">
    <AlternativeType Name="stlp_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpx_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpxmtx_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpd_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpdx_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpdmtx_std::bitset&lt;*&gt;::reference" />
    <AlternativeType Name="stlpdxmtx_std::bitset&lt;*&gt;::reference" />
    <DisplayString>{(*(_M_wp) &gt;&gt; _M_bpos) &amp; 1, d}</DisplayString>
    <Expand>
        <Item Name="[pos]">_M_wp</Item>
        <Item Name="[offset]">_M_bpos</Item>
    </Expand>
</Type>


<!-- stlport::auto_ptr -->
<Type Name="stlpmtx_std::auto_ptr&lt;*&gt;">
    <AlternativeType Name="stlp_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::auto_ptr&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::auto_ptr&lt;*&gt;" />
    <DisplayString Condition="_M_p != 0">{*($T1 *)_M_p}</DisplayString>
    <DisplayString Condition="_M_p == 0">{"null"}</DisplayString>
    <Expand>
        <Item Condition="_M_p != 0" Name="[ptr]">($T1 *)_M_p, x</Item>
        <Item Condition="_M_p != 0" Name="[value]">*($T1 *)_M_p</Item>
    </Expand>
</Type>

<!-- stlport::complex -->
<Type Name="stlpmtx_std::complex&lt;*&gt;">
    <AlternativeType Name="stlp_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::complex&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::complex&lt;*&gt;" />
    <DisplayString Condition="_M_im == 0">{_M_re}</DisplayString>
    <DisplayString Condition="(_M_re != 0) &amp;&amp; (_M_im &gt; 0)">{_M_re}+i*{_M_im}</DisplayString>
    <DisplayString Condition="(_M_re != 0) &amp;&amp; (_M_im &lt; 0)">{_M_re}-i*{-_M_im}</DisplayString>
    <DisplayString Condition="(_M_re == 0) &amp;&amp; (_M_im &gt; 0)">i*{_M_im}</DisplayString>
    <DisplayString Condition="(_M_re == 0) &amp;&amp; (_M_im &lt; 0)">-i*{-_M_im}</DisplayString>
    <Expand>
        <Item Name="real">_M_re</Item>
        <Item Name="imaginary">_M_im</Item>
    </Expand>
</Type>

<!-- stlport::valarray -->
<Type Name="stlpmtx_std::valarray&lt;*&gt;">
    <AlternativeType Name="stlp_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpx_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpxmtx_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpd_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpdx_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpdmtx_std::valarray&lt;*&gt;" />
    <AlternativeType Name="stlpdxmtx_std::valarray&lt;*&gt;" />
    <DisplayString>{{ size = {_M_size} }}</DisplayString>
    <Expand>
        <ArrayItems>
            <Size>_M_size</Size>
            <ValuePointer>_M_first</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

<Type Name="stlpmtx_std::slice">
    <AlternativeType Name="stlp_std::slice" />
    <AlternativeType Name="stlpx_std::slice" />
    <AlternativeType Name="stlpxmtx_std::slice" />
    <AlternativeType Name="stlpd_std::slice" />
    <AlternativeType Name="stlpdx_std::slice" />
    <AlternativeType Name="stlpdmtx_std::slice" />
    <AlternativeType Name="stlpdxmtx_std::slice" />
    <DisplayString>{{ start = {_M_start}, size = {_M_length}, stride = {_M_stride} }}</DisplayString>
    <Expand>
        <Item Name="[start]">_M_start</Item>
        <Item Name="[size]">_M_length</Item>
        <Item Name="[stride]">_M_stride</Item>
    </Expand>
</Type>

<Type Name="stlpmtx_std::gslice">
    <AlternativeType Name="stlp_std::gslice" />
    <AlternativeType Name="stlpx_std::gslice" />
    <AlternativeType Name="stlpxmtx_std::gslice" />
    <AlternativeType Name="stlpd_std::gslice" />
    <AlternativeType Name="stlpdx_std::gslice" />
    <AlternativeType Name="stlpdmtx_std::gslice" />
    <AlternativeType Name="stlpdxmtx_std::gslice" />
    <DisplayString>{{ start = {_M_start}, sizes = {_M_lengths}, strides = {_M_strides} }}</DisplayString>
    <Expand>
        <Item Name="[start]">_M_start</Item>
        <Item Name="[sizes]">_M_lengths</Item>
        <Item Name="[strides]">_M_strides</Item>
    </Expand>
</Type>

</AutoVisualizer>
