From b6fa60b0bd27df4d98004eec980de09e7d26a386 Mon Sep 17 00:00:00 2001 From: Twilight Suzuka Date: Thu, 16 Mar 2006 02:11:48 +0000 Subject: [PATCH] Modified to fix memory leaks and improve speed --- dlls/arrayx/Array.cpp | 7 +- dlls/arrayx/Array.ncb | Bin 230400 -> 230400 bytes dlls/arrayx/Array.opt | Bin 48640 -> 48640 bytes dlls/arrayx/Array.plg | 66 +---------------- dlls/arrayx/BinTrieNativeFunctions.h | 3 +- dlls/arrayx/BinTrieNatives.cpp | 12 ++++ dlls/arrayx/CArray.h | 5 +- dlls/arrayx/CBaseList.h | 1 + dlls/arrayx/CBaseMap.h | 1 + dlls/arrayx/CBinTrie.h | 6 +- dlls/arrayx/CHashtable.h | 5 +- dlls/arrayx/CKeytable.h | 5 +- dlls/arrayx/Capsule.h | 13 ++-- dlls/arrayx/ComboArray.h | 7 +- dlls/arrayx/ComboTable.h | 11 +-- dlls/arrayx/GenericNatives.h | 46 ++++++++---- dlls/arrayx/JudyExtra.cpp | 104 ++++++++++++++++++++++++--- dlls/arrayx/JudyExtra.h | 6 +- 18 files changed, 184 insertions(+), 114 deletions(-) diff --git a/dlls/arrayx/Array.cpp b/dlls/arrayx/Array.cpp index 50d83f1e..293a4f69 100644 --- a/dlls/arrayx/Array.cpp +++ b/dlls/arrayx/Array.cpp @@ -24,12 +24,11 @@ void OnAmxxAttach( void ) MF_AddNatives(map_exports); MF_AddNatives(map_creation_exports); - } void OnAmxxDetach( void ) { - MasterTrie.Clear(); - MasterList.Clear(); - MasterMap.Clear(); + JudyClearMasterTrie(&MasterTrie); + JudyClearMasterList(&MasterList); + JudyClearMasterMap(&MasterMap); } \ No newline at end of file diff --git a/dlls/arrayx/Array.ncb b/dlls/arrayx/Array.ncb index fc670dbf0e910f94f273ca8f0aa76b872d412214..5a8834e04e07a88d1e05ca08fedfa1c1205d2a50 100644 GIT binary patch delta 19381 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 X=`Q$1D0b=ir??(z9{MYv0{MRc1so>; delta 17792 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 diff --git a/dlls/arrayx/Array.plg b/dlls/arrayx/Array.plg index e854a47d..07d02e25 100644 --- a/dlls/arrayx/Array.plg +++ b/dlls/arrayx/Array.plg @@ -6,22 +6,7 @@ --------------------Configuration: Array - Win32 Release--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC49.tmp" with contents -[ -/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ARRAY_EXPORTS" /FR"Release/" /Fp"Release/Array.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\Array.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\BinTrieNatives.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\Capsule.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\CArray.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\CBinTrie.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\CKeytable.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\ListNatives.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\MapNatives.cpp" -"C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\amxxmodule.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC49.tmp" -Creating temporary file "C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC4A.tmp" with contents +Creating temporary file "C:\DOCUME~1\Edward\LOCALS~1\Temp\RSP36D.tmp" with contents [ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/Array.pdb" /machine:I386 /out:"Release/Array.dll" /implib:"Release/Array.lib" ".\Release\Array.obj" @@ -36,61 +21,16 @@ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32 ".\Release\amxxmodule.obj" ".\Judy.lib" ] -Creating command line "link.exe @C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC4A.tmp" +Creating command line "link.exe @C:\DOCUME~1\Edward\LOCALS~1\Temp\RSP36D.tmp"

Output Window

-Compiling... -Array.cpp -BinTrieNatives.cpp -Capsule.cpp -CArray.cpp -CBinTrie.cpp -CKeytable.cpp -JudyExtra.cpp -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(8) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(15) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(40) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(75) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(80) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(83) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(103) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(107) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(110) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(133) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(147) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(152) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(155) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(170) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(178) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(186) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(189) : warning C4101: 'e' : unreferenced local variable -C:\Documents and Settings\Edward\Desktop\module\Judy Test\Array\JudyExtra.cpp(217) : warning C4101: 'e' : unreferenced local variable -ListNatives.cpp -MapNatives.cpp -amxxmodule.cpp Linking... Creating library Release/Array.lib and object Release/Array.exp LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library -Creating temporary file "C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC4E.tmp" with contents -[ -/nologo /o"Release/Array.bsc" -".\Release\Array.sbr" -".\Release\BinTrieNatives.sbr" -".\Release\Capsule.sbr" -".\Release\CArray.sbr" -".\Release\CBinTrie.sbr" -".\Release\CKeytable.sbr" -".\Release\JudyExtra.sbr" -".\Release\ListNatives.sbr" -".\Release\MapNatives.sbr" -".\Release\amxxmodule.sbr"] -Creating command line "bscmake.exe @C:\DOCUME~1\Edward\LOCALS~1\Temp\RSPC4E.tmp" -Creating browse info file... -

Output Window

Results

-Array.dll - 0 error(s), 19 warning(s) +Array.dll - 0 error(s), 1 warning(s) diff --git a/dlls/arrayx/BinTrieNativeFunctions.h b/dlls/arrayx/BinTrieNativeFunctions.h index 03beacea..0b258f4a 100644 --- a/dlls/arrayx/BinTrieNativeFunctions.h +++ b/dlls/arrayx/BinTrieNativeFunctions.h @@ -48,8 +48,7 @@ #define JUDY_SLAVE_ISEMPTY_FUNC JUDY_GLUE_FUNC( bintrie , _isempty ) #define JUDY_SLAVE_ISEMPTY_STR JUDY_GLUE_STR ( bintrie , _isempty ) -#define JUDY_SLAVE_REMOVE_FUNC JUDY_GLUE_FUNC( bintrie , _remove ) -#define JUDY_SLAVE_REMOVE_STR JUDY_GLUE_STR ( bintrie , _remove ) +#define NO_JUDY_SLAVE_REMOVE_FUNC #define JUDY_SLAVE_SEARCH_FUNCTIONS #define JUDY_SLAVE_FIRST_FUNC JUDY_GLUE_FUNC( bintrie , _first ) diff --git a/dlls/arrayx/BinTrieNatives.cpp b/dlls/arrayx/BinTrieNatives.cpp index 8224dd49..9de5504b 100644 --- a/dlls/arrayx/BinTrieNatives.cpp +++ b/dlls/arrayx/BinTrieNatives.cpp @@ -46,12 +46,24 @@ static cell AMX_NATIVE_CALL bintrie_get(AMX *amx,cell *params) JUDY_ERROR_CATCH("Judy Error: (No error possible) - Slave Get Function "); } +static cell AMX_NATIVE_CALL bintrie_remove(AMX *amx,cell *params) +{ + DTYPE* Unit = NULL; + + JUDY_GET_INDEX(MNAME,Unit, params[1]); + ITYPE Indice = JUDY_GET_KEY(params,2); + + try { return Unit->Delete(Indice ); } + JUDY_ERROR_CATCH("Judy Error: (No error possible) - Slave Delete Function "); +} + AMX_NATIVE_INFO bintrie_usage_exports[] = { { "bintrie_create", bintrie_create }, { "bintrie_set", bintrie_set }, { "bintrie_get", bintrie_get }, + { "bintrie_remove", bintrie_remove }, { NULL, NULL } }; \ No newline at end of file diff --git a/dlls/arrayx/CArray.h b/dlls/arrayx/CArray.h index 8af5881c..7dcaa9b8 100644 --- a/dlls/arrayx/CArray.h +++ b/dlls/arrayx/CArray.h @@ -16,12 +16,13 @@ private: public: Array() { Table = NULL; } - ~Array() { Clear(); } + ~Array() { Clear(); } + void Remove() { delete this; } Word_t Clear() { JudyClearList(this); return JudyLFreeArray(&Table, PJE0); } Word_t MemoryUsed() { return JudyLMemUsed(Table); } - int Delete(cell Key) { delete Get(Key,true); return JudyLDel(&Table, Key, PJE0 ); } + int Delete(cell Key) { return JudyLDel(&Table, Key, PJE0 ); } void Set(cell Index, Pvoid_t value, bool disable_check) { diff --git a/dlls/arrayx/CBaseList.h b/dlls/arrayx/CBaseList.h index a9ce4646..d0aedb5f 100644 --- a/dlls/arrayx/CBaseList.h +++ b/dlls/arrayx/CBaseList.h @@ -10,6 +10,7 @@ public: virtual Word_t MemoryUsed() =0; virtual int Delete(cell Key) =0; + virtual void Remove() =0; virtual void Set(cell Index, Pvoid_t value, bool disable_check = false) =0; diff --git a/dlls/arrayx/CBaseMap.h b/dlls/arrayx/CBaseMap.h index ef0b6a5c..73f75815 100644 --- a/dlls/arrayx/CBaseMap.h +++ b/dlls/arrayx/CBaseMap.h @@ -10,6 +10,7 @@ public: virtual Word_t MemoryUsed() =0; virtual int Delete(char* Key) =0; + virtual void Remove() =0; virtual void Set(char* Index, Pvoid_t value, bool disable_check = false) =0; diff --git a/dlls/arrayx/CBinTrie.h b/dlls/arrayx/CBinTrie.h index a1d9e3fc..98853976 100644 --- a/dlls/arrayx/CBinTrie.h +++ b/dlls/arrayx/CBinTrie.h @@ -2,6 +2,7 @@ #define _BINTRIECLASS_H #include "JudyIncludes.h" +#include "JudyExtra.h" //#include class BinTrie @@ -13,9 +14,10 @@ private: public: BinTrie() { Table = NULL; } - ~BinTrie() { Judy1FreeArray(&Table, PJE0); } + ~BinTrie() { Clear(); } + void Remove() { delete this; } - Word_t Clear() { return Judy1FreeArray(&Table, PJE0); } + Word_t Clear() { JudyClearBinTrie(this); return Judy1FreeArray(&Table, PJE0); } Word_t MemoryUsed() { return Judy1MemUsed(Table); } cell Delete(cell Key) { return Judy1Unset(&Table, Key, PJE0 ); } diff --git a/dlls/arrayx/CHashtable.h b/dlls/arrayx/CHashtable.h index 5fee0a39..4a13e6fd 100644 --- a/dlls/arrayx/CHashtable.h +++ b/dlls/arrayx/CHashtable.h @@ -12,12 +12,13 @@ private: public: Hashtable() { Table = NULL; } - ~Hashtable() { Clear(); } + ~Hashtable() { Clear(); } + void Remove() { delete this; } Word_t Clear() { return JudyHSFreeArray(&Table, PJE0); } Word_t MemoryUsed() { return JudyLMemUsed(Table); } - int Delete(char* Key) { delete Get(Key,true); return JudyHSDel(&Table, Key, strlen(Key), PJE0 ); } + int Delete(char* Key) { return JudyHSDel(&Table, Key, strlen(Key), PJE0 ); } void Set(char* Index, Pvoid_t value, bool disable_check) { diff --git a/dlls/arrayx/CKeytable.h b/dlls/arrayx/CKeytable.h index ba649561..390b4ae1 100644 --- a/dlls/arrayx/CKeytable.h +++ b/dlls/arrayx/CKeytable.h @@ -16,12 +16,13 @@ private: public: Keytable() { Table = NULL; } - ~Keytable() { Clear(); } + ~Keytable() { Clear(); } + void Remove() { delete this; } Word_t Clear() { JudyClearMap(this); return JudySLFreeArray(&Table, PJE0); } Word_t MemoryUsed() { return JudyLMemUsed(Table); } - int Delete(char* Key) { delete Get(Key,true); return JudySLDel(&Table, Key, PJE0 ); } + int Delete(char* Key) { return JudySLDel(&Table, Key, PJE0 ); } void Set(char* Index, Pvoid_t value, bool disable_check) { diff --git a/dlls/arrayx/Capsule.h b/dlls/arrayx/Capsule.h index 9241ab9b..69d0fc14 100644 --- a/dlls/arrayx/Capsule.h +++ b/dlls/arrayx/Capsule.h @@ -27,13 +27,14 @@ protected: public: Capsule() { data = NULL; type = capsule_type_none;} - ~Capsule() { Clear(); } + ~Capsule() { Clear(); } + void Remove() { delete this; } Capsule(bool set) { SetBool(set); } - Capsule(cell set) { SetInt(set); } - Capsule(REAL set) { SetFlo(set); } - Capsule(JudyVec* set) { SetVec(set); } - Capsule(char* set) { SetStr(set); } + Capsule(cell set) { SetInt(set); } + Capsule(REAL set) { SetFlo(set); } + Capsule(JudyVec* set) { SetVec(set); } + Capsule(char* set) { SetStr(set); } bool GetBool( void ); void SetBool(bool set); @@ -58,7 +59,7 @@ public: bool CheckEmpty(bool clear); Pvoid_t GetData( void ) { return data; } - char GetType( void ) { return type; } + char GetType( void ) { return type; } }; #endif \ No newline at end of file diff --git a/dlls/arrayx/ComboArray.h b/dlls/arrayx/ComboArray.h index 60cb9d4e..6dc70032 100644 --- a/dlls/arrayx/ComboArray.h +++ b/dlls/arrayx/ComboArray.h @@ -12,13 +12,14 @@ private: Array MasterArray; public: - ComboArray() {} - ~ComboArray() { Clear(); } + ComboArray() { } + ~ComboArray() { Clear(); } + void Remove() { delete this; } Word_t Clear() { return (MasterBin.Clear() + MasterArray.Clear() ); } Word_t MemoryUsed() { return (MasterBin.MemoryUsed() + MasterArray.MemoryUsed() ); } - int Delete(cell Key) { return (MasterBin.Delete(Key) + MasterArray.Delete(Key) ); } + int Delete(cell Key) { return (MasterBin.Delete(Key) + MasterArray.Delete(Key) ); } void Set(cell Index, Pvoid_t value, bool disable_check) { diff --git a/dlls/arrayx/ComboTable.h b/dlls/arrayx/ComboTable.h index 286953bd..48883c43 100644 --- a/dlls/arrayx/ComboTable.h +++ b/dlls/arrayx/ComboTable.h @@ -12,10 +12,11 @@ private: Hashtable MasterHash; public: - ComboTable() { } - ~ComboTable() { Clear(); } + ComboTable() { } + ~ComboTable() { Clear(); } + void Remove() { delete this; } - Word_t Clear() { return (MasterKey.Clear() + MasterHash.Clear() ); } + Word_t Clear() { return (MasterHash.Clear() + MasterKey.Clear() ); } Word_t MemoryUsed() { return (MasterKey.MemoryUsed() + MasterHash.MemoryUsed() ); } int Delete(char* Key) { return (MasterKey.Delete(Key) + MasterHash.Delete(Key) ); } @@ -25,8 +26,8 @@ public: void Set(char* Index, Pvoid_t value, bool disable_check) { - MasterHash.Set(Index, value); MasterKey.Set(Index, value); + MasterHash.Set(Index, value); } Pvoid_t Get(char* Index, bool disable_check = false) @@ -37,8 +38,8 @@ public: template void Set(char* Index, Type value) { - MasterHash.Set(Index, value); MasterKey.Set(Index, value); + MasterHash.Set(Index, value); } template diff --git a/dlls/arrayx/GenericNatives.h b/dlls/arrayx/GenericNatives.h index e3be96c8..60f7f4f9 100644 --- a/dlls/arrayx/GenericNatives.h +++ b/dlls/arrayx/GenericNatives.h @@ -14,6 +14,11 @@ ComboArray MNAME; // generic_delete(id) static cell AMX_NATIVE_CALL JUDY_MASTER_DELETE_FUNC(AMX *amx,cell *params) { + DTYPE* Unit = NULL; + JUDY_GET_INDEX(MNAME,Unit, params[1] ); + + Unit->Remove(); + try { return MNAME.Delete( params[1] ); } JUDY_ERROR_CATCH("Judy Error: (No error possible) - Delete function "); } @@ -228,15 +233,25 @@ ComboArray MNAME; static cell AMX_NATIVE_CALL JUDY_SLAVE_REMOVE_FUNC(AMX *amx,cell *params) { DTYPE* Unit = NULL; + STYPE* Storage; + JUDY_GET_INDEX(MNAME,Unit, params[1]); + ITYPE Indice = JUDY_GET_KEY(params,2); + + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage->Remove(); - try { return Unit->Delete(JUDY_GET_KEY(params,2) ); } - JUDY_ERROR_CATCH("Judy Error: (No error possible) - Slave Delete Function "); + try { return Unit->Delete(Indice); } + JUDY_ERROR_CATCH("Judy Error: (No Error Possible) - Delete function "); } - #else - #error Must Have Delete func: JUDY_SLAVE_DELETE_FUNC not defined! + #ifdef NO_JUDY_SLAVE_REMOVE_FUNC + #else + + #error Must Have Delete func: JUDY_SLAVE_REMOVE_FUNC not defined! + + #endif #endif ///* End Required Slave Edit Funcs */// @@ -255,7 +270,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); bool Value = (params[3] != NULL); - Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); if(Storage == NULL) Storage = new STYPE(Value); else Storage->SetBool(Value); @@ -281,7 +296,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); bool disable_check = (params[3] != NULL); - try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } + try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } JUDY_ERROR_CATCH("Judy Error: (Retrieve unset value) - Slave Get Function "); if(Storage == NULL) return 0; @@ -313,7 +328,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); cell Value = params[3]; - Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); if(Storage == NULL) Storage = new STYPE(Value); else Storage->SetInt(Value); @@ -339,7 +354,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); bool disable_check = (params[3] != NULL); - try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } + try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } JUDY_ERROR_CATCH("Judy Error: (Retrieve unset value) - Slave Get Function "); if(Storage == NULL) return 0; @@ -371,7 +386,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); REAL Value = amx_ctof(params[3]); - Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); if(Storage == NULL) Storage = new STYPE(Value); else Storage->SetFlo(Value); @@ -397,7 +412,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); bool disable_check = (params[3] != NULL); - try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } + try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } JUDY_ERROR_CATCH("Judy Error: (Retrieve unset value) - Slave Get Function "); if(Storage == NULL) return 0; @@ -429,7 +444,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); char* Value = MF_GetAmxString(amx,params[3],3,NULL); - Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); if(Storage == NULL) Storage = new STYPE(Value); else Storage->SetStr(Value); @@ -455,7 +470,7 @@ ComboArray MNAME; ITYPE Indice = JUDY_GET_KEY(params,2); bool disable_check = (params[5] != NULL); - try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } + try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } JUDY_ERROR_CATCH("Judy Error: (Retrieve unset value) - Slave Get Function "); if(Storage == NULL) return 0; @@ -493,7 +508,7 @@ ComboArray MNAME; amx_ctof(input_vec[2]) ); - Storage = reinterpret_cast( Unit->Get(Indice, true ) ); + Storage = reinterpret_cast( Unit->Get(Indice, true ) ); if(Storage == NULL) Storage = new STYPE(Value); else Storage->SetVec(Value); @@ -520,7 +535,7 @@ ComboArray MNAME; cell *vAmx = MF_GetAmxAddr(amx, params[3]); bool disable_check = (params[4] != NULL); - try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } + try { Storage = reinterpret_cast( Unit->Get(Indice, disable_check ) ); } JUDY_ERROR_CATCH("Judy Error: (Retrieve unset value) - Slave Get Function "); if(Storage == NULL) @@ -778,7 +793,10 @@ AMX_NATIVE_INFO EXPORT_NAME[] = { JUDY_SLAVE_MEMORY_STR , JUDY_SLAVE_MEMORY_FUNC }, { JUDY_SLAVE_ISFILLED_STR , JUDY_SLAVE_ISFILLED_FUNC }, { JUDY_SLAVE_ISEMPTY_STR , JUDY_SLAVE_ISEMPTY_FUNC }, + +#ifndef NO_JUDY_SLAVE_REMOVE_FUNC { JUDY_SLAVE_REMOVE_STR , JUDY_SLAVE_REMOVE_FUNC }, +#endif #ifdef JUDY_SLAVE_EDIT_BOOL diff --git a/dlls/arrayx/JudyExtra.cpp b/dlls/arrayx/JudyExtra.cpp index 0655c1b9..caf4df23 100644 --- a/dlls/arrayx/JudyExtra.cpp +++ b/dlls/arrayx/JudyExtra.cpp @@ -1,8 +1,34 @@ #include "JudyExtra.h" +#include "CBinTrie.h" + +bool JudyClearMasterTrie(CBaseList* master) +{ + cell master_iten = NULL; + BinTrie* Storage = NULL; + + try { master_iten = master->First(); } + catch(JudyEx& e) { return false; } + + while( true ) + { + try { Storage = reinterpret_cast(master->Get(master_iten) ); } + catch(JudyEx& e) { break; } + + Storage->Remove(); + + try { master->Delete(master_iten); } + catch(JudyEx& e) { return false; } + + try { master_iten = master->Next(master_iten); } + catch(JudyEx& e) { break; } + } + + return true; +}; bool JudyClearBinTrie(BinTrie* trie) { - Word_t trie_iten = 0; + Word_t trie_iten = NULL; try { trie_iten = trie->First(); } catch(JudyEx& e) { return false; } @@ -19,7 +45,7 @@ bool JudyClearBinTrie(BinTrie* trie) bool JudySaveBinTrie(BinTrie* trie, char* file) { - Word_t trie_iten = 0; + Word_t trie_iten = NULL; try { trie_iten = trie->First(); } catch(JudyEx e) { return false; } @@ -49,7 +75,7 @@ bool JudyLoadBinTrie(BinTrie* trie, char* file) FILE *trieDB = fopen(file, "ab+"); if (!trieDB) return false; - Word_t trie_iten = 0; + Word_t trie_iten = NULL; bool value = false; @@ -67,15 +93,46 @@ bool JudyLoadBinTrie(BinTrie* trie, char* file) return true; } +bool JudyClearMasterList(CBaseList* master) +{ + cell master_iten = NULL; + CBaseList* Storage = NULL; + + try { master_iten = master->First(); } + catch(JudyEx& e) { return false; } + + while( true ) + { + try { Storage = reinterpret_cast(master->Get(master_iten) ); } + catch(JudyEx& e) { break; } + + Storage->Remove(); + + try { master->Delete(master_iten); } + catch(JudyEx& e) { return false; } + + try { master_iten = master->Next(master_iten); } + catch(JudyEx& e) { break; } + } + + return true; +}; + bool JudyClearList(CBaseList* list) { - Word_t list_iten = 0; + Word_t list_iten = NULL; + Capsule* Storage = NULL; try { list_iten = list->First(); } catch(JudyEx& e) { return false; } while( true ) { + try { Storage = reinterpret_cast(list->Get(list_iten) ); } + catch(JudyEx& e) { break; } + + Storage->Remove(); + try { list->Delete(list_iten); } catch(JudyEx& e) { break; } @@ -88,7 +145,7 @@ bool JudyClearList(CBaseList* list) bool JudySaveList(CBaseList* list, char* file) { Capsule* Storage = NULL; - Word_t list_iten = 0; + Word_t list_iten = NULL; bool no_error = true; try { list_iten = list->First(); } @@ -120,7 +177,7 @@ bool JudyLoadList(CBaseList* list, char* file) if (!listDB) return false; Capsule* Storage = NULL; - Word_t list_iten = 0; + Word_t list_iten = NULL; bool no_error = true; while(!feof(listDB)) @@ -139,15 +196,46 @@ bool JudyLoadList(CBaseList* list, char* file) return no_error; } +bool JudyClearMasterMap(CBaseList* master) +{ + cell master_iten = NULL; + CBaseMap* Storage = NULL; + + try { master_iten = master->First(); } + catch(JudyEx& e) { return false; } + + while( true ) + { + try { Storage = reinterpret_cast(master->Get(master_iten) ); } + catch(JudyEx& e) { break; } + + Storage->Remove(); + + try { master->Delete(master_iten); } + catch(JudyEx& e) { return false; } + + try { master_iten = master->Next(master_iten); } + catch(JudyEx& e) { break; } + } + + return true; +}; + bool JudyClearMap(CBaseMap* map) { char* map_iten = NULL; + Capsule* Storage = NULL; try { map_iten = map->First(); } catch(JudyEx& e) { return false; } while( true ) { + try { Storage = reinterpret_cast(map->Get(map_iten) ); } + catch(JudyEx& e) { break; } + + Storage->Remove(); + try { map->Delete(map_iten); } catch(JudyEx& e) { return false; } @@ -163,7 +251,7 @@ bool JudySaveMap(CBaseMap* map, char* file) { Capsule* Storage = NULL; char* map_iten = NULL; - size_t key_len = 0; + size_t key_len = NULL; bool no_error = true; try { map_iten = map->First(); } @@ -200,7 +288,7 @@ bool JudyLoadMap(CBaseMap* map, char* file) Capsule* Storage = NULL; char* map_iten = NULL; - size_t key_len = 0; + size_t key_len = NULL; bool no_error = true; while(!feof(mapDB)) diff --git a/dlls/arrayx/JudyExtra.h b/dlls/arrayx/JudyExtra.h index 8400ca77..6b8541b6 100644 --- a/dlls/arrayx/JudyExtra.h +++ b/dlls/arrayx/JudyExtra.h @@ -1,18 +1,22 @@ #ifndef _JUDYARRAY_SHARED_INCLUDED #define _JUDYARRAY_SHARED_INCLUDED -#include "CBinTrie.h" #include "CBaseList.h" #include "CBaseMap.h" +class BinTrie; + +extern bool JudyClearMasterTrie(CBaseList* master); extern bool JudyClearBinTrie(BinTrie* trie); extern bool JudySaveBinTrie(BinTrie* trie, char* file); extern bool JudyLoadBinTrie(BinTrie* trie, char* file); +extern bool JudyClearMasterList(CBaseList* master); extern bool JudyClearList(CBaseList* list); extern bool JudySaveList(CBaseList* list, char* file); extern bool JudyLoadList(CBaseList* list, char* file); +extern bool JudyClearMasterMap(CBaseList* master); extern bool JudyClearMap(CBaseMap* map); extern bool JudySaveMap(CBaseMap* array, char* file); extern bool JudyLoadMap(CBaseMap* array, char* file);