{-# LANGUAGE CPP #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}
-- |
-- Module : Database.RocksDB.C
-- Copyright : (c) 2012-2020 The rocksdb-haskell Authors
-- License : BSD3
-- Maintainer : jprupp@protonmail.ch
-- Stability : experimental
-- Portability : non-portable
--
module Database.RocksDB.C
( RocksDB
, Options
, ReadOpts
, WriteOpts
, ColumnFamily
, PrefixExtract
, Snapshot
, Iterator
, WriteBatch
, BloomFilter
, ErrPtr
, DBName
, CFName
, Key
, Val
, c_rocksdb_open
, c_rocksdb_open_column_families
, c_rocksdb_close
, c_rocksdb_create_column_family
, c_rocksdb_drop_column_family
, c_rocksdb_column_family_handle_destroy
, c_rocksdb_put
, c_rocksdb_put_cf
, c_rocksdb_delete
, c_rocksdb_delete_cf
, c_rocksdb_write
, c_rocksdb_get
, c_rocksdb_get_cf
, c_rocksdb_multi_get
, c_rocksdb_multi_get_cf
, c_rocksdb_create_snapshot
, c_rocksdb_release_snapshot
, c_rocksdb_property_value
, c_rocksdb_approximate_sizes
, c_rocksdb_destroy_db
, c_rocksdb_repair_db
, c_rocksdb_create_iterator
, c_rocksdb_create_iterator_cf
, c_rocksdb_iter_destroy
, c_rocksdb_iter_valid
, c_rocksdb_iter_seek_to_first
, c_rocksdb_iter_seek_to_last
, c_rocksdb_iter_seek
, c_rocksdb_iter_next
, c_rocksdb_iter_prev
, c_rocksdb_iter_key
, c_rocksdb_iter_value
, c_rocksdb_iter_get_error
, c_rocksdb_writebatch_create
, c_rocksdb_writebatch_destroy
, c_rocksdb_writebatch_clear
, c_rocksdb_writebatch_put
, c_rocksdb_writebatch_put_cf
, c_rocksdb_writebatch_delete
, c_rocksdb_writebatch_delete_cf
, c_rocksdb_options_create
, c_rocksdb_options_destroy
, c_rocksdb_options_set_create_if_missing
, c_rocksdb_options_set_error_if_exists
, c_rocksdb_options_set_paranoid_checks
, c_rocksdb_options_set_max_open_files
, c_rocksdb_options_set_prefix_extractor
, c_rocksdb_slicetransform_create_fixed_prefix
, c_rocksdb_slicetransform_destroy
, c_rocksdb_filterpolicy_destroy
, c_rocksdb_filterpolicy_create_bloom
, c_rocksdb_readoptions_create
, c_rocksdb_readoptions_destroy
, c_rocksdb_readoptions_set_snapshot
, c_rocksdb_writeoptions_create
, c_rocksdb_writeoptions_destroy
, c_rocksdb_free
) where
import Foreign
import Foreign.C.String
import Foreign.C.Types
data LRocksDB
data LColumnFamily
data LIterator
data LOptions
data LReadOpts
data LSnapshot
data LWriteBatch
data LWriteOpts
data LBloomFilter
data LPrefixExtract
type RocksDB = Ptr LRocksDB
type ColumnFamily = Ptr LColumnFamily
type Options = Ptr LOptions
type WriteBatch = Ptr LWriteBatch
type PrefixExtract = Ptr LPrefixExtract
type ReadOpts = Ptr LReadOpts
type WriteOpts = Ptr LWriteOpts
type Snapshot = Ptr LSnapshot
type Iterator = Ptr LIterator
type BloomFilter = Ptr LBloomFilter
type ErrPtr = Ptr CString
type DBName = CString
type CFName = CString
type Key = CString
type Val = CString
foreign import ccall safe "rocksdb/c.h rocksdb_open"
c_rocksdb_open :: Options -> DBName -> ErrPtr -> IO RocksDB
foreign import ccall safe "rocksdb/c.h rocksdb_open_column_families"
c_rocksdb_open_column_families :: Options
-> DBName
-> CInt
-> Ptr CFName
-> Ptr Options
-> Ptr ColumnFamily
-> ErrPtr
-> IO RocksDB
foreign import ccall safe "rocksdb/c.h rocksdb_close"
c_rocksdb_close :: RocksDB -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_create_column_family"
c_rocksdb_create_column_family :: RocksDB
-> Options
-> CFName
-> ErrPtr
-> IO ColumnFamily
foreign import ccall safe "rocksdb/c.h rocksdb_drop_column_family"
c_rocksdb_drop_column_family :: RocksDB
-> ColumnFamily
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_column_family_handle_destroy"
c_rocksdb_column_family_handle_destroy :: ColumnFamily -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_put"
c_rocksdb_put :: RocksDB
-> WriteOpts
-> Key -> CSize
-> Val -> CSize
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_put_cf"
c_rocksdb_put_cf :: RocksDB
-> WriteOpts
-> ColumnFamily
-> Key -> CSize
-> Val -> CSize
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_delete"
c_rocksdb_delete :: RocksDB
-> WriteOpts
-> Key -> CSize
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_delete_cf"
c_rocksdb_delete_cf :: RocksDB
-> WriteOpts
-> ColumnFamily
-> Key -> CSize
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_write"
c_rocksdb_write :: RocksDB
-> WriteOpts
-> WriteBatch
-> ErrPtr
-> IO ()
-- | Returns NULL if not found. A malloc()ed array otherwise.
-- Stores the length of the array in *vallen.
foreign import ccall safe "rocksdb/c.h rocksdb_get"
c_rocksdb_get :: RocksDB
-> ReadOpts
-> Key -> CSize
-> Ptr CSize -- ^ value length
-> ErrPtr
-> IO CString
foreign import ccall safe "rocksdb/c.h rocksdb_get_cf"
c_rocksdb_get_cf :: RocksDB
-> ReadOpts
-> ColumnFamily
-> Key -> CSize
-> Ptr CSize -- ^ value length
-> ErrPtr
-> IO CString
foreign import ccall safe "rocksdb/c.h rocksdb_multi_get"
c_rocksdb_multi_get :: RocksDB
-> ReadOpts
-> CSize -- ^ number of keys
-> Ptr CString -- ^ keys
-> Ptr CSize -- ^ key sizes
-> Ptr CString -- ^ values
-> Ptr CSize -- ^ values sizes
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_multi_get_cf"
c_rocksdb_multi_get_cf :: RocksDB
-> ReadOpts
-> Ptr ColumnFamily -- ^ column families
-> CSize -- ^ number of keys
-> Ptr CString -- ^ keys
-> Ptr CSize -- ^ key sizes
-> Ptr CString -- ^ values
-> Ptr CSize -- ^ values sizes
-> ErrPtr
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_create_snapshot"
c_rocksdb_create_snapshot :: RocksDB -> IO Snapshot
foreign import ccall safe "rocksdb/c.h rocksdb_release_snapshot"
c_rocksdb_release_snapshot :: RocksDB -> Snapshot -> IO ()
-- | Returns NULL if property name is unknown. Else returns a pointer to a
-- malloc()-ed null-terminated value.
foreign import ccall safe "rocksdb/c.h rocksdb_property_value"
c_rocksdb_property_value :: RocksDB -> CString -> IO CString
foreign import ccall safe "rocksdb/c.h rocksdb_approximate_sizes"
c_rocksdb_approximate_sizes :: RocksDB
-> CInt
-- ^ num ranges
-> Ptr CString -> Ptr CSize
-- ^ range start keys (array)
-> Ptr CString -> Ptr CSize
-- ^ range limit keys (array)
-> Ptr Word64
-- ^ array of approx. sizes of ranges
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_destroy_db"
c_rocksdb_destroy_db :: Options -> DBName -> ErrPtr -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_repair_db"
c_rocksdb_repair_db :: Options -> DBName -> ErrPtr -> IO ()
--
-- Iterator
--
foreign import ccall safe "rocksdb/c.h rocksdb_create_iterator"
c_rocksdb_create_iterator :: RocksDB
-> ReadOpts
-> IO Iterator
foreign import ccall safe "rocksdb/c.h rocksdb_create_iterator_cf"
c_rocksdb_create_iterator_cf :: RocksDB
-> ReadOpts
-> ColumnFamily
-> IO Iterator
foreign import ccall safe "rocksdb/c.h rocksdb_iter_destroy"
c_rocksdb_iter_destroy :: Iterator -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_valid"
c_rocksdb_iter_valid :: Iterator -> IO CUChar
foreign import ccall safe "rocksdb/c.h rocksdb_iter_seek_to_first"
c_rocksdb_iter_seek_to_first :: Iterator -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_seek_to_last"
c_rocksdb_iter_seek_to_last :: Iterator -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_seek"
c_rocksdb_iter_seek :: Iterator -> Key -> CSize -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_next"
c_rocksdb_iter_next :: Iterator -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_prev"
c_rocksdb_iter_prev :: Iterator -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_iter_key"
c_rocksdb_iter_key :: Iterator -> Ptr CSize -> IO Key
foreign import ccall safe "rocksdb/c.h rocksdb_iter_value"
c_rocksdb_iter_value :: Iterator -> Ptr CSize -> IO Val
foreign import ccall safe "rocksdb/c.h rocksdb_iter_get_error"
c_rocksdb_iter_get_error :: Iterator -> ErrPtr -> IO ()
--
-- Write batch
--
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_create"
c_rocksdb_writebatch_create :: IO WriteBatch
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_destroy"
c_rocksdb_writebatch_destroy :: WriteBatch -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_clear"
c_rocksdb_writebatch_clear :: WriteBatch -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_put"
c_rocksdb_writebatch_put :: WriteBatch
-> Key -> CSize
-> Val -> CSize
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_put_cf"
c_rocksdb_writebatch_put_cf :: WriteBatch
-> ColumnFamily
-> Key -> CSize
-> Val -> CSize
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_delete"
c_rocksdb_writebatch_delete :: WriteBatch
-> Key -> CSize -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_writebatch_delete_cf"
c_rocksdb_writebatch_delete_cf :: WriteBatch
-> ColumnFamily
-> Key
-> CSize
-> IO ()
--
-- Options
--
foreign import ccall safe "rocksdb/c.h rocksdb_options_create"
c_rocksdb_options_create :: IO Options
foreign import ccall "rocksdb/c.h rocksdb_options_destroy"
c_rocksdb_options_destroy :: Options -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_create_if_missing"
c_rocksdb_options_set_create_if_missing :: Options -> CBool -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_error_if_exists"
c_rocksdb_options_set_error_if_exists :: Options -> CBool -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_paranoid_checks"
c_rocksdb_options_set_paranoid_checks :: Options -> CBool -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_max_open_files"
c_rocksdb_options_set_max_open_files :: Options -> CInt -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_prefix_extractor"
c_rocksdb_options_set_prefix_extractor :: Options
-> PrefixExtract
-> IO ()
--
-- Prefix Extractor
--
foreign import ccall safe "rocksdb/c.h rocksdb_slicetransform_create_fixed_prefix"
c_rocksdb_slicetransform_create_fixed_prefix :: CSize -> IO PrefixExtract
foreign import ccall safe "rocksdb/c.h rocksdb_slicetransform_destroy"
c_rocksdb_slicetransform_destroy :: PrefixExtract -> IO ()
--
-- Bloom Filter
--
foreign import ccall safe "rocksdb/c.h rocksdb_filterpolicy_destroy"
c_rocksdb_filterpolicy_destroy :: BloomFilter -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_filterpolicy_create_bloom"
c_rocksdb_filterpolicy_create_bloom :: CInt -> IO BloomFilter
--
-- Read options
--
foreign import ccall safe "rocksdb/c.h rocksdb_readoptions_create"
c_rocksdb_readoptions_create :: IO ReadOpts
foreign import ccall safe "rocksdb/c.h rocksdb_readoptions_destroy"
c_rocksdb_readoptions_destroy :: ReadOpts -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_readoptions_set_snapshot"
c_rocksdb_readoptions_set_snapshot :: ReadOpts -> Snapshot -> IO ()
--
-- Write options
--
foreign import ccall safe "rocksdb/c.h rocksdb_writeoptions_create"
c_rocksdb_writeoptions_create :: IO WriteOpts
foreign import ccall safe "rocksdb/c.h rocksdb_writeoptions_destroy"
c_rocksdb_writeoptions_destroy :: WriteOpts -> IO ()
--
-- Free
--
foreign import ccall safe "rocksdb/c.h rocksdb_free"
c_rocksdb_free :: CString -> IO ()