-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | B-Tree on Unmanaged Heap
--
-- B-Tree on Unmanaged Heap
@package btree
@version 0.4.0
module BTree.Linear
data BTree s k v
data Context s
Context :: {-# UNPACK #-} !Int -> Context s
[contextDegree] :: Context s -> {-# UNPACK #-} !Int
lookup :: forall m k v. (PrimMonad m, Ord k, Prim k, Prim v) => Context (PrimState m) -> BTree (PrimState m) k v -> k -> m (Maybe v)
insert :: (PrimMonad m, Ord k, Prim k, Prim v) => Context (PrimState m) -> BTree (PrimState m) k v -> k -> v -> m (BTree (PrimState m) k v)
modifyWithM :: forall m s k v. (PrimMonad m, Ord k, Prim k, Prim v) => Context s -> BTree (PrimState m) k v -> k -> (Maybe v -> m v) -> m (v, BTree (PrimState m) k v)
new :: (PrimMonad m, Prim k, Prim v) => Context (PrimState m) -> m (BTree (PrimState m) k v)
foldrWithKey :: forall m k v b. (PrimMonad m, Ord k, Prim k, Prim v) => (k -> v -> b -> m b) -> b -> Context (PrimState m) -> BTree (PrimState m) k v -> m b
-- | This is provided for completeness but is not something typically
-- useful in producetion code.
toAscList :: forall m k v. (PrimMonad m, Ord k, Prim k, Prim v) => Context (PrimState m) -> BTree (PrimState m) k v -> m [(k, v)]
fromList :: (PrimMonad m, Ord k, Prim k, Prim v) => Context (PrimState m) -> [(k, v)] -> m (BTree (PrimState m) k v)
-- | Show the internal structure of a Map, useful for debugging, not
-- exported
debugMap :: forall m k v. (PrimMonad m, Prim k, Prim v, Show k, Show v) => Context (PrimState m) -> BTree (PrimState m) k v -> m String
module BTree
data BTree s k v
newtype Context s
Context :: Context s -> Context s
lookup :: forall s k v. (Ord k, Prim k, Prim v) => BTree s k v -> k -> ST s (Maybe v)
insert :: (Ord k, Prim k, Prim v) => BTree s k v -> k -> v -> ST s ()
modifyWithM :: forall s k v. (Ord k, Prim k, Prim v) => BTree s k v -> k -> (Maybe v -> ST s v) -> ST s v
new :: (Prim k, Prim v) => Context s -> ST s (BTree s k v)
foldrWithKey :: forall s k v b. (Ord k, Prim k, Prim v) => (k -> v -> b -> ST s b) -> b -> BTree s k v -> ST s b
-- | This is provided for completeness but is not something typically
-- useful in producetion code.
toAscList :: forall s k v. (Ord k, Prim k, Prim v) => BTree s k v -> ST s [(k, v)]
fromList :: (Ord k, Prim k, Prim v) => Context s -> [(k, v)] -> ST s (BTree s k v)
debugMap :: forall s k v. (Prim k, Prim v, Show k, Show v) => BTree s k v -> ST s String
module BTree.Store
data BTree k v
-- | The class for initializing memory at a pointer representing
-- Storable values.
class Storable a => Initialize a
-- | Initialize the memory at a pointer. An implementation of this function
-- may do nothing, or if the data contains more pointers,
-- initialize may allocate additional memory.
initialize :: Initialize a => Ptr a -> IO ()
-- | Initialize the memory at an offset from the pointer. This has a
-- default implementation but may be overriden for efficiency.
initializeElemOff :: Initialize a => Ptr a -> Int -> IO ()
-- | Initialize a pointer representing an array with a given number of
-- elements. This has a default implementation but may be overriden for
-- efficiency.
initializeElems :: Initialize a => Ptr a -> Int -> IO ()
-- | The class for freeing memory at a pointer representing Storable
-- values.
class Storable a => Deinitialize a
-- | Free the memory at a pointer.
deinitialize :: Deinitialize a => Ptr a -> IO ()
-- | Free the memory at an offset from the pointer. This has a default
-- implementation but may be overriden for efficiency.
deinitializeElemOff :: Deinitialize a => Ptr a -> Int -> IO ()
-- | Free any memory pointed to by elements of the array. This has a
-- default implementation but may be overriden for efficiency.
deinitializeElems :: Deinitialize a => Ptr a -> Int -> IO ()
data Decision
Keep :: Decision
Delete :: Decision
new :: forall k v. (Storable k, Storable v) => IO (BTree k v)
-- | Release all memory allocated by the b-tree. Do not attempt to use the
-- b-tree after calling this.
free :: forall k v. (Storable k, Deinitialize v) => BTree k v -> IO ()
with :: (Storable k, Initialize v, Deinitialize v) => (BTree k v -> IO (a, BTree k v)) -> IO a
with_ :: (Storable k, Initialize v, Deinitialize v) => (BTree k v -> IO (BTree k v)) -> IO ()
lookup :: forall k v. (Ord k, Storable k, Storable v) => BTree k v -> k -> IO (Maybe v)
insert :: (Ord k, Storable k, Initialize v) => BTree k v -> k -> v -> IO (BTree k v)
modifyWithM_ :: forall k v. (Ord k, Storable k, Initialize v) => BTree k v -> k -> (v -> IO v) -> IO (BTree k v)
modifyWithM :: forall k v a. (Ord k, Storable k, Initialize v) => BTree k v -> k -> (v -> IO (a, v)) -> IO (a, BTree k v)
modifyWithPtr :: forall k v r. (Ord k, Storable k, Initialize v) => BTree k v -> k -> Either r (Ptr v -> Int -> IO r) -> (Ptr v -> Int -> IO (r, Decision)) -> IO (r, BTree k v)
foldrWithKey :: forall k v b. (Ord k, Storable k, Storable v) => (k -> v -> b -> IO b) -> b -> BTree k v -> IO b
-- | This is provided for convenience but is not something typically useful
-- in production code.
toAscList :: forall k v. (Ord k, Storable k, Storable v) => BTree k v -> IO [(k, v)]
index :: forall k v. (Storable k, Storable v) => BTree k v -> (Int -> Int) -> Int -> IO v
indexNode :: forall k v. (Storable k, Storable v) => BTree k v -> (Int -> Int) -> Int -> IO (Ptr v, Int)
inlineModifyWithPtr :: forall k v r. (Ord k, Storable k, Initialize v) => BTree k v -> k -> Either r (Ptr v -> Int -> IO r) -> (Ptr v -> Int -> IO (r, Decision)) -> IO (r, BTree k v)
inlineModifyWithM :: forall k v a. (Ord k, Storable k, Initialize v) => BTree k v -> k -> (v -> IO (a, v)) -> IO (a, BTree k v)
instance Foreign.Storable.Storable (BTree.Store.BTree k v)
instance Initialize.Initialize (BTree.Store.BTree k v)
instance (Foreign.Storable.Storable k, Initialize.Deinitialize v) => Initialize.Deinitialize (BTree.Store.BTree k v)