-- 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)