DLL: PB 4/8 OK
DLL version uses an allocated lite obj handle (allocated UDT)
Class: PB 5/9
free - use at own risk
whole Hash may be Stored/Restored ~ To/From string (persist)
DLL version uses an allocated lite obj handle (allocated UDT)
Class: PB 5/9
free - use at own risk
whole Hash may be Stored/Restored ~ To/From string (persist)
Code:
'pbcc 5, pbwin 9 '......................................................................... 'LONG/LONG ~ Key/Value ~ Hash Class ' thanks to Paul Squires for sample hash code '......................................................................... ' whole Hash may be Stored/Restored ~ To/From string (persist) '......................................................................... ' 'use: 'put "LLHashC_DLL-1.inc" in same folder as source code '#Include Once "LLHashC_DLL-1.inc" ' 'put "LLHashC_DLL-1.DLL" in same folder as source code ' 'LOCAL hash as LLHashI 'hash = NewCom ClsId $LLHashC_GUID Lib "LLHashC_DLL-1.DLL" ' start using $LLHashC_GUID = Guid$("{9D50D3BB-DAED-4B7D-A8E2-4A42B4100983}") $LLHashI_GUID = Guid$("{AE0C16A0-1DEA-4D63-8725-C5770D114416}") Interface LLHashI $LLHashI_GUID Inherit IUnknown 'new hash instance starts out with 100 hash slots ' Slots() should be set to around expected entries ' Slots() can be reset at any time (slow operation on big hash) ' if Slots() excessively < Count() then hash will be slow ' if Slots() excessively > Count() then memory will be wasted Method Clear() 'delete all data ' call Clear() before obj = NOTHING ' internal resources will immediately be freed ' instead of waiting till obj destroyed Method Count() As Long 'get stored Key/Value count Property Get Slots() As Long 'get number of allocated hash slots ' if Slots() excessively < Count() then hash will be slow ' if Slots() excessively > Count() then memory will be wasted Property Set Slots(ByVal Count As Long) 'rebuild hash to new slot count ' if Slots() excessively < Count() then hash will be slow ' if Slots() excessively > Count() then memory will be wasted Method Set(ByVal key As Long, ByVal value As Long) 'set Value associated with Key 'Value replaced if Key exist Method Get(ByVal key As Long) As Long 'get Value associated with Key Method Contains(ByVal key As Long) As Long 'True/False if Key in hash Method Delete(ByVal key As Long) 'remove Key/Value from hash Method Store() As String 'store hash in string Method Restore(ByVal storedHash As String) 'restore hash from storage string ' current contents cleared ' Slots() = stored hash Count() Method StoreValidate(ByVal storedHash As String) As Long 'True/False if string is valid ' storage strings protected with two unique DWord validation hashes - front/back End Interface