{-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} module Cursor.Simple.Map ( MapCursor, MC.mapCursorList, makeMapCursor, makeMapCursorWithSelection, MC.singletonMapCursorKey, MC.singletonMapCursorValue, rebuildMapCursor, mapMapCursor, MC.mapCursorNonEmptyCursorL, MC.mapCursorElemL, mapCursorSelectKey, mapCursorSelectValue, mapCursorToggleSelected, mapCursorSelectPrev, mapCursorSelectNext, mapCursorSelectFirst, mapCursorSelectLast, MC.mapCursorSelection, mapCursorSelectIndex, MC.mapCursorInsert, MC.mapCursorAppend, mapCursorInsertAndSelectKey, mapCursorAppendAndSelectKey, mapCursorInsertAndSelectValue, mapCursorAppendAndSelectValue, mapCursorRemoveElemAndSelectPrev, mapCursorDeleteElemAndSelectNext, mapCursorRemoveElem, mapCursorDeleteElem, mapCursorSearch, mapCursorSelectOrAdd, module Cursor.Simple.Map.KeyValue, ) where import qualified Cursor.Map as MC import Cursor.Simple.Map.KeyValue import Cursor.Types import Data.List.NonEmpty (NonEmpty (..)) type MapCursor k v = MC.MapCursor k v k v makeMapCursor :: NonEmpty (k, v) -> MapCursor k v makeMapCursor :: NonEmpty (k, v) -> MapCursor k v makeMapCursor = (k -> k) -> NonEmpty (k, v) -> MapCursor k v forall k kc v vc. (k -> kc) -> NonEmpty (k, v) -> MapCursor kc vc k v MC.makeMapCursor k -> k forall a. a -> a id makeMapCursorWithSelection :: Int -> NonEmpty (k, v) -> Maybe (MapCursor k v) makeMapCursorWithSelection :: Int -> NonEmpty (k, v) -> Maybe (MapCursor k v) makeMapCursorWithSelection = (k -> k) -> Int -> NonEmpty (k, v) -> Maybe (MapCursor k v) forall k kc v vc. (k -> kc) -> Int -> NonEmpty (k, v) -> Maybe (MapCursor kc vc k v) MC.makeMapCursorWithSelection k -> k forall a. a -> a id rebuildMapCursor :: MapCursor k v -> NonEmpty (k, v) rebuildMapCursor :: MapCursor k v -> NonEmpty (k, v) rebuildMapCursor = (k -> k) -> (v -> v) -> MapCursor k v -> NonEmpty (k, v) forall kc k vc v. (kc -> k) -> (vc -> v) -> MapCursor kc vc k v -> NonEmpty (k, v) MC.rebuildMapCursor k -> k forall a. a -> a id v -> v forall a. a -> a id mapMapCursor :: (k -> l) -> (v -> w) -> MapCursor k v -> MapCursor l w mapMapCursor :: (k -> l) -> (v -> w) -> MapCursor k v -> MapCursor l w mapMapCursor k -> l f v -> w g = (k -> l) -> (v -> w) -> (k -> l) -> (v -> w) -> MapCursor k v -> MapCursor l w forall kc lc vc wc k l v w. (kc -> lc) -> (vc -> wc) -> (k -> l) -> (v -> w) -> MapCursor kc vc k v -> MapCursor lc wc l w MC.mapMapCursor k -> l f v -> w g k -> l f v -> w g mapCursorSelectKey :: MapCursor k v -> MapCursor k v mapCursorSelectKey :: MapCursor k v -> MapCursor k v mapCursorSelectKey = (k -> k) -> (v -> v) -> MapCursor k v -> MapCursor k v forall k kc vc v. (k -> kc) -> (vc -> v) -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorSelectKey k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectValue :: MapCursor k v -> MapCursor k v mapCursorSelectValue :: MapCursor k v -> MapCursor k v mapCursorSelectValue = (k -> k) -> (v -> v) -> MapCursor k v -> MapCursor k v forall kc k v vc. (kc -> k) -> (v -> vc) -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorSelectValue k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorToggleSelected :: MapCursor k v -> MapCursor k v mapCursorToggleSelected :: MapCursor k v -> MapCursor k v mapCursorToggleSelected = (k -> k) -> (k -> k) -> (v -> v) -> (v -> v) -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> (v -> vc) -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorToggleSelected k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectPrev :: MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectPrev :: MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectPrev = (k -> k) -> (k -> k) -> (v -> v) -> MapCursor k v -> Maybe (MapCursor k v) forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> MapCursor kc vc k v -> Maybe (MapCursor kc vc k v) MC.mapCursorSelectPrev k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectNext :: MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectNext :: MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectNext = (k -> k) -> (k -> k) -> (v -> v) -> MapCursor k v -> Maybe (MapCursor k v) forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> MapCursor kc vc k v -> Maybe (MapCursor kc vc k v) MC.mapCursorSelectNext k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectFirst :: MapCursor k v -> MapCursor k v mapCursorSelectFirst :: MapCursor k v -> MapCursor k v mapCursorSelectFirst = (k -> k) -> (k -> k) -> (v -> v) -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorSelectFirst k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectLast :: MapCursor k v -> MapCursor k v mapCursorSelectLast :: MapCursor k v -> MapCursor k v mapCursorSelectLast = (k -> k) -> (k -> k) -> (v -> v) -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorSelectLast k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectIndex :: Int -> MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectIndex :: Int -> MapCursor k v -> Maybe (MapCursor k v) mapCursorSelectIndex = (k -> k) -> (k -> k) -> (v -> v) -> Int -> MapCursor k v -> Maybe (MapCursor k v) forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> Int -> MapCursor kc vc k v -> Maybe (MapCursor kc vc k v) MC.mapCursorSelectIndex k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorInsertAndSelectKey :: k -> v -> MapCursor k v -> MapCursor k v mapCursorInsertAndSelectKey :: k -> v -> MapCursor k v -> MapCursor k v mapCursorInsertAndSelectKey = (k -> k) -> (v -> v) -> k -> v -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (vc -> v) -> kc -> v -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorInsertAndSelectKey k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorAppendAndSelectKey :: k -> v -> MapCursor k v -> MapCursor k v mapCursorAppendAndSelectKey :: k -> v -> MapCursor k v -> MapCursor k v mapCursorAppendAndSelectKey = (k -> k) -> (v -> v) -> k -> v -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (vc -> v) -> kc -> v -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorAppendAndSelectKey k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorInsertAndSelectValue :: k -> v -> MapCursor k v -> MapCursor k v mapCursorInsertAndSelectValue :: k -> v -> MapCursor k v -> MapCursor k v mapCursorInsertAndSelectValue = (k -> k) -> (v -> v) -> k -> v -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (vc -> v) -> k -> vc -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorInsertAndSelectValue k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorAppendAndSelectValue :: k -> v -> MapCursor k v -> MapCursor k v mapCursorAppendAndSelectValue :: k -> v -> MapCursor k v -> MapCursor k v mapCursorAppendAndSelectValue = (k -> k) -> (v -> v) -> k -> v -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (vc -> v) -> k -> vc -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorAppendAndSelectValue k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorRemoveElemAndSelectPrev :: MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) mapCursorRemoveElemAndSelectPrev :: MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) mapCursorRemoveElemAndSelectPrev = (k -> k) -> MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) forall k kc vc v. (k -> kc) -> MapCursor kc vc k v -> Maybe (DeleteOrUpdate (MapCursor kc vc k v)) MC.mapCursorRemoveElemAndSelectPrev k -> k forall a. a -> a id mapCursorDeleteElemAndSelectNext :: MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) mapCursorDeleteElemAndSelectNext :: MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) mapCursorDeleteElemAndSelectNext = (k -> k) -> MapCursor k v -> Maybe (DeleteOrUpdate (MapCursor k v)) forall k kc vc v. (k -> kc) -> MapCursor kc vc k v -> Maybe (DeleteOrUpdate (MapCursor kc vc k v)) MC.mapCursorDeleteElemAndSelectNext k -> k forall a. a -> a id mapCursorRemoveElem :: MapCursor k v -> DeleteOrUpdate (MapCursor k v) mapCursorRemoveElem :: MapCursor k v -> DeleteOrUpdate (MapCursor k v) mapCursorRemoveElem = (k -> k) -> MapCursor k v -> DeleteOrUpdate (MapCursor k v) forall k kc vc v. (k -> kc) -> MapCursor kc vc k v -> DeleteOrUpdate (MapCursor kc vc k v) MC.mapCursorRemoveElem k -> k forall a. a -> a id mapCursorDeleteElem :: MapCursor k v -> DeleteOrUpdate (MapCursor k v) mapCursorDeleteElem :: MapCursor k v -> DeleteOrUpdate (MapCursor k v) mapCursorDeleteElem = (k -> k) -> MapCursor k v -> DeleteOrUpdate (MapCursor k v) forall k kc vc v. (k -> kc) -> MapCursor kc vc k v -> DeleteOrUpdate (MapCursor kc vc k v) MC.mapCursorDeleteElem k -> k forall a. a -> a id mapCursorSearch :: (k -> v -> Bool) -> MapCursor k v -> Maybe (MapCursor k v) mapCursorSearch :: (k -> v -> Bool) -> MapCursor k v -> Maybe (MapCursor k v) mapCursorSearch = (k -> k) -> (k -> k) -> (v -> v) -> (k -> v -> Bool) -> MapCursor k v -> Maybe (MapCursor k v) forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> (k -> v -> Bool) -> MapCursor kc vc k v -> Maybe (MapCursor kc vc k v) MC.mapCursorSearch k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id mapCursorSelectOrAdd :: (k -> v -> Bool) -> KeyValueCursor k v -> MapCursor k v -> MapCursor k v mapCursorSelectOrAdd :: (k -> v -> Bool) -> KeyValueCursor k v -> MapCursor k v -> MapCursor k v mapCursorSelectOrAdd = (k -> k) -> (k -> k) -> (v -> v) -> (k -> v -> Bool) -> KeyValueCursor k v -> MapCursor k v -> MapCursor k v forall kc k vc v. (kc -> k) -> (k -> kc) -> (vc -> v) -> (k -> v -> Bool) -> KeyValueCursor kc vc k v -> MapCursor kc vc k v -> MapCursor kc vc k v MC.mapCursorSelectOrAdd k -> k forall a. a -> a id k -> k forall a. a -> a id v -> v forall a. a -> a id