@@ -33,13 +33,7 @@ abstract class ContainerLoader : Loader
3333 // With ReadArray knowing which memory copying optimizations can be made based on ElementLoader's type
3434 // Or not
3535
36- // TODO: Move from here into specific classes
37- virtual public string ElementType ( string type )
38- {
39- List < string > tparams = Util . Tparams ( type ) ;
40- return tparams . Count > 0 ? tparams [ 0 ] : "" ;
41- }
42-
36+ abstract public string ElementType ( string type ) ;
4337 abstract public string ElementName ( string name , string elemType ) ;
4438 public delegate bool MemoryBlockPredicate ( double [ ] values ) ;
4539 abstract public bool ForEachMemoryBlock ( MemoryReader mreader , Debugger debugger ,
@@ -187,6 +181,12 @@ class StdArray : ContiguousContainer
187181 {
188182 public override string Id ( ) { return "std::array" ; }
189183
184+ public override string ElementType ( string type )
185+ {
186+ List < string > tparams = Util . Tparams ( type ) ;
187+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
188+ }
189+
190190 public override string ElementName ( string name , string elType )
191191 {
192192 return name + "._Elems[0]" ;
@@ -215,6 +215,12 @@ class BoostContainerVector : ContiguousContainer
215215 {
216216 public override string Id ( ) { return "boost::container::vector" ; }
217217
218+ public override string ElementType ( string type )
219+ {
220+ List < string > tparams = Util . Tparams ( type ) ;
221+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
222+ }
223+
218224 public override string ElementName ( string name , string elType )
219225 {
220226 return name + ".m_holder.m_start[0]" ;
@@ -267,6 +273,12 @@ public override int LoadSize(Debugger debugger, string name)
267273 return ExpressionParser . LoadSize ( debugger , name + ".m_size" ) ;
268274 }
269275
276+ public override string ElementType ( string type )
277+ {
278+ List < string > tparams = Util . Tparams ( type ) ;
279+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
280+ }
281+
270282 public override string ElementName ( string name , string elType )
271283 {
272284 return "(*(" + name + ".m_first))" ;
@@ -359,6 +371,12 @@ public override string RandomAccessElementName(string rawName, int i)
359371 return FirstStr ( rawName ) + "[" + i + "]" ;
360372 }
361373
374+ public override string ElementType ( string type )
375+ {
376+ List < string > tparams = Util . Tparams ( type ) ;
377+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
378+ }
379+
362380 public override string ElementName ( string name , string elType )
363381 {
364382 return FirstStr ( name ) + "[0]" ;
@@ -399,6 +417,12 @@ class StdDeque : RandomAccessContainer
399417 {
400418 public override string Id ( ) { return "std::deque" ; }
401419
420+ public override string ElementType ( string type )
421+ {
422+ List < string > tparams = Util . Tparams ( type ) ;
423+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
424+ }
425+
402426 public override string ElementName ( string name , string elType )
403427 {
404428 return ElementStr ( name , 0 ) ;
@@ -541,6 +565,12 @@ class StdList : ContainerLoader
541565 {
542566 public override string Id ( ) { return "std::list" ; }
543567
568+ public override string ElementType ( string type )
569+ {
570+ List < string > tparams = Util . Tparams ( type ) ;
571+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
572+ }
573+
544574 public override string ElementName ( string name , string elType )
545575 {
546576 return HeadStr ( name ) + "->_Next->_Myval" ;
@@ -657,6 +687,12 @@ class StdSet : ContainerLoader
657687 {
658688 public override string Id ( ) { return "std::set" ; }
659689
690+ public override string ElementType ( string type )
691+ {
692+ List < string > tparams = Util . Tparams ( type ) ;
693+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
694+ }
695+
660696 public override string ElementName ( string name , string elType )
661697 {
662698 return HeadStr ( name ) + "->_Myval" ;
@@ -845,6 +881,12 @@ public override string RandomAccessElementName(string rawName, int i)
845881 return rawName + "._items[" + i + "]" ;
846882 }
847883
884+ public override string ElementType ( string type )
885+ {
886+ List < string > tparams = Util . Tparams ( type ) ;
887+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
888+ }
889+
848890 public override string ElementName ( string name , string elType )
849891 {
850892 return name + "._items[0]" ;
@@ -869,6 +911,12 @@ class CSLinkedList : ContainerLoader
869911 {
870912 public override string Id ( ) { return "System.Collections.Generic.LinkedList" ; }
871913
914+ public override string ElementType ( string type )
915+ {
916+ List < string > tparams = Util . Tparams ( type ) ;
917+ return tparams . Count > 0 ? tparams [ 0 ] : "" ;
918+ }
919+
872920 public override string ElementName ( string name , string elType )
873921 {
874922 return name + ".head.item" ;
0 commit comments