@@ -158,6 +158,8 @@ namespace DFHack
158158{
159159 typedef pair <INVAL_TYPE , uint32_t > nullableUint32;
160160 typedef map <string, nullableUint32 >::iterator uint32_Iter;
161+ typedef pair <INVAL_TYPE , void *> nullableVoidPtr;
162+ typedef map <string, nullableVoidPtr >::iterator voidptr_Iter;
161163 typedef pair <INVAL_TYPE , int32_t > nullableInt32;
162164 typedef map <string, nullableInt32 >::iterator int32_Iter;
163165 typedef pair <INVAL_TYPE , string> nullableString;
@@ -166,7 +168,7 @@ namespace DFHack
166168 class OffsetGroupPrivate
167169 {
168170 public:
169- map <string, nullableUint32 > addresses;
171+ map <string, nullableVoidPtr > addresses;
170172 map <string, nullableUint32 > hexvals;
171173 map <string, nullableInt32 > offsets;
172174 map <string, nullableString > strings;
@@ -183,7 +185,7 @@ void OffsetGroup::createOffset(const string & key)
183185
184186void OffsetGroup::createAddress (const string & key)
185187{
186- OGd->addresses [key] = nullableUint32 (NOT_SET , 0 );
188+ OGd->addresses [key] = nullableVoidPtr (NOT_SET , 0 );
187189}
188190
189191void OffsetGroup::createHexValue (const string & key)
@@ -227,10 +229,10 @@ void OffsetGroup::setOffsetValidity (const string & key, const INVAL_TYPE inval)
227229
228230void OffsetGroup::setAddress (const string & key, const string & value, const INVAL_TYPE inval)
229231{
230- uint32_Iter it = OGd->addresses .find (key);
232+ voidptr_Iter it = OGd->addresses .find (key);
231233 if (it != OGd->addresses .end ())
232234 {
233- uint32_t address = strtol (value.c_str (), NULL , 16 );
235+ void * address = ( void *) strtol (value.c_str (), NULL , 16 );
234236 if ((*it).second .second == address)
235237 std::cout << " Pointless address setting: " << this ->getFullName () + key << endl;
236238 (*it).second .second = address;
@@ -244,7 +246,7 @@ void OffsetGroup::setAddressValidity (const string & key, const INVAL_TYPE inval
244246{
245247 if (inval != NOT_SET )
246248 {
247- uint32_Iter it = OGd->addresses .find (key);
249+ voidptr_Iter it = OGd->addresses .find (key);
248250 if (it != OGd->addresses .end ())
249251 {
250252 (*it).second .first = inval;
@@ -305,9 +307,9 @@ void OffsetGroup::setStringValidity (const string & key, const INVAL_TYPE inval)
305307}
306308
307309// Get named address
308- uint32_t OffsetGroup::getAddress (const string & key)
310+ void * OffsetGroup::getAddress (const string & key)
309311{
310- uint32_Iter iter = OGd->addresses .find (key);
312+ voidptr_Iter iter = OGd->addresses .find (key);
311313
312314 if (iter != OGd->addresses .end ())
313315 {
@@ -321,9 +323,9 @@ uint32_t OffsetGroup::getAddress (const string & key)
321323}
322324
323325// Get named offset, return bool instead of throwing exceptions
324- bool OffsetGroup::getSafeAddress (const string & key, uint32_t & out)
326+ bool OffsetGroup::getSafeAddress (const string & key, void * & out)
325327{
326- uint32_Iter iter = OGd->addresses .find (key);
328+ voidptr_Iter iter = OGd->addresses .find (key);
327329 if (iter != OGd->addresses .end () && (*iter).second .first == IS_VALID )
328330 {
329331 out = (*iter).second .second ;
@@ -410,7 +412,7 @@ OffsetGroup * OffsetGroup::createGroup(const std::string &name)
410412
411413void OffsetGroup::RebaseAddresses (int32_t offset)
412414{
413- for (uint32_Iter iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter++)
415+ for (voidptr_Iter iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter++)
414416 {
415417 if (iter->second .first )
416418 OGd->addresses [iter->first ].second = iter->second .second + offset;
@@ -470,18 +472,19 @@ std::string OffsetGroup::getFullName()
470472
471473std::string OffsetGroup::PrintOffsets (int indentation)
472474{
475+ voidptr_Iter addriter;
473476 uint32_Iter iter;
474477 ostringstream ss;
475478 indentr i (indentation);
476- typedef pair <uint32_t , pair< string, nullableUint32 > > horrible;
479+ typedef pair <void * , pair< string, nullableVoidPtr > > horrible;
477480 vector < horrible > addrsorter;
478- for (iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter ++)
481+ for (addriter = OGd->addresses .begin (); addriter != OGd->addresses .end (); addriter ++)
479482 {
480- if (!(*iter ).second .first )
481- addrsorter.push_back ( make_pair ( 0 , *iter ) );
483+ if (!(*addriter ).second .first )
484+ addrsorter.push_back ( make_pair ( ( void *) 0 , *addriter ) );
482485 else
483486 {
484- addrsorter.push_back ( make_pair ( (*iter ).second .second , *iter ) );
487+ addrsorter.push_back ( make_pair ( (*addriter ).second .second , *addriter ) );
485488 }
486489 }
487490 std::sort (addrsorter.begin (), addrsorter.end (), compare_pair_first<>());
@@ -569,7 +572,7 @@ void OffsetGroup::setInvalid(INVAL_TYPE invalidity)
569572 if (invalidity == NOT_SET )
570573 return ;
571574
572- uint32_Iter iter;
575+ voidptr_Iter iter;
573576 for (iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter++)
574577 {
575578 if ((*iter).second .first )
@@ -581,17 +584,18 @@ void OffsetGroup::setInvalid(INVAL_TYPE invalidity)
581584 if ((*iter2).second .first )
582585 (*iter2).second .first = invalidity;
583586 }
584- for (iter = OGd->hexvals .begin (); iter != OGd->hexvals .end (); iter++)
585- {
586- if ((*iter).second .first )
587- (*iter).second .first = invalidity;
588- }
589- strings_Iter iter3;
590- for (iter3 = OGd->strings .begin (); iter3 != OGd->strings .end (); iter3++)
587+ uint32_Iter iter3;
588+ for (iter3 = OGd->hexvals .begin (); iter3 != OGd->hexvals .end (); iter3++)
591589 {
592590 if ((*iter3).second .first )
593591 (*iter3).second .first = invalidity;
594592 }
593+ strings_Iter iter5;
594+ for (iter5 = OGd->strings .begin (); iter5 != OGd->strings .end (); iter5++)
595+ {
596+ if ((*iter5).second .first )
597+ (*iter5).second .first = invalidity;
598+ }
595599 groups_Iter iter4;
596600 for (iter4 = OGd->groups .begin (); iter4 != OGd->groups .end (); iter4++)
597601 {
@@ -603,7 +607,7 @@ std::vector<OffsetKey> OffsetGroup::getKeys() const
603607 std::vector<OffsetKey> ret;
604608 OffsetKey K;
605609 K.keytype =IS_ADDRESS ;
606- for (uint32_Iter iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter++)
610+ for (voidptr_Iter iter = OGd->addresses .begin (); iter != OGd->addresses .end (); iter++)
607611 {
608612 K.key =iter->first ;
609613 K.inval =iter->second .first ;
@@ -1015,7 +1019,7 @@ void VersionInfo::setClassChild (t_class * parent, const char * name, const char
10151019
10161020
10171021// FIXME: This in now DEPRECATED!
1018- bool VersionInfo::resolveObjectToClassID (const uint32_t address, int32_t & classid)
1022+ bool VersionInfo::resolveObjectToClassID (const void * address, int32_t & classid)
10191023{
10201024 uint32_t vtable = d->p ->readDWord (address);
10211025 // try to find the vtable in our cache
0 commit comments