Changeset 12505 for third-party
- Timestamp:
- 08/20/06 08:18:46 (2 years ago)
- Location:
- third-party/HsJudy
- Files:
-
- 1 added
- 9 modified
-
Judy/CollectionsM.hs (modified) (3 diffs)
-
Judy/Hash.hs (modified) (3 diffs)
-
Judy/IntMap.hs (modified) (3 diffs)
-
Judy/StrMap.hs (modified) (3 diffs)
-
Makefile (modified) (1 diff)
-
Makefile.static (modified) (1 diff)
-
tests/TestDM.hs (added)
-
tests/TestHash.hs (modified) (1 diff)
-
tests/TestIntMap.hs (modified) (1 diff)
-
tests/TestStrMap.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
third-party/HsJudy/Judy/CollectionsM.hs
r11676 r12505 1 1 {-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances #-} 2 2 3 module Judy.CollectionsM where 3 module Judy.CollectionsM ( 4 MapM (..), 5 MapF (..) 6 ) where 4 7 5 8 import Judy.Freeze 6 9 import Foreign 10 import Data.IORef 11 import qualified Data.Map as DM 12 7 13 8 14 import Prelude hiding (lookup) … … 53 59 mapToList :: (k -> a -> b) -> c -> m [b] 54 60 61 swapMaps :: c -> c -> m () 62 55 63 56 64 … … 81 89 toListF :: c -> [(k, a)] 82 90 91 instance (Ord k) => MapM (IORef (DM.Map k a)) k a IO where 92 new = newIORef DM.empty 93 delete k m = do 94 modifyIORef m (\x -> DM.delete k x) 95 return True 96 member k m = do 97 m' <- readIORef m 98 return $ DM.member k m' 99 lookup k m = do 100 m' <- readIORef m 101 return $ DM.lookup k m' 102 insert k a m = modifyIORef m (\x -> DM.insert k a x) 103 alter f k m = do 104 m' <- readIORef m 105 case DM.lookup k m' of 106 Nothing -> case (f Nothing) of 107 Nothing -> return Nothing 108 Just y -> (insert k y m) >> (return $ Just y) 109 Just x -> case (f (Just x)) of 110 Nothing -> (delete k m) >> (return Nothing) 111 Just y -> (insert k y m) >> (return $ Just y) 112 fromList = newIORef . DM.fromList 113 toList m = do 114 m' <- readIORef m 115 return $ DM.toList m' 116 elems m = do 117 m' <- readIORef m 118 return $ DM.elems m' 119 keys m = do 120 m' <- readIORef m 121 return $ DM.keys m' 122 mapToList f m = do 123 m' <- readIORef m 124 let l = DM.toList m' 125 let f' (k,a) = f k a 126 return $ map f' l 127 swapMaps x y = do 128 x' <- readIORef x 129 y' <- readIORef y 130 writeIORef x y' 131 writeIORef y x' -
third-party/HsJudy/Judy/Hash.hs
r12301 r12505 4 4 5 5 module Judy.Hash ( 6 Stringable (..),7 6 Hash (..), 8 7 9 8 -- FIXME: need to move to MapM api 10 swapMaps,freeze9 freeze 11 10 ) where 12 11 … … 47 46 keys = keys_ 48 47 mapToList = mapToList_ 48 swapMaps = swapMaps_ 49 49 50 50 instance (Stringable k, Refeable a) => Freezable (Hash k a) where 51 51 freeze m = do 52 52 m' <- new_ 53 swapMaps m' m53 swapMaps_ m' m 54 54 return (Frozen m') 55 55 … … 220 220 221 221 222 swapMaps :: Hash k a -> Hash k a -> IO ()223 swapMaps (Hash j1) (Hash j2) = do222 swapMaps_ :: Hash k a -> Hash k a -> IO () 223 swapMaps_ (Hash j1) (Hash j2) = do 224 224 withForeignPtr j1 $ \p1 -> withForeignPtr j2 $ \p2 -> do 225 225 v1 <- peek p1 -
third-party/HsJudy/Judy/IntMap.hs
r12301 r12505 5 5 module Judy.IntMap ( 6 6 IntMap (..), 7 swapMaps, freeze, 7 8 freeze, 8 9 toRevList, 9 10 size, … … 48 49 keys = keys_ 49 50 mapToList = mapToList_ 51 swapMaps = swapMaps_ 50 52 51 53 instance (ReversibleHashIO k, Refeable a) => Freezable (IntMap k a) where 52 54 freeze m = do 53 55 m' <- new_ 54 swapMaps m' m56 swapMaps_ m' m 55 57 return (Frozen m') 56 58 … … 304 306 fromRef v 305 307 306 swapMaps :: IntMap k a -> IntMap k a -> IO ()307 swapMaps (IntMap j1) (IntMap j2) = do308 swapMaps_ :: IntMap k a -> IntMap k a -> IO () 309 swapMaps_ (IntMap j1) (IntMap j2) = do 308 310 withForeignPtr j1 $ \p1 -> withForeignPtr j2 $ \p2 -> do 309 311 v1 <- peek p1 -
third-party/HsJudy/Judy/StrMap.hs
r12301 r12505 5 5 module Judy.StrMap ( 6 6 StrMap (..), 7 swapMaps, 7 8 8 freeze, 9 9 toRevList … … 46 46 keys = keys_ 47 47 mapToList = mapToList_ 48 swapMaps = swapMaps_ 48 49 49 50 instance (Stringable k, Refeable a) => Freezable (StrMap k a) where 50 51 freeze m = do 51 52 m' <- new_ 52 swapMaps m' m53 swapMaps_ m' m 53 54 return (Frozen m') 54 55 … … 214 215 fromRef v 215 216 216 swapMaps :: StrMap k a -> StrMap k a -> IO ()217 swapMaps (StrMap j1) (StrMap j2) = do217 swapMaps_ :: StrMap k a -> StrMap k a -> IO () 218 swapMaps_ (StrMap j1) (StrMap j2) = do 218 219 withForeignPtr j1 $ \p1 -> withForeignPtr j2 $ \p2 -> do 219 220 v1 <- peek p1 -
third-party/HsJudy/Makefile
r12103 r12505 3 3 4 4 CC=$(GHC) 5 TESTS=TestBS TestJL TestJSL TestJHS TestHash TestIntMap TestStrMap 5 TESTS=TestBS TestJL TestJSL TestJHS TestHash TestIntMap TestStrMap TestDM 6 6 #HSC2HS=/usr/bin/hsc2hs 7 7 HSC2HS=hsc2hs -
third-party/HsJudy/Makefile.static
r12103 r12505 1 1 # Makefile for static linkage 2 2 3 TESTS=TestBS TestJL TestJSL TestJHS TestHash TestIntMap TestStrMap 3 TESTS=TestBS TestJL TestJSL TestJHS TestHash TestIntMap TestStrMap TestDM 4 4 5 5 GHC=ghc # -debug -
third-party/HsJudy/tests/TestHash.hs
r12103 r12505 15 15 16 16 type M = J.Hash 17 swapMaps = J.swapMaps18 17 19 18 main = no_plan $ do -
third-party/HsJudy/tests/TestIntMap.hs
r12103 r12505 99 99 lookup 3 m2 .=> Just 42 100 100 101 J.swapMaps m1 m2101 swapMaps m1 m2 102 102 lookup 2 m1 .=> Just 42 103 103 lookup 2 m2 .=> Just 3 -
third-party/HsJudy/tests/TestStrMap.hs
r12103 r12505 15 15 16 16 type M = J.StrMap 17 swapMaps = J.swapMaps18 17 19 18 newStringInt = new :: IO (M String Int)
