Cleaned up the mess, at this time, only viable data get synced (_work directory for Gothic-data, miranda for mdc-scripts. Need to symlink files to a working directory.
88 lines
2 KiB
D
88 lines
2 KiB
D
class HT_Array {
|
|
var int array;
|
|
var int numalloc;
|
|
var int numinarray;
|
|
}; instance HT@(HT_Array) {
|
|
};
|
|
|
|
func void HT_Array_Archiver(var HT_Array this) {
|
|
PM_SaveInt("length", this.numAlloc); // Hate to do it this way, but that's how I implemented it back then :/
|
|
PM_SaveInt("elements", this.numInArray);
|
|
|
|
var int ctr; ctr = 0;
|
|
var int k; k = 0;
|
|
repeat(k, this.numAlloc/4);
|
|
var int ptr; ptr = MEM_ReadInt(this.array+k*4);
|
|
if (!ptr) { continue; };
|
|
|
|
PM_SaveClassPtr(IntToString(ctr), ptr, "zCArray");
|
|
PM_SaveInt(ConcatStrings("pos", IntToString(ctr)), k);
|
|
ctr += 1;
|
|
end;
|
|
PM_SaveInt("subArrays", ctr);
|
|
};
|
|
|
|
func void HT_Array_Unarchiver(var HT_Array this) {
|
|
this.numAlloc = PM_Load("length");
|
|
this.numInArray = PM_Load("elements");
|
|
this.array = MEM_Alloc(this.numAlloc);
|
|
|
|
var int k; k = 0;
|
|
repeat(k, PM_Load("subArrays"));
|
|
var int pos; pos = PM_Load(ConcatStrings("pos", IntToString(k)));
|
|
MEM_WriteInt(this.array+pos*4, PM_Load(IntToString(k)));
|
|
end;
|
|
};
|
|
|
|
func void HT_Array_delete(var HT_Array ht) {
|
|
_HT_Destroy(_@(ht));
|
|
};
|
|
|
|
func int HT_CreateSized(var int size) {
|
|
return wrap(HT@, _HT_CreatePtr(size));
|
|
};
|
|
|
|
func int HT_Create() {
|
|
return +HT_CreateSized(HT_SIZE);
|
|
};
|
|
|
|
func void HT_Insert(var int hndl, var int val, var int key) {
|
|
_HT_Insert(getPtr(hndl), val, key);
|
|
};
|
|
|
|
func void HT_Resize(var int hndl, var int size) {
|
|
_HT_Resize(getPtr(hndl), size);
|
|
};
|
|
|
|
func int HT_Get(var int hndl, var int key) {
|
|
return _HT_Get(getPtr(hndl), key);
|
|
};
|
|
|
|
func int HT_Has(var int hndl, var int key) {
|
|
return _HT_Has(getPtr(hndl), key);
|
|
};
|
|
|
|
func void HT_Remove(var int hndl, var int key) {
|
|
_HT_Remove(getPtr(hndl), key);
|
|
};
|
|
|
|
func void HT_Change(var int hndl, var int val, var int key) {
|
|
_HT_Change(getPtr(hndl), val, key);
|
|
};
|
|
|
|
func void HT_InsertOrChange(var int hndl, var int val, var int key) {
|
|
_HT_InsertOrChange(getPtr(hndl), val, key);
|
|
};
|
|
|
|
func int HT_GetNumber(var int hndl) {
|
|
return _HT_GetNumber(getPtr(hndl));
|
|
};
|
|
|
|
func void HT_ForEach(var int hndl, var func fnc) {
|
|
_HT_ForEach(getPtr(hndl), fnc);
|
|
};
|
|
|
|
func void HT_Destroy(var int hndl) {
|
|
delete(hndl);
|
|
};
|
|
|