@@ -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