rapidjson.natvis 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  3. <!-- rapidjson::GenericValue - basic support -->
  4. <Type Name="rapidjson::GenericValue&lt;*,*&gt;">
  5. <DisplayString Condition="(data_.f.flags &amp; kTypeMask) == kNullType">null</DisplayString>
  6. <DisplayString Condition="data_.f.flags == kTrueFlag">true</DisplayString>
  7. <DisplayString Condition="data_.f.flags == kFalseFlag">false</DisplayString>
  8. <DisplayString Condition="data_.f.flags == kShortStringFlag">{(const Ch*)data_.ss.str,na}</DisplayString>
  9. <DisplayString Condition="(data_.f.flags &amp; kTypeMask) == kStringType">{(const Ch*)((size_t)data_.s.str &amp; 0x0000FFFFFFFFFFFF),na}</DisplayString>
  10. <DisplayString Condition="(data_.f.flags &amp; kNumberIntFlag) == kNumberIntFlag">{data_.n.i.i}</DisplayString>
  11. <DisplayString Condition="(data_.f.flags &amp; kNumberUintFlag) == kNumberUintFlag">{data_.n.u.u}</DisplayString>
  12. <DisplayString Condition="(data_.f.flags &amp; kNumberInt64Flag) == kNumberInt64Flag">{data_.n.i64}</DisplayString>
  13. <DisplayString Condition="(data_.f.flags &amp; kNumberUint64Flag) == kNumberUint64Flag">{data_.n.u64}</DisplayString>
  14. <DisplayString Condition="(data_.f.flags &amp; kNumberDoubleFlag) == kNumberDoubleFlag">{data_.n.d}</DisplayString>
  15. <DisplayString Condition="data_.f.flags == kObjectType">Object members={data_.o.size}</DisplayString>
  16. <DisplayString Condition="data_.f.flags == kArrayType">Array members={data_.a.size}</DisplayString>
  17. <Expand>
  18. <Item Condition="data_.f.flags == kObjectType" Name="[size]">data_.o.size</Item>
  19. <Item Condition="data_.f.flags == kObjectType" Name="[capacity]">data_.o.capacity</Item>
  20. <ArrayItems Condition="data_.f.flags == kObjectType">
  21. <Size>data_.o.size</Size>
  22. <!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->
  23. <ValuePointer>(rapidjson::GenericMember&lt;$T1,$T2&gt;*)(((size_t)data_.o.members) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>
  24. </ArrayItems>
  25. <Item Condition="data_.f.flags == kArrayType" Name="[size]">data_.a.size</Item>
  26. <Item Condition="data_.f.flags == kArrayType" Name="[capacity]">data_.a.capacity</Item>
  27. <ArrayItems Condition="data_.f.flags == kArrayType">
  28. <Size>data_.a.size</Size>
  29. <!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->
  30. <ValuePointer>(rapidjson::GenericValue&lt;$T1,$T2&gt;*)(((size_t)data_.a.elements) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>
  31. </ArrayItems>
  32. </Expand>
  33. </Type>
  34. </AutoVisualizer>