Skip to content
  • Jason Evans's avatar
    Add treap implementation · 951f3164
    Jason Evans authored and Junio C Hamano's avatar Junio C Hamano committed
    Provide macros to generate a type-specific treap implementation and
    various functions to operate on it. It uses obj_pool.h to store memory
    nodes in a treap.  Previously committed nodes are never removed from
    the pool; after any *_commit operation, it is assumed (correctly, in
    the case of svn-fast-export) that someone else must care about them.
    
    Treaps provide a memory-efficient binary search tree structure.
    Insertion/deletion/search are about as about as fast in the average
    case as red-black trees and the chances of worst-case behavior are
    vanishingly small, thanks to (pseudo-)randomness.  The bad worst-case
    behavior is a small price to pay, given that treaps are much simpler
    to implement.
    
    >From http://www.canonware.com/download/trp/trp_hash/trp.h
    
    
    
    [db: Altered to reference nodes by offset from a common base pointer]
    [db: Bob Jenkins' hashing implementation dropped for Knuth's]
    [db: Methods unnecessary for search and insert dropped]
    [rr: Squelched compiler warnings]
    [db: Added support for immutable treap nodes]
    [jn: Reintroduced treap_nsearch(); with tests]
    
    Signed-off-by: default avatarDavid Barr <david.barr@cordelta.com>
    Signed-off-by: default avatarRamkumar Ramachandra <artagnon@gmail.com>
    Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    951f3164