Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

String/String ~ Key/Value ~ Hash (Class & lite obj)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • String/String ~ Key/Value ~ Hash (Class & lite obj)

    DLL: PB 4/8 OK
    DLL version uses an allocated lite obj handle (allocated UDT)

    Class: PB 5/9

    whole Hash may be Stored/Restored ~ To/From string (persist)

    separate INC and DLL for each in zip files

    free - use at own risk

    Code:
     
     
    'pbcc 5, pbwin 9
        '.........................................................................
        'STRING/STRING ~ Key/Value ~ Hash lite object (not OOP object)
        '       thanks to Paul Squires for sample hash code
        '   all hash procedures [SSHash_...()] require a hash handle: SSHash_Alloc()
        '   handle must be freed before it goes out of scope: SSHash_Free()
        '.........................................................................
        '   whole Hash may be Stored/Restored ~ To/From string (persist)
        '.........................................................................
     
    Declare Function SSHash_Alloc Lib "SSHash_DLL-1.dll" (ByVal totalSlots As Long) As Long
        'open hash object
        'return handle
     
    Declare Sub SSHash_Free Lib "SSHash_DLL-1.dll" (ByVal h As Long)
        'close hash handle
        'free resources
     
    Declare Sub SSHash_Clear Lib "SSHash_DLL-1.dll" (ByVal h As Long)
        'delete all items
     
    Declare Function SSHash_Count Lib "SSHash_DLL-1.dll" (ByVal h As Long) As Long
        'get stored Key/Value count
     
    Declare Function SSHash_HashSlotCount Lib "SSHash_DLL-1.dll" (ByVal h As Long) As Long
        'get number of allocated hash slots
        '   if SSHash_HashSlotCount() excessively < SSHash_Count() then hash will be slow
        '   if SSHash_HashSlotCount() excessively > SSHash_Count() then memory will be wasted
     
    Declare Sub SSHash_Rebuild Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByVal newSlotCount As Long)
        'rebuild hash to change slot count
        '   if SSHash_HashSlotCount() excessively < SSHash_Count() then hash will be slow
        '   if SSHash_HashSlotCount() excessively > SSHash_Count() then memory will be wasted
        'good to before a lot of SSHash_Set() operations
        'good to after a lot of SSHash_Delete() operations
     
    Declare Sub SSHash_Set Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByRef key As String, ByRef value As String)
        'set Key/Value pair
        'Value replaced if Key exist
     
    Declare Function SSHash_Get Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByRef key As String) As String
        'get Value associated with Key
        '   NULL/ZERO/FALSE returned if Key doesn't exist
        '       (a Key's Value may be a NULL)
     
    Declare Function SSHash_Contains Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByRef key As String) As Long
        'see if Key is in hash
        '   non-zero if found (handle to List Item)
        '   False if not found
     
    Declare Sub SSHash_Delete Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByRef key As String)
        'remove Key/Value from hash
     
    Declare Function SSHash_Store Lib "SSHash_DLL-1.dll" (ByVal h As Long) As String
        'store hash in string
     
    Declare Function SSHash_StoreValidate Lib "SSHash_DLL-1.dll" (ByVal storedHash As String) As Long
        'validate storage string
        '   string has front and back DWord validation hash cookies
     
    Declare Sub SSHash_Restore Lib "SSHash_DLL-1.dll" (ByVal h As Long, ByVal storedHash As String)
        'restore hash from string: SSHash_Store()
        '   current contents will be lost
        '   slot count will be set to stored count
    Attached Files
    stanthemanstan~gmail
    Dead Theory Walking
    Range Trie Tree
    HLib ~ Free Data Container Lib ~ Arrays, Lists, Stacks, Queues, Deques, Trees, Hashes
Working...
X