Skip to content

Commit 10a3022

Browse files
committed
Add ElementType() for ValueContainers and use it to fix boost::container::static_vector loader.
1 parent 65870f3 commit 10a3022

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

Visual_Studio_2015/GraphicalDebugging/ExpressionLoader.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,28 +1396,36 @@ public override void Load(Loaders loaders, bool accessMemory,
13961396

13971397
abstract class ValuesContainer : ContainerLoader
13981398
{
1399+
virtual public string ElementType(string type)
1400+
{
1401+
List<string> tparams = Util.Tparams(type);
1402+
return tparams.Count > 0 ? tparams[0] : "";
1403+
}
1404+
13991405
public override void Load(Loaders loaders, bool accessMemory,
14001406
Debugger debugger, string name, string type,
1401-
out Geometry.Traits traits, out ExpressionDrawer.ValuesContainer result)
1407+
out Geometry.Traits traits,
1408+
out ExpressionDrawer.ValuesContainer result)
14021409
{
14031410
traits = null;
14041411
result = null;
14051412

14061413
if (accessMemory)
1407-
LoadMemory(debugger, name, out result);
1414+
LoadMemory(debugger, name, type, out result);
14081415

14091416
if (result == null)
14101417
LoadParsed(debugger, name, out result);
14111418
}
14121419

1413-
protected void LoadMemory(Debugger debugger, string name, out ExpressionDrawer.ValuesContainer result)
1420+
protected void LoadMemory(Debugger debugger, string name, string type,
1421+
out ExpressionDrawer.ValuesContainer result)
14141422
{
14151423
result = null;
14161424

1425+
string ptrName = "((" + this.ElementType(type) + "*)" + this.ElementPtrName(name) + ")";
1426+
14171427
MemoryReader.ValueConverter<double>
1418-
valueConverter = MemoryReader.GetNumericConverter(debugger,
1419-
this.ElementPtrName(name),
1420-
null);
1428+
valueConverter = MemoryReader.GetNumericConverter(debugger, ptrName, null);
14211429
if (valueConverter == null)
14221430
return;
14231431

@@ -1508,6 +1516,14 @@ public override bool MatchType(string type, string id)
15081516
return NameSizeFromType(type, out foo, out bar);
15091517
}
15101518

1519+
public override string ElementType(string type)
1520+
{
1521+
string elemType;
1522+
int size;
1523+
NameSizeFromType(type, out elemType, out size);
1524+
return elemType;
1525+
}
1526+
15111527
public override string ElementPtrName(string name)
15121528
{
15131529
// make raw pointer from the carray
@@ -1656,7 +1672,7 @@ public override bool ForEachMemoryBlock(Debugger debugger, string name,
16561672
MemoryReader.Converter<double> elementConverter,
16571673
MemoryBlockPredicate memoryBlockPredicate)
16581674
{
1659-
return this.ForEachMemoryBlock(debugger, name, name + ".m_holder.storage.data",
1675+
return this.ForEachMemoryBlock(debugger, name, this.ElementPtrName(name),
16601676
elementConverter, memoryBlockPredicate);
16611677
}
16621678
}

0 commit comments

Comments
 (0)