Skip to content

Commit 86464b9

Browse files
committed
Remove DfVector, break MSVC builds until further notice.
1 parent 5b52869 commit 86464b9

34 files changed

Lines changed: 281 additions & 393 deletions

library/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ include/SDL_keyboard.h
3939
include/SDL_keysym.h
4040
include/TileTypes.h
4141
include/Types.h
42-
include/Vector.h
4342
include/VersionInfo.h
4443
include/VersionInfoFactory.h
4544
include/Virtual.h

library/DataDefs.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ void virtual_identity::Init(Core *core)
154154
// Read pre-filled vtable ptrs
155155
OffsetGroup *ptr_table = core->vinfo->getGroup("vtable");
156156
for (virtual_identity *p = list; p; p = p->next) {
157-
uint32_t tmp;
157+
void * tmp;
158158
if (ptr_table->getSafeAddress(p->getName(),tmp))
159-
p->vtable_ptr = (void*)tmp;
159+
p->vtable_ptr = tmp;
160160
}
161161
}
162162

@@ -169,7 +169,7 @@ DF_KNOWN_GLOBALS
169169

170170
void DFHack::InitDataDefGlobals(Core *core) {
171171
OffsetGroup *global_table = core->vinfo->getGroup("global");
172-
uint32_t tmp;
172+
void * tmp;
173173

174174
#define SIMPLE_GLOBAL(name,tname) \
175175
if (global_table->getSafeAddress(#name,tmp)) df::global::name = (tname*)tmp;

library/Process-linux.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ Process::~Process()
111111
string Process::doReadClassName (void * vptr)
112112
{
113113
//FIXME: BAD!!!!!
114-
int typeinfo = Process::readDWord((uint32_t)vptr - 0x4);
115-
int typestring = Process::readDWord(typeinfo + 0x4);
114+
void * typeinfo = Process::readPtr(vptr - 0x4);
115+
void * typestring = Process::readPtr(typeinfo + 0x4);
116116
string raw = readCString(typestring);
117117
size_t start = raw.find_first_of("abcdefghijklmnopqrstuvwxyz");// trim numbers
118118
size_t end = raw.length();
@@ -138,8 +138,8 @@ void Process::getMemRanges( vector<t_memrange> & ranges )
138138
(char*)&permissions,
139139
&offset, &device1, &device2, &node,
140140
(char*)&temp.name);
141-
temp.start = start;
142-
temp.end = end;
141+
temp.start = (void *) start;
142+
temp.end = (void *) end;
143143
temp.read = permissions[0] == 'r';
144144
temp.write = permissions[1] == 'w';
145145
temp.execute = permissions[2] == 'x';
@@ -214,7 +214,7 @@ bool Process::setPermisions(const t_memrange & range,const t_memrange &trgrange)
214214
if(trgrange.read)protect|=PROT_READ;
215215
if(trgrange.write)protect|=PROT_WRITE;
216216
if(trgrange.execute)protect|=PROT_EXEC;
217-
result=mprotect((void *)range.start, range.end-range.start,protect);
217+
result=mprotect((void *)range.start, (size_t)range.end-(size_t)range.start,protect);
218218

219219
return result==0;
220220
}

library/VersionInfo.cpp

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

184186
void OffsetGroup::createAddress(const string & key)
185187
{
186-
OGd->addresses[key] = nullableUint32(NOT_SET, 0);
188+
OGd->addresses[key] = nullableVoidPtr(NOT_SET, 0);
187189
}
188190

189191
void OffsetGroup::createHexValue(const string & key)
@@ -227,10 +229,10 @@ void OffsetGroup::setOffsetValidity (const string & key, const INVAL_TYPE inval)
227229

228230
void 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

411413
void 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

471473
std::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

library/include/MemAccess.h

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ namespace DFHack
7272
*/
7373
struct DFHACK_EXPORT t_memrange
7474
{
75-
uint64_t start;
76-
uint64_t end;
75+
void * start;
76+
void * end;
7777
// memory range name (if any)
7878
char name[1024];
7979
// permission to read
@@ -84,7 +84,7 @@ namespace DFHack
8484
bool execute : 1;
8585
// is a shared region
8686
bool shared : 1;
87-
inline bool isInRange( uint64_t address)
87+
inline bool isInRange( void * address)
8888
{
8989
if (address >= start && address < end) return true;
9090
return false;
@@ -104,99 +104,110 @@ namespace DFHack
104104
Process(VersionInfoFactory * known_versions);
105105
~Process();
106106
/// read a 8-byte integer
107-
uint64_t readQuad(const uint32_t address)
107+
uint64_t readQuad(const void * address)
108108
{
109109
return *(uint64_t *)address;
110110
}
111111
/// read a 8-byte integer
112-
void readQuad(const uint32_t address, uint64_t & value)
112+
void readQuad(const void * address, uint64_t & value)
113113
{
114114
value = *(uint64_t *)address;
115115
};
116116
/// write a 8-byte integer
117-
void writeQuad(const uint32_t address, const uint64_t value)
117+
void writeQuad(const void * address, const uint64_t value)
118118
{
119119
(*(uint64_t *)address) = value;
120120
};
121121

122122
/// read a 4-byte integer
123-
uint32_t readDWord(const uint32_t address)
123+
uint32_t readDWord(const void * address)
124124
{
125125
return *(uint32_t *)address;
126126
}
127127
/// read a 4-byte integer
128-
void readDWord(const uint32_t address, uint32_t & value)
128+
void readDWord(const void * address, uint32_t & value)
129129
{
130130
value = *(uint32_t *)address;
131131
};
132132
/// write a 4-byte integer
133-
void writeDWord(const uint32_t address, const uint32_t value)
133+
void writeDWord(const void * address, const uint32_t value)
134134
{
135135
(*(uint32_t *)address) = value;
136136
};
137137

138+
/// read a pointer
139+
void * readPtr(const void * address)
140+
{
141+
return *(void **)address;
142+
}
143+
/// read a pointer
144+
void readPtr(const void * address, void * & value)
145+
{
146+
value = *(void **)address;
147+
};
148+
138149
/// read a float
139-
float readFloat(const uint32_t address)
150+
float readFloat(const void * address)
140151
{
141152
return *(float*)address;
142153
}
143154
/// write a float
144-
void readFloat(const uint32_t address, float & value)
155+
void readFloat(const void * address, float & value)
145156
{
146157
value = *(float*)address;
147158
};
148159

149160
/// read a 2-byte integer
150-
uint16_t readWord(const uint32_t address)
161+
uint16_t readWord(const void * address)
151162
{
152163
return *(uint16_t *)address;
153164
}
154165
/// read a 2-byte integer
155-
void readWord(const uint32_t address, uint16_t & value)
166+
void readWord(const void * address, uint16_t & value)
156167
{
157168
value = *(uint16_t *)address;
158169
};
159170
/// write a 2-byte integer
160-
void writeWord(const uint32_t address, const uint16_t value)
171+
void writeWord(const void * address, const uint16_t value)
161172
{
162173
(*(uint16_t *)address) = value;
163174
};
164175

165176
/// read a byte
166-
uint8_t readByte(const uint32_t address)
177+
uint8_t readByte(const void * address)
167178
{
168179
return *(uint8_t *)address;
169180
}
170181
/// read a byte
171-
void readByte(const uint32_t address, uint8_t & value)
182+
void readByte(const void * address, uint8_t & value)
172183
{
173184
value = *(uint8_t *)address;
174185
};
175186
/// write a byte
176-
void writeByte(const uint32_t address, const uint8_t value)
187+
void writeByte(const void * address, const uint8_t value)
177188
{
178189
(*(uint8_t *)address) = value;
179190
};
180191

181192
/// read an arbitrary amount of bytes
182-
void read( uint32_t address, uint32_t length, uint8_t* buffer)
193+
void read(void * address, uint32_t length, uint8_t* buffer)
183194
{
184195
memcpy(buffer, (void *) address, length);
185196
};
186197
/// write an arbitrary amount of bytes
187-
void write(uint32_t address, uint32_t length, uint8_t* buffer)
198+
void write(void * address, uint32_t length, uint8_t* buffer)
188199
{
189200
memcpy((void *) address, buffer, length);
190201
};
191202

192203
/// read an STL string
193-
const std::string readSTLString (uint32_t offset)
204+
const std::string readSTLString (void * offset)
194205
{
195206
std::string * str = (std::string *) offset;
196207
return *str;
197208
};
198209
/// read an STL string
199-
size_t readSTLString (uint32_t offset, char * buffer, size_t bufcapacity)
210+
size_t readSTLString (void * offset, char * buffer, size_t bufcapacity)
200211
{
201212
if(!bufcapacity || bufcapacity == 1)
202213
return 0;
@@ -209,7 +220,7 @@ namespace DFHack
209220
* write an STL string
210221
* @return length written
211222
*/
212-
size_t writeSTLString(const uint32_t address, const std::string writeString)
223+
size_t writeSTLString(const void * address, const std::string writeString)
213224
{
214225
std::string * str = (std::string *) address;
215226
str->assign(writeString);
@@ -219,7 +230,7 @@ namespace DFHack
219230
* attempt to copy a string from source address to target address. may truncate or leak, depending on platform
220231
* @return length copied
221232
*/
222-
size_t copySTLString(const uint32_t address, const uint32_t target)
233+
size_t copySTLString(const void * address, const uint32_t target)
223234
{
224235
std::string * strsrc = (std::string *) address;
225236
std::string * str = (std::string *) target;
@@ -239,7 +250,7 @@ namespace DFHack
239250
}
240251

241252
/// read a null-terminated C string
242-
const std::string readCString (uint32_t offset)
253+
const std::string readCString (void * offset)
243254
{
244255
return std::string((char *) offset);
245256
};

0 commit comments

Comments
 (0)