tokyocabinet-haskell-0.0.5: Haskell binding of Tokyo Cabinet

Safe Haskell | None

Database.TokyoCabinet

Contents

- Error Code

Synopsis

- data TCM a
- runTCM :: TCM a -> IO a
- data OpenMode
  - = OREADER
  - | OWRITER
  - | OCREAT
  - | OTRUNC
  - | ONOLCK
  - | OLCKNB
- class TCDB a where
  - new :: TCM a
  - delete :: a -> TCM ()
  - open :: a -> String -> [OpenMode] -> TCM Bool
  - close :: a -> TCM Bool
  - put :: (Storable k, Storable v) => a -> k -> v -> TCM Bool
  - putkeep :: (Storable k, Storable v) => a -> k -> v -> TCM Bool
  - putcat :: (Storable k, Storable v) => a -> k -> v -> TCM Bool
  - get :: (Storable k, Storable v) => a -> k -> TCM (Maybe v)
  - out :: Storable k => a -> k -> TCM Bool
  - vsiz :: Storable k => a -> k -> TCM (Maybe Int)
  - iterinit :: a -> TCM Bool
  - iternext :: Storable v => a -> TCM (Maybe v)
  - fwmkeys :: (Storable k, Storable v, Sequence q) => a -> k -> Int -> TCM (q v)
  - addint :: Storable k => a -> k -> Int -> TCM (Maybe Int)
  - adddouble :: Storable k => a -> k -> Double -> TCM (Maybe Double)
  - sync :: a -> TCM Bool
  - vanish :: a -> TCM Bool
  - copy :: a -> String -> TCM Bool
  - path :: a -> TCM (Maybe String)
  - rnum :: a -> TCM Word64
  - size :: a -> TCM Word64
  - ecode :: a -> TCM ECODE
  - defaultExtension :: a -> String
- data HDB
- data FDB
- data TDB
- data BDB
- 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
- errmsg :: ECODE -> String

# Documentation

Basic Usage (sample code)

        import Database.TokyoCabinet
        import Data.ByteString.Char8

        putsample :: String -> [(ByteString, ByteString)] -> TCM Bool
        putsample file kv =
            do tc <- new :: TCM HDB -- alternatively you can use BDB or FDB
               open tc file [OWRITER, OCREAT]
               mapM (uncurry $ put tc) kv
               close tc

        getsample :: String -> ByteString -> TCM (Maybe ByteString)
        getsample file key =
            do tc <- new :: TCM HDB -- alternatively you can use BDB or FDB
               open tc file [OREADER]
               val <- get tc key
               close tc
               return val

        main = runTCM (do putsample "foo.tch" [(pack "foo", pack "bar")]
                          getsample "foo.tch" (pack "foo")) >>=
               maybe (return ()) (putStrLn . show)

data TCM a Source

Tokyo Cabinet related computation. Wrap of IO.

Instances

Monad TCM |
MonadIO TCM |

runTCM :: TCM a -> IO aSource

Unwrap TCM.

data OpenMode Source

Represent open mode for `open` function.

Constructors

OREADER |
OWRITER |
OCREAT |
OTRUNC |
ONOLCK |
OLCKNB |

Instances

Eq OpenMode |
Ord OpenMode |
Show OpenMode |

class TCDB a where Source

Type class that abstract Tokyo Cabinet database.

Methods

new :: TCM aSource

Create a database object.

delete :: a -> TCM ()Source

Free object resource forcibly.

open Source

Arguments

:: a | database object
-> String | path to database file
-> [OpenMode] | open mode
-> TCM Bool | if successful, the return value is True

Open a database file.

close :: a -> TCM Bool Source

Close the database file. If successful, the return value is True

put Source

Arguments

:: (Storable k, Storable v) |
=> a | database object
-> k | key
-> v | value
-> TCM Bool | if successful, the return value is True

Store a record.

putkeep Source

Arguments

:: (Storable k, Storable v) |
=> a | database object
-> k | key
-> v | value
-> TCM Bool | if successful, the return value is True

Store a new recoed. If a record with the same key exists in the database, this function has no effect.

putcat Source

Arguments

:: (Storable k, Storable v) |
=> a | database object
-> k | key
-> v | value
-> TCM Bool | if successful, the return value is True

Concatenate a value at the end of the existing record.

get Source

Arguments

:: (Storable k, Storable v) |
=> a | database object
-> k | key
-> TCM (Maybe v) | If successful, the return value is the value of the corresponding record wrapped by `Just`, else, Nothing is returned.

Retrieve a record.

out Source

Arguments

:: Storable k |
=> a | database object
-> k | key
-> TCM Bool | if successful, the return value is True

Remove a record.

vsiz Source

Arguments

:: Storable k |
=> a | database object
-> k | key
-> TCM (Maybe Int) | If successful, the return value is the size of the value of the corresponding record wrapped by `Just`, else, it is Nothing.

Get the size of the value of a record.

iterinit :: a -> TCM Bool Source

Initialize the iterator. If successful, the return value is True.

iternext :: Storable v => a -> TCM (Maybe v)Source

Get the next key of the iterator. If successful, the return value is the next key wrapped by `Just`, else, it is Nothing.

fwmkeys Source

Arguments

:: (Storable k, Storable v, Sequence q) |
=> a | database object
-> k | search string
-> Int | the maximum number of keys to be fetched
-> TCM (q v) | result keys

Get forward matching keys.

addint Source

Arguments

:: Storable k |
=> a | database object
-> k | key
-> Int | the addtional value
-> TCM (Maybe Int) | If the corresponding record exists, the value is treated as an integer and is added to. If no record corresponds, a new record of the additional value is stored.

Add an integer to a record.

adddouble Source

Arguments

:: Storable k |
=> a | database object
-> k | key
-> Double | the additional value
-> TCM (Maybe Double) | If the corresponding record exists, the value is treated as a real number and is added to. If no record corresponds, a new record of the additional value is stored.

Add a real number to a record.

sync :: a -> TCM Bool Source

Synchronize updated contents with the file and the device. If successful, the return value is True.

vanish :: a -> TCM Bool Source

Remove all records. If successful, the return value is True.

copy Source

Arguments

:: a | database object
-> String | path of the destination file
-> TCM Bool | If successful, the return value is True.

Copy the database file.

path :: a -> TCM (Maybe String)Source

Get the path of the database file.

rnum :: a -> TCM Word64 Source

Get the number of records.

size :: a -> TCM Word64 Source

Get the size of the database file.

ecode :: a -> TCM ECODE Source

Get the last happened error code.

defaultExtension :: a -> String Source

Get the default extension for specified database object.

Instances

TCDB BDB |
TCDB TDB |
TCDB FDB |
TCDB HDB |
TCDB BDB |

data HDB Source

Instances

TCDB HDB |

data FDB Source

Instances

TCDB FDB |

data TDB Source

Instances

TCDB TDB |

data BDB Source

Instances

TCDB BDB |

# Error Code

data ECODE Source

Represents error

Constructors

ESUCCESS | success
ETHREAD | threading error
EINVALID | invalid operation
ENOFILE | file not found
ENOPERM | no permission
EMETA | invalid meta data
ERHEAD | invalid record header
EOPEN | open error
ECLOSE | close error
ETRUNC | trunc error
ESYNC | sync error
ESTAT | stat error
ESEEK | seek error
EREAD | read error
EWRITE | write error
EMMAP | mmap error
ELOCK | lock error
EUNLINK | unlink error
ERENAME | rename error
EMKDIR | mkdir error
ERMDIR | rmdir error
EKEEP | existing record
ENOREC | no record found
EMISC | miscellaneous error

Instances

Eq ECODE |
Ord ECODE |
Show ECODE |

errmsg :: ECODE -> String Source

Convert error code to message string.