tokyocabinet-haskell-0.0.5: Haskell binding of Tokyo CabinetContentsIndex
Database.TokyoCabinet.ADB
Description
Interface to TC's Abstract DataBase. See also, http://tokyocabinet.sourceforge.net/spex-en.html#tcadbapi for details
Synopsis
data ADB
data ECODE
= ESUCCESS
| ETHREAD
| EINVALID
| ENOFILE
| ENOPERM
| EMETA
| ERHEAD
| EOPEN
| ECLOSE
| ETRUNC
| ESYNC
| ESTAT
| ESEEK
| EREAD
| EWRITE
| EMMAP
| ELOCK
| EUNLINK
| ERENAME
| EMKDIR
| ERMDIR
| EKEEP
| ENOREC
| EMISC
new :: IO ADB
delete :: ADB -> IO ()
open :: ADB -> String -> IO Bool
close :: ADB -> IO Bool
put :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
putkeep :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
putcat :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
out :: Storable k => ADB -> k -> IO Bool
get :: (Storable k, Storable v) => ADB -> k -> IO (Maybe v)
vsiz :: Storable k => ADB -> k -> IO (Maybe Int)
iterinit :: ADB -> IO Bool
iternext :: Storable k => ADB -> IO (Maybe k)
fwmkeys :: (Storable k1, Storable k2, Sequence q) => ADB -> k1 -> Int -> IO (q k2)
addint :: Storable k => ADB -> k -> Int -> IO (Maybe Int)
adddouble :: Storable k => ADB -> k -> Double -> IO (Maybe Double)
sync :: ADB -> IO Bool
optimize :: ADB -> String -> IO Bool
vanish :: ADB -> IO Bool
copy :: ADB -> String -> IO Bool
tranbegin :: ADB -> IO Bool
trancommit :: ADB -> IO Bool
tranabort :: ADB -> IO Bool
path :: ADB -> IO (Maybe String)
rnum :: ADB -> IO Word64
size :: ADB -> IO Word64
misc :: (Storable a, Storable b, Sequence q1, Sequence q2) => ADB -> String -> q1 a -> IO (q2 b)
Documentation

Example

   import Control.Monad
   import Database.TokyoCabinet.ADB
   main = do adb <- new
             -- open the abstract database object
             -- "+" means that the database will be an on-memory tree database
             open adb "+" >>= err adb "open failed"
             -- store records
             puts adb [("foo", "hop"), ("bar", "step"), ("baz", "jump")] >>=
                      err adb "put failed" . (all id)
             -- retrieve records
             get_print adb "foo"
             -- traverse records
             iterinit adb
             iter adb >>= mapM_ (k -> putStr (k++":") >> get_print adb k)
             -- close the database
             close adb >>= err adb "close failed"
       where
         puts :: ADB -> [(String, String)] -> IO [Bool]
         puts adb = mapM (uncurry $ put adb)
         get_print :: ADB -> String -> IO ()
         get_print adb key = get adb key >>=
                             maybe (error "something goes wrong") putStrLn
         err :: ADB -> String -> Bool -> IO ()
         err adb msg = flip unless $ error msg
         iter :: ADB -> IO [String]
         iter adb = iternext adb >>=
                    maybe (return []) (x -> return . (x:) =<< iter adb)
data ADB
data ECODE
Represents error
Constructors
ESUCCESSsuccess
ETHREADthreading error
EINVALIDinvalid operation
ENOFILEfile not found
ENOPERMno permission
EMETAinvalid meta data
ERHEADinvalid record header
EOPENopen error
ECLOSEclose error
ETRUNCtrunc error
ESYNCsync error
ESTATstat error
ESEEKseek error
EREADread error
EWRITEwrite error
EMMAPmmap error
ELOCKlock error
EUNLINKunlink error
ERENAMErename error
EMKDIRmkdir error
ERMDIRrmdir error
EKEEPexisting record
ENORECno record found
EMISCmiscellaneous error
show/hide Instances
new :: IO ADB
Create a Abstract database object.
delete :: ADB -> IO ()
Free ADB resource forcibly. ADB is kept by ForeignPtr, so Haskell runtime GC cleans up memory for almost situation. Most always, you don't need to call this. After call this, you must not touch ADB object. Its behavior is undefined.
open :: ADB -> String -> IO Bool
Open an abstract dataabse.
close :: ADB -> IO Bool
Close an abstract database object.
put :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
Stora a record into an abstract database object.
putkeep :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
Store a new record into an abstract database object.
putcat :: (Storable k, Storable v) => ADB -> k -> v -> IO Bool
Concatenate a value at the end of the existing record in an abstract database object.
out :: Storable k => ADB -> k -> IO Bool
Remove a record of an abstract database object.
get :: (Storable k, Storable v) => ADB -> k -> IO (Maybe v)
Retrieve a record in an abstract database object.
vsiz :: Storable k => ADB -> k -> IO (Maybe Int)
Get the size of the value of a record in an abstract database object.
iterinit :: ADB -> IO Bool
Initialize the iterator of an abstract database object.
iternext :: Storable k => ADB -> IO (Maybe k)
Get the next key of the iterator of an abstract database object.
fwmkeys :: (Storable k1, Storable k2, Sequence q) => ADB -> k1 -> Int -> IO (q k2)
Get forward matching keys in an abstract database object.
addint :: Storable k => ADB -> k -> Int -> IO (Maybe Int)
Add an integer to a record in an abstract database object.
adddouble :: Storable k => ADB -> k -> Double -> IO (Maybe Double)
Add a real number to a record in an abstract database object.
sync :: ADB -> IO Bool
Synchronize updated contents of an abstract database object with the file and the device.
optimize :: ADB -> String -> IO Bool
Optimize the storage of an abstract database object.
vanish :: ADB -> IO Bool
Remove all records of an abstract database object.
copy :: ADB -> String -> IO Bool
Copy the database file of an abstract database object.
tranbegin :: ADB -> IO Bool
Begin the transaction of an abstract database object.
trancommit :: ADB -> IO Bool
Commit the transaction of an abstract database object.
tranabort :: ADB -> IO Bool
Abort the transaction of an abstract database object.
path :: ADB -> IO (Maybe String)
Get the file path of an abstract database object.
rnum :: ADB -> IO Word64
Get the number of records of an abstract database object.
size :: ADB -> IO Word64
Get the size of the database of an abstract database object.
misc :: (Storable a, Storable b, Sequence q1, Sequence q2) => ADB -> String -> q1 a -> IO (q2 b)
Call a versatile function for miscellaneous operations of an abstract database object.
Produced by Haddock version 2.4.2