leveldb-haskell 0.6.5 → 0.6.5.1
raw patch · 5 files changed
+31/−17 lines, 5 files
Files
- Readme.md +3/−1
- leveldb-haskell.cabal +8/−6
- src/Database/LevelDB/Base.hs +3/−3
- src/Database/LevelDB/C.hsc +15/−6
- test/Test/Streaming.hs +2/−1
Readme.md view
@@ -15,7 +15,9 @@ **Note:** as of version 1.3, LevelDB can be built as a shared library. Thus, as of version 0.1.0 of this library, LevelDB is no longer bundled and must be-installed on the target system.+installed on the target system. On many systems / distributions, the LevelDB+library is available via the native package manager. On Windows, you may want to+follow [these instructions](https://github.com/lamdu/lamdu/blob/1623bc38e67361d4ba4f051e23a66985a66ca52c/doc/Build.md#windows). To install the latest version from hackage:
leveldb-haskell.cabal view
@@ -1,5 +1,5 @@ name: leveldb-haskell-version: 0.6.5+version: 0.6.5.1 synopsis: Haskell bindings to LevelDB homepage: http://github.com/kim/leveldb-haskell bug-reports: http://github.com/kim/leveldb-haskell/issues@@ -63,6 +63,8 @@ hs-source-dirs: src + if os(mingw32)+ extra-libraries: libstdc++-6 extra-libraries: leveldb executable leveldb-example-comparator@@ -75,7 +77,7 @@ , data-default , leveldb-haskell - ghc-options: -Wall -O -threaded -rtsopts+ ghc-options: -Wall -threaded -rtsopts hs-source-dirs: examples @@ -96,7 +98,7 @@ , data-default , leveldb-haskell - ghc-options: -Wall -O -threaded -rtsopts+ ghc-options: -Wall -threaded -rtsopts hs-source-dirs: examples @@ -115,7 +117,7 @@ , data-default , leveldb-haskell - ghc-options: -Wall -O -threaded -rtsopts+ ghc-options: -Wall -threaded -rtsopts hs-source-dirs: examples @@ -135,7 +137,7 @@ , data-default , leveldb-haskell - ghc-options: -Wall -O -threaded -rtsopts+ ghc-options: -Wall -threaded -rtsopts hs-source-dirs: examples @@ -166,4 +168,4 @@ , temporary , transformers - ghc-options: -Wall -O -rtsopts -threaded -with-rtsopts=-N+ ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
src/Database/LevelDB/Base.hs view
@@ -66,7 +66,7 @@ import Data.ByteString (ByteString) import Data.ByteString.Internal (ByteString (..)) import Data.IORef-import Foreign hiding (void)+import Foreign hiding (free, void) import Foreign.C.String (withCString) import Database.LevelDB.C@@ -135,7 +135,7 @@ if val_ptr == nullPtr then return Nothing else do res <- Just <$> BS.packCString val_ptr- free val_ptr+ c_leveldb_free val_ptr return res where prop (NumFilesAtLevel i) = "leveldb.num-files-at-level" ++ show i@@ -214,7 +214,7 @@ then return Nothing else do res' <- Just <$> BS.packCStringLen (val_ptr, cSizeToInt vlen)- free val_ptr+ c_leveldb_free val_ptr return res' -- | Delete a key/value pair.
src/Database/LevelDB/C.hsc view
@@ -14,8 +14,8 @@ module Database.LevelDB.C where import Foreign-import Foreign.C.Types import Foreign.C.String+import Foreign.C.Types #include <leveldb/c.h> @@ -56,6 +56,8 @@ } +-- N.B. unsafe calls are used where there is no chance of blocking.+ foreign import ccall safe "leveldb/c.h leveldb_open" c_leveldb_open :: OptionsPtr -> DBName -> ErrPtr -> IO LevelDBPtr @@ -137,7 +139,7 @@ foreign import ccall safe "leveldb/c.h leveldb_iter_destroy" c_leveldb_iter_destroy :: IteratorPtr -> IO () -foreign import ccall safe "leveldb/c.h leveldb_iter_valid"+foreign import ccall unsafe "leveldb/c.h leveldb_iter_valid" c_leveldb_iter_valid :: IteratorPtr -> IO CUChar foreign import ccall safe "leveldb/c.h leveldb_iter_seek_to_first"@@ -155,10 +157,10 @@ foreign import ccall safe "leveldb/c.h leveldb_iter_prev" c_leveldb_iter_prev :: IteratorPtr -> IO () -foreign import ccall safe "leveldb/c.h leveldb_iter_key"+foreign import ccall unsafe "leveldb/c.h leveldb_iter_key" c_leveldb_iter_key :: IteratorPtr -> Ptr CSize -> IO Key -foreign import ccall safe "leveldb/c.h leveldb_iter_value"+foreign import ccall unsafe "leveldb/c.h leveldb_iter_value" c_leveldb_iter_value :: IteratorPtr -> Ptr CSize -> IO Val foreign import ccall safe "leveldb/c.h leveldb_iter_get_error"@@ -352,10 +354,17 @@ foreign import ccall safe "leveldb/c.h leveldb_cache_destroy" c_leveldb_cache_destroy :: CachePtr -> IO () - ----- Version+-- Utility --++-- Calls free(ptr).+-- REQUIRES: ptr was malloc()-ed and returned by one of the routines+-- in this file. Note that in certain cases (typically on Windows), you+-- may need to call this routine instead of free(ptr) to dispose of+-- malloc()-ed memory returned by this library. */+foreign import ccall safe "leveldb/c.h leveldb_free"+ c_leveldb_free :: Ptr a -> IO () foreign import ccall unsafe "leveldb/c.h leveldb_major_version" c_leveldb_major_version :: IO CInt
test/Test/Streaming.hs view
@@ -7,6 +7,7 @@ module Test.Streaming (tests) where import Control.Applicative hiding (empty)+import Control.Monad (liftM2, foldM) import Control.Monad.Catch import Control.Monad.Identity import Control.Monad.IO.Class@@ -14,7 +15,7 @@ import Data.ByteString.Char8 (ByteString, singleton, unpack) import Data.Default import Data.Foldable (foldMap)-import Data.List+import Data.List hiding (singleton) import Data.Monoid import Database.LevelDB.Base import Database.LevelDB.Internal (unsafeClose)