[Libreoffice-commits] core.git: solenv/vs
Mike Kaganski
mike.kaganski at collabora.com
Thu Jul 27 04:44:37 UTC 2017
solenv/vs/LibreOffice.natvis | 182 ++++++++++++++++++++++++++++---------------
1 file changed, 120 insertions(+), 62 deletions(-)
New commits:
commit 781a30e938c58c4d91d08f8c6f9e3f8745682d72
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date: Thu Jul 27 00:15:18 2017 +0300
LibreOffice.natvis: fix BigPrtArray visualiser.
Also visualisers for uno_Any and SwNode are tweaked.
Visualisers for uno::Reference, rtl::Reference and VclPtr added.
SwFrameFormats visualiser reimplemented to follow implementation
of boost::multi_index_container.
Minor reformatting.
Change-Id: I24ccb8bfccd7f7514697ca3f36490672ad549aef
Reviewed-on: https://gerrit.libreoffice.org/40466
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/solenv/vs/LibreOffice.natvis b/solenv/vs/LibreOffice.natvis
index a58eaef9f6a4..60ce1d580150 100644
--- a/solenv/vs/LibreOffice.natvis
+++ b/solenv/vs/LibreOffice.natvis
@@ -18,22 +18,20 @@
</Type>
<Type Name="_rtl_uString">
<DisplayString Condition="length == 0">empty</DisplayString>
- <DisplayString>{buffer,su}</DisplayString>
- <StringView>buffer,su</StringView>
+ <DisplayString>{buffer,[length]su}</DisplayString>
+ <StringView>buffer,[length]su</StringView>
</Type>
<Type Name="_rtl_String">
<DisplayString Condition="length == 0">empty</DisplayString>
- <DisplayString>{buffer,s}</DisplayString>
- <StringView>buffer,s</StringView>
+ <DisplayString>{buffer,[length]s}</DisplayString>
+ <StringView>buffer,[length]s</StringView>
</Type>
- <Type Name="com::sun::star::uno::Any">
+ <Type Name="_uno_Any">
<!--
typelib_TypeClass_VOID = 0,
- typelib_TypeClass_ANY = 14,
typelib_TypeClass_TYPEDEF = 16,
typelib_TypeClass_STRUCT = 17,
typelib_TypeClass_UNION = 18,/** Deprecated, UNOIDL does not have a union concept.*/
- typelib_TypeClass_EXCEPTION = 19,
typelib_TypeClass_ARRAY = 21,/** Deprecated, UNOIDL does not have an array concept.*/
typelib_TypeClass_SERVICE = 23,/** (not implemented) */
typelib_TypeClass_MODULE = 24,/** (not implemented) */
@@ -45,38 +43,41 @@
typelib_TypeClass_CONSTANTS = 30,
typelib_TypeClass_SINGLETON = 31,
-->
- <DisplayString Condition="pType->eTypeClass == 1">{pType->eTypeClass,en}: {*((wchar_t*)pData),c}</DisplayString><!-- typelib_TypeClass_CHAR -->
- <DisplayString Condition="pType->eTypeClass == 2">{pType->eTypeClass,en}: {*((bool*)pData),d}</DisplayString><!-- typelib_TypeClass_BOOLEAN -->
- <DisplayString Condition="pType->eTypeClass == 3">{pType->eTypeClass,en}: {*((unsigned char*)pData),d}</DisplayString><!-- typelib_TypeClass_BYTE -->
- <DisplayString Condition="pType->eTypeClass == 4">{pType->eTypeClass,en}: {(*((short*)pData) & 0xFFFF),d}</DisplayString><!-- typelib_TypeClass_SHORT -->
- <DisplayString Condition="pType->eTypeClass == 5">{pType->eTypeClass,en}: {(*((unsigned short*)pData) & 0xFFFF),d}</DisplayString><!-- typelib_TypeClass_UNSIGNED_SHORT -->
- <DisplayString Condition="pType->eTypeClass == 6">{pType->eTypeClass,en}: {*((int*)pData),d}</DisplayString><!-- typelib_TypeClass_LONG -->
- <DisplayString Condition="pType->eTypeClass == 7">{pType->eTypeClass,en}: {*((unsigned int*)pData),d}</DisplayString><!-- typelib_TypeClass_UNSIGNED_LONG -->
- <DisplayString Condition="pType->eTypeClass == 8">{pType->eTypeClass,en}: {*((__int64*)pData),d}</DisplayString><!-- typelib_TypeClass_HYPER -->
- <DisplayString Condition="pType->eTypeClass == 9">{pType->eTypeClass,en}: {*((unsigned __int64*)pData),d}</DisplayString><!-- typelib_TypeClass_UNSIGNED_HYPER -->
- <DisplayString Condition="pType->eTypeClass == 10">{pType->eTypeClass,en}: {*((float*)pData)}</DisplayString><!-- typelib_TypeClass_FLOAT -->
- <DisplayString Condition="pType->eTypeClass == 11">{pType->eTypeClass,en}: {*((double*)pData)}</DisplayString><!-- typelib_TypeClass_DOUBLE -->
- <DisplayString Condition="pType->eTypeClass == 12">{pType->eTypeClass,en}: {*((rtl::OUString*)pData)}</DisplayString><!-- typelib_TypeClass_STRING -->
- <DisplayString Condition="pType->eTypeClass == 13">{pType->eTypeClass,en}: {*((com::sun::star::uno::Type*)pData)}</DisplayString><!-- typelib_TypeClass_TYPE -->
- <DisplayString Condition="pType->eTypeClass == 15">{pType->eTypeClass,en}: {*((sal_Int32*)pData),d}</DisplayString><!-- typelib_TypeClass_ENUM -->
- <DisplayString Condition="pType->eTypeClass == 20">{pType->eTypeClass,en}: {*((uno_Sequence **)pData)}</DisplayString><!-- typelib_TypeClass_SEQUENCE -->
- <DisplayString Condition="pType->eTypeClass == 22">{pType->eTypeClass,en}: {*((com::sun::star::uno::BaseReference *)pData)}</DisplayString><!-- typelib_TypeClass_INTERFACE -->
+ <DisplayString Condition="pType->eTypeClass == 1" >{*((wchar_t*)pData),c} (CHAR)</DisplayString><!-- typelib_TypeClass_CHAR -->
+ <DisplayString Condition="pType->eTypeClass == 2" >{*((bool*)pData),d} (BOOLEAN)</DisplayString><!-- typelib_TypeClass_BOOLEAN -->
+ <DisplayString Condition="pType->eTypeClass == 3" >{*((unsigned char*)pData),d} (BYTE)</DisplayString><!-- typelib_TypeClass_BYTE -->
+ <DisplayString Condition="pType->eTypeClass == 4" >{(*((short*)pData) & 0xFFFF),d} (SHORT)</DisplayString><!-- typelib_TypeClass_SHORT -->
+ <DisplayString Condition="pType->eTypeClass == 5" >{(*((unsigned short*)pData) & 0xFFFF),d} (UNSIGNED_SHORT)</DisplayString><!-- typelib_TypeClass_UNSIGNED_SHORT -->
+ <DisplayString Condition="pType->eTypeClass == 6" >{*((int*)pData),d} (LONG)</DisplayString><!-- typelib_TypeClass_LONG -->
+ <DisplayString Condition="pType->eTypeClass == 7" >{*((unsigned int*)pData),d} (UNSIGNED_LONG)</DisplayString><!-- typelib_TypeClass_UNSIGNED_LONG -->
+ <DisplayString Condition="pType->eTypeClass == 8" >{*((__int64*)pData),d} (HYPER)</DisplayString><!-- typelib_TypeClass_HYPER -->
+ <DisplayString Condition="pType->eTypeClass == 9" >{*((unsigned __int64*)pData),d} (UNSIGNED_HYPER)</DisplayString><!-- typelib_TypeClass_UNSIGNED_HYPER -->
+ <DisplayString Condition="pType->eTypeClass == 10">{*((float*)pData)} (FLOAT)</DisplayString><!-- typelib_TypeClass_FLOAT -->
+ <DisplayString Condition="pType->eTypeClass == 11">{*((double*)pData)} (DOUBLE)</DisplayString><!-- typelib_TypeClass_DOUBLE -->
+ <DisplayString Condition="pType->eTypeClass == 12">{*((rtl::OUString*)pData)} (STRING)</DisplayString><!-- typelib_TypeClass_STRING -->
+ <DisplayString Condition="pType->eTypeClass == 13">{*((com::sun::star::uno::Type*)pData)} (TYPE)</DisplayString><!-- typelib_TypeClass_TYPE -->
+ <DisplayString Condition="pType->eTypeClass == 14">{*((_uno_Any*)pData)} (ANY)</DisplayString><!-- typelib_TypeClass_ANY -->
+ <DisplayString Condition="pType->eTypeClass == 15">{*((sal_Int32*)pData),d} (ENUM)</DisplayString><!-- typelib_TypeClass_ENUM -->
+ <DisplayString Condition="pType->eTypeClass == 19">{*((com::sun::star::uno::Exception *)pData)} (EXCEPTION)</DisplayString><!-- typelib_TypeClass_EXCEPTION -->
+ <DisplayString Condition="pType->eTypeClass == 20">{*((uno_Sequence **)pData)} (SEQUENCE)</DisplayString><!-- typelib_TypeClass_SEQUENCE -->
+ <DisplayString Condition="pType->eTypeClass == 22">{*((com::sun::star::uno::BaseReference *)pData)} (INTERFACE)</DisplayString><!-- typelib_TypeClass_INTERFACE -->
<DisplayString>{pType->eTypeClass,en}</DisplayString>
<Expand>
- <Item Name="Data" Condition="pType->eTypeClass == 22">*((com::sun::star::uno::BaseReference *)pData)</Item>
- <Item Name="Data" Condition="pType->eTypeClass != 22">pData</Item>
+ <ExpandedItem Condition="pType->eTypeClass == 19">(com::sun::star::uno::Exception *)pData</ExpandedItem>
+ <ExpandedItem Condition="pType->eTypeClass == 22">(com::sun::star::uno::BaseReference *)pData</ExpandedItem>
+ <Item Name="Data" Condition="pType->eTypeClass != 19 && pType->eTypeClass != 22">pData</Item>
</Expand>
</Type>
- <Type Name="basegfx::internal::ImplMatLine<3>">
+ <Type Name="basegfx::internal::ImplMatLine < 3 >">
<DisplayString>{mfValue[0]}, {mfValue[1]}, {mfValue[2]}</DisplayString>
</Type>
- <Type Name="basegfx::internal::ImplHomMatrixTemplate<3>">
+ <Type Name="basegfx::internal::ImplHomMatrixTemplate < 3 >">
<DisplayString>{{{maLine[0]}}}, {{{maLine[1]}}}, {mpLine}</DisplayString>
</Type>
- <Type Name="o3tl::cow_wrapper<basegfx::Impl2DHomMatrix,o3tl::UnsafeRefCountingPolicy>::impl_t">
+ <Type Name="o3tl::cow_wrapper < basegfx::Impl2DHomMatrix,o3tl::UnsafeRefCountingPolicy >::impl_t">
<DisplayString>{m_value}</DisplayString>
</Type>
- <Type Name="o3tl::cow_wrapper<basegfx::Impl2DHomMatrix,o3tl::UnsafeRefCountingPolicy>">
+ <Type Name="o3tl::cow_wrapper < basegfx::Impl2DHomMatrix,o3tl::UnsafeRefCountingPolicy >">
<DisplayString>{m_pimpl}</DisplayString>
</Type>
<Type Name="basegfx::B2DHomMatrix">
@@ -100,69 +101,99 @@
<Type Name="SwRect">
<DisplayString>{m_Point}, {m_Size}</DisplayString>
</Type>
- <Type Name="com::sun::star::uno::Sequence<*>">
- <DisplayString Condition="_pSequence->nElements == 0">empty</DisplayString>
- <DisplayString>Sequence of {_pSequence->nElements} {"$T1",sb}</DisplayString>
+ <Type Name="com::sun::star::uno::Sequence < * >">
+ <DisplayString Condition="_pSequence->nElements == 0">empty sequence</DisplayString>
+ <DisplayString>sequence of {_pSequence->nElements} {"$T1",sb}</DisplayString>
<Expand>
<Item Name="[size]">_pSequence->nElements</Item>
<ArrayItems>
<Size>_pSequence->nElements</Size>
- <ValuePointer>reinterpret_cast< const $T1 * >( _pSequence->elements )</ValuePointer>
+ <ValuePointer>reinterpret_cast < const $T1 * >( _pSequence->elements )</ValuePointer>
</ArrayItems>
</Expand>
</Type>
- <Type Name="SwNodes">
+ <Type Name="BigPtrArray">
<DisplayString>{{{m_nSize} nodes}}</DisplayString>
<Expand>
- <Item Name="[Count]">m_nSize</Item>
+ <Item Name="[size]">m_nSize</Item>
<CustomListItems>
- <Variable Name="idx" InitialValue="0"/>
- <Variable Name="blockIx" InitialValue="0"/>
- <Variable Name="p" InitialValue="m_vpInf[ 0 ]"/>
+ <!-- Visualiser needs to know the type of variable (including pointer type).
+ If later we try to assign an incompatible value, visualiser will error out.
+ For pointers, valid syntax is e.g. "(BlockInfo*)nullptr" -->
+ <Variable Name="blocks" InitialValue="m_ppInf._Mypair._Myval2"/>
+ <Variable Name="count" InitialValue="m_nSize"/>
+ <Variable Name="pos" InitialValue="0"/>
+ <Variable Name="block_count" InitialValue="m_nBlock"/>
+ <Variable Name="block_pos" InitialValue="0"/>
+ <Variable Name="block" InitialValue="blocks[0]"/>
+ <Variable Name="next_block" InitialValue="block"/>
<Size>m_nSize</Size>
- <Loop>
- <Break Condition="idx >= m_nSize"/>
- <If Condition="p->nStart > idx || p->nEnd < idx">
- <Exec>blockIx = 0</Exec>
- <Loop>
- <Break Condition="blockIx >= m_vpInf._Mypair._Myval2._Mylast - m_vpInf._Mypair._Myval2._Myfirst"/>
- <Break Condition="p->nStart <= idx && p->nEnd >= idx"/>
- <Exec>blockIx++</Exec>
- <Exec>p = m_vpInf[ blockIx ]</Exec>
- </Loop>
+ <Break Condition="block_pos >= block_count"/>
+ <Break Condition="block == nullptr"/>
+ <Break Condition="block->nStart != 0"/>
+ <Break Condition="block->nEnd - block->nStart + 1 != block->nElem"/>
+
+ <Loop>
+ <Break Condition="pos >= count"/>
+ <Item>*block->mvData._Elems[ pos - block->nStart ]</Item>
+ <If Condition="pos == block->nEnd">
+ <Exec>block_pos++</Exec>
+ <Break Condition="block_pos >= block_count"/>
+ <Exec>next_block = blocks[block_pos]</Exec>
+ <Break Condition="next_block == nullptr"/>
+ <Break Condition="next_block->nEnd - next_block->nStart + 1 != next_block->nElem"/>
+ <Break Condition="next_block->nStart != block->nEnd + 1"/>
+ <Break Condition="next_block->nEnd <= count"/>
+ <Exec>block = next_block</Exec>
</If>
- <Item>*static_cast<SwNodePtr>(p->mvData[ idx - p->nStart ])</Item>
- <Exec>idx++</Exec>
+ <Exec>pos++</Exec>
</Loop>
</CustomListItems>
</Expand>
</Type>
<Type Name="SwNode">
- <DisplayString>{{SwNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{Node}}</DisplayString>
<Expand>
- <Item Name="Nodes">static_cast< SwNodes* >(m_pBlock->pBigArr)</Item>
+ <Item Name="Nodes">static_cast < SwNodes* >(m_pBlock->pBigArr)</Item>
</Expand>
</Type>
<Type Name="SwEndNode">
- <DisplayString>{{SwEndNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
+ <DisplayString Condition="m_pStartOfSection != nullptr">[{m_pBlock->nStart + m_nOffset}] {{EndNode}} - for {*m_pStartOfSection}</DisplayString>
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{EndNode}}</DisplayString>
</Type>
<Type Name="SwStartNode">
- <DisplayString Condition="m_eStartNodeType == 1">{{SwTableBoxStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
- <DisplayString Condition="m_eStartNodeType == 2">{{SwFlyStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
- <DisplayString Condition="m_eStartNodeType == 3">{{SwFootnoteStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
- <DisplayString Condition="m_eStartNodeType == 4">{{SwHeaderStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
- <DisplayString Condition="m_eStartNodeType == 5">{{SwFooterStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
- <DisplayString>{{SwStartNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 0">[{m_pBlock->nStart + m_nOffset}] {{NormalStartNode}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 1">[{m_pBlock->nStart + m_nOffset}] {{TableBoxStartNode}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 2">[{m_pBlock->nStart + m_nOffset}] {{FlyStartNode}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 3">[{m_pBlock->nStart + m_nOffset}] {{FootnoteStartNode}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 4">[{m_pBlock->nStart + m_nOffset}] {{HeaderStartNode}}</DisplayString>
+ <DisplayString Condition="m_eStartNodeType == 5">[{m_pBlock->nStart + m_nOffset}] {{FooterStartNode}}</DisplayString>
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{StartNode}}</DisplayString>
</Type>
<Type Name="SwContentNode">
- <DisplayString>{{SwContentNode {m_pBlock->nStart + m_nOffset}}}</DisplayString>
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{ContentNode}}</DisplayString>
+ </Type>
+ <Type Name="SwOLENode">
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{OLENode}}</DisplayString>
+ </Type>
+ <Type Name="SwGrfNode">
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{GrfNode}}</DisplayString>
+ </Type>
+ <Type Name="SwSectionNode">
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{SectionNode}}</DisplayString>
+ </Type>
+ <Type Name="SwTableNode">
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{TableNode}}</DisplayString>
+ </Type>
+ <Type Name="SwDummySectionNode">
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{DummySectionNode}}</DisplayString>
</Type>
<Type Name="SwTextNode">
- <DisplayString>{{SwTextNode {m_pBlock->nStart + m_nOffset}: {m_Text}}}</DisplayString>
+ <DisplayString>[{m_pBlock->nStart + m_nOffset}] {{TextNode: {m_Text}}}</DisplayString>
</Type>
<Type Name="SwNodeIndex">
<DisplayString>{{{*m_pNode}}}</DisplayString>
@@ -183,8 +214,35 @@
<Item Name="[size]">m_Array.node_count</Item>
<IndexListItems>
<Size>m_Array.node_count</Size>
- <ValueNode>**(SwFrameFormat**)((char*)(m_PosIndex.ptrs.spc.data_[$i]) - 0x10)</ValueNode>
+ <ValueNode>**reinterpret_cast < value_type* > (&static_cast < ByPos::node_type* > (static_cast < ByPos::node_type::trampoline* > (m_PosIndex.ptrs.spc.data_[$i]))->space)</ValueNode>
</IndexListItems>
</Expand>
</Type>
+ <Type Name="SwFormat">
+ <DisplayString>Format: "{m_aFormatName,sub}"</DisplayString>
+ </Type>
+ <Type Name="com::sun::star::uno::BaseReference">
+ <DisplayString Condition="_pInterface == nullptr">empty</DisplayString>
+ <DisplayString>{{{_pInterface}}}</DisplayString>
+ </Type>
+ <Type Name="com::sun::star::uno::Reference < * >">
+ <DisplayString Condition="_pInterface == nullptr">empty</DisplayString>
+ <DisplayString>{{{reinterpret_cast < $T1 * >(_pInterface)}}}</DisplayString>
+ <Expand>
+ <ExpandedItem>reinterpret_cast < $T1 * >(_pInterface)</ExpandedItem>
+ </Expand>
+ </Type>
+ <Type Name="rtl::Reference < * >">
+ <DisplayString Condition="m_pBody == nullptr">empty</DisplayString>
+ <DisplayString>{{{reinterpret_cast < $T1 * >(m_pBody)}}}</DisplayString>
+ <Expand>
+ <ExpandedItem>reinterpret_cast < $T1 * >(m_pBody)</ExpandedItem>
+ </Expand>
+ </Type>
+ <Type Name="VclPtr < * >">
+ <DisplayString>{m_rInnerRef}</DisplayString>
+ <Expand>
+ <ExpandedItem>m_rInnerRef</ExpandedItem>
+ </Expand>
+ </Type>
</AutoVisualizer>
\ No newline at end of file
More information about the Libreoffice-commits
mailing list