diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index d8d613ca9b2..3dee5754d4b 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -23,5 +23,17 @@ if (MSVC_IDE) visualstudio/stllist.natvis visualstudio/stlvector.natvis visualstudio/unicodestring.natvis + visualstudio/wwlib/hash.natvis + visualstudio/wwlib/hashtemplate.natvis + visualstudio/wwlib/listnode.natvis + visualstudio/wwlib/mpsc_intrusive_queue.natvis + visualstudio/wwlib/multilist.natvis + visualstudio/wwlib/sharebuf.natvis + visualstudio/wwlib/simplevec.natvis + visualstudio/wwlib/slist.natvis + visualstudio/wwlib/uarray.natvis + visualstudio/wwlib/vector.natvis + visualstudio/wwlib/widestring.natvis + visualstudio/wwlib/wwstring.natvis ) endif() diff --git a/resources/visualstudio/asciistring.natvis b/resources/visualstudio/asciistring.natvis index 8f88151691e..4f9a8f1c48d 100644 --- a/resources/visualstudio/asciistring.natvis +++ b/resources/visualstudio/asciistring.natvis @@ -1,11 +1,16 @@ + - {(const char *)(& m_data[1]),s8} - "" + "" + {(const char *)(m_data + 1),s8} + (const char *)(m_data + 1),s8 - m_data - (const char *)(& m_data[1]) + m_data == 0 ? 0 : (int)strnlen((const char *)(m_data + 1), m_data->m_numCharsAllocated) + (int)m_data->m_numCharsAllocated + (int)m_data->m_refCount + (const char *)(m_data + 1),s8 - \ No newline at end of file + diff --git a/resources/visualstudio/unicodestring.natvis b/resources/visualstudio/unicodestring.natvis index 22aaf299cdc..a71be3c4ed9 100644 --- a/resources/visualstudio/unicodestring.natvis +++ b/resources/visualstudio/unicodestring.natvis @@ -1,11 +1,16 @@ + - {(const wchar_t *)(& m_data[1]),su} - "" + "" + {(const wchar_t *)(m_data + 1),su} + (const wchar_t *)(m_data + 1),su - m_data - (const wchar_t *)(& m_data[1]) + m_data == 0 ? 0 : (int)wcsnlen((const wchar_t *)(m_data + 1), m_data->m_numCharsAllocated) + (int)m_data->m_numCharsAllocated + (int)m_data->m_refCount + (const wchar_t *)(m_data + 1),su - \ No newline at end of file + diff --git a/resources/visualstudio/wwlib/hash.natvis b/resources/visualstudio/wwlib/hash.natvis new file mode 100644 index 00000000000..d31c64f960a --- /dev/null +++ b/resources/visualstudio/wwlib/hash.natvis @@ -0,0 +1,36 @@ + + + + + {{ buckets={HashTableSize} }} + + HashTableSize + + + + + + entry = HashTable[bucket] + + + entry + entry = entry->NextHash + + bucket = bucket + 1 + + + + + + + {{ done }} + {*CurrentEntry} + + CurrentEntry + NextEntry + Index + Table + + + diff --git a/resources/visualstudio/wwlib/hashtemplate.natvis b/resources/visualstudio/wwlib/hashtemplate.natvis new file mode 100644 index 00000000000..dbf81cc1d50 --- /dev/null +++ b/resources/visualstudio/wwlib/hashtemplate.natvis @@ -0,0 +1,36 @@ + + + + + {{ buckets={(int)Size} }} + + (int)Size + + + + + + handle = Hash[bucket] + + + Table[handle].Value + handle = Table[handle].Next + + bucket = bucket + 1 + + + + + + + {{ done }} + {HashTable.Table[Handle].Value} + + HashTable.Table[Handle].Key + HashTable.Table[Handle].Value + HashIndex + HashTable + + + diff --git a/resources/visualstudio/wwlib/listnode.natvis b/resources/visualstudio/wwlib/listnode.natvis new file mode 100644 index 00000000000..dc33d3d54e2 --- /dev/null +++ b/resources/visualstudio/wwlib/listnode.natvis @@ -0,0 +1,64 @@ + + + + + {{ size=0 }} + {{ GenericList }} + + + + + + node + node = node->NextNode + + + + + + + + {{ size=0 }} + {{ List }} + + + + + + ($T1)node + node = node->NextNode + + + + + + + {{ unlinked }} + {{ GenericNode }} + + NextNode + PrevNode + + + + + {{ unlinked }} + {{ Node }} + + ($T1)NextNode + ($T1)PrevNode + + + + + {Value} + + Value + (DataNode<$T1> *)NextNode + (DataNode<$T1> *)PrevNode + + + diff --git a/resources/visualstudio/wwlib/mpsc_intrusive_queue.natvis b/resources/visualstudio/wwlib/mpsc_intrusive_queue.natvis new file mode 100644 index 00000000000..543f35d07ff --- /dev/null +++ b/resources/visualstudio/wwlib/mpsc_intrusive_queue.natvis @@ -0,0 +1,19 @@ + + + + + {{ empty }} + {{ MPSCIntrusiveQueue }} + + + + + + node + node = node->next + + + + + diff --git a/resources/visualstudio/wwlib/multilist.natvis b/resources/visualstudio/wwlib/multilist.natvis new file mode 100644 index 00000000000..22e9d604af9 --- /dev/null +++ b/resources/visualstudio/wwlib/multilist.natvis @@ -0,0 +1,103 @@ + + + + + {{ size=0 }} + {{ GenericMultiList }} + + + + + + node->Object + node = node->Next + + + + + + + + {{ size=0 }} + {{ MultiList }} + + + + + + ($T1 *)node->Object + node = node->Next + + + + + + + {{ size=0 }} + {{ RefMultiList }} + + + + + + ($T1 *)node->Object + node = node->Next + + + + + + + + {{ not in any list }} + {{ in list(s) }} + + + lists this object belongs to + + + + + + node->List + node = node->NextList + + + + + + + + + {{ object={Object} }} + + Object + List + Next + Prev + NextList + + + + + {{ done }} + {CurNode->Object} + + CurNode->Object + List + + + + + + + {{ done }} + {*($T1 *)CurNode->Object} + + ($T1 *)CurNode->Object + List + + + diff --git a/resources/visualstudio/wwlib/sharebuf.natvis b/resources/visualstudio/wwlib/sharebuf.natvis new file mode 100644 index 00000000000..ed69a353423 --- /dev/null +++ b/resources/visualstudio/wwlib/sharebuf.natvis @@ -0,0 +1,16 @@ + + + + {{ size={Count} }} + + Count + NumRefs + + Msg,s + + Count + Array + + + + diff --git a/resources/visualstudio/wwlib/simplevec.natvis b/resources/visualstudio/wwlib/simplevec.natvis new file mode 100644 index 00000000000..8d46ec4fc69 --- /dev/null +++ b/resources/visualstudio/wwlib/simplevec.natvis @@ -0,0 +1,27 @@ + + + + {{ size={VectorMax} }} + + VectorMax + + VectorMax + Vector + + + + + + + {{ size={ActiveCount} }} + + ActiveCount + VectorMax + + ActiveCount + Vector + + + + diff --git a/resources/visualstudio/wwlib/slist.natvis b/resources/visualstudio/wwlib/slist.natvis new file mode 100644 index 00000000000..f7f26038b3e --- /dev/null +++ b/resources/visualstudio/wwlib/slist.natvis @@ -0,0 +1,27 @@ + + + + + {{ size=0 }} + {{ SList }} + + + + + + ($T1 *)node->NodeData + node = (SLNode<$T1> *)node->NodeNext + + + + + + + {*($T1 *)NodeData} + + ($T1 *)NodeData + (SLNode<$T1> *)NodeNext + + + diff --git a/resources/visualstudio/wwlib/uarray.natvis b/resources/visualstudio/wwlib/uarray.natvis new file mode 100644 index 00000000000..93a7368af86 --- /dev/null +++ b/resources/visualstudio/wwlib/uarray.natvis @@ -0,0 +1,17 @@ + + + + + {{ size={UniqueItems.ActiveCount} }} + + UniqueItems.ActiveCount + UniqueItems.VectorMax + HashTableSize + + UniqueItems.ActiveCount + UniqueItems.Vector[$i].Item + + + + diff --git a/resources/visualstudio/wwlib/vector.natvis b/resources/visualstudio/wwlib/vector.natvis new file mode 100644 index 00000000000..af37c172136 --- /dev/null +++ b/resources/visualstudio/wwlib/vector.natvis @@ -0,0 +1,44 @@ + + + + {{ size={VectorMax} }} + + VectorMax + IsAllocated + + VectorMax + Vector + + + + + + + {{ size={ActiveCount} }} + + ActiveCount + VectorMax + GrowthStep + + ActiveCount + Vector + + + + + + + {{ size={BitCount} }} + + BitCount + LastIndex + Copy + + BitCount + $i == LastIndex ? Copy : (bool)((BitArray.Vector[$i / 8] >> ($i % 8)) & 1) + + + + diff --git a/resources/visualstudio/wwlib/widestring.natvis b/resources/visualstudio/wwlib/widestring.natvis new file mode 100644 index 00000000000..815f6c61fab --- /dev/null +++ b/resources/visualstudio/wwlib/widestring.natvis @@ -0,0 +1,18 @@ + + + + + {m_Buffer,su} + m_Buffer,su + + ((int *)m_Buffer)[-1] != 0 ? ((int *)m_Buffer)[-1] : (int)wcsnlen(m_Buffer, ((int *)m_Buffer)[-2]) + ((int *)m_Buffer)[-2] + m_Buffer,su + m_Buffer + + + diff --git a/resources/visualstudio/wwlib/wwstring.natvis b/resources/visualstudio/wwlib/wwstring.natvis new file mode 100644 index 00000000000..9a4a1118879 --- /dev/null +++ b/resources/visualstudio/wwlib/wwstring.natvis @@ -0,0 +1,18 @@ + + + + + {m_Buffer,s} + m_Buffer,s + + ((int *)m_Buffer)[-1] != 0 ? ((int *)m_Buffer)[-1] : (int)strnlen(m_Buffer, ((int *)m_Buffer)[-2]) + ((int *)m_Buffer)[-2] + m_Buffer,s + m_Buffer + + +