{-# 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
, SliceTransform
, Snapshot
, Iterator
, WriteBatch
, FilterPolicy
, 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_options_set_block_based_table_factory
, c_rocksdb_block_based_options_create
, c_rocksdb_block_based_options_set_filter_policy
, c_rocksdb_block_based_options_destroy
, c_rocksdb_slicetransform_create_fixed_prefix
, c_rocksdb_slicetransform_destroy
, c_rocksdb_filterpolicy_destroy
, c_rocksdb_filterpolicy_create_bloom_full
, 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 LBlockBasedOptions
data LReadOpts
data LSnapshot
data LWriteBatch
data LWriteOpts
data LFilterPolicy
data LSliceTransform
type RocksDB = Ptr LRocksDB
type ColumnFamily = Ptr LColumnFamily
type Options = Ptr LOptions
type WriteBatch = Ptr LWriteBatch
type SliceTransform = Ptr LSliceTransform
type ReadOpts = Ptr LReadOpts
type WriteOpts = Ptr LWriteOpts
type Snapshot = Ptr LSnapshot
type Iterator = Ptr LIterator
type FilterPolicy = Ptr LFilterPolicy
type BlockBasedOptions = Ptr LBlockBasedOptions
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
-> SliceTransform
-> IO ()
--
-- Block-Based Options
--
foreign import ccall safe "rocksdb/c.h rocksdb_block_based_options_create"
c_rocksdb_block_based_options_create :: IO BlockBasedOptions
foreign import ccall safe "rocksdb/c.h rocksdb_block_based_options_destroy"
c_rocksdb_block_based_options_destroy :: BlockBasedOptions
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_block_based_options_set_filter_policy"
c_rocksdb_block_based_options_set_filter_policy :: BlockBasedOptions
-> FilterPolicy
-> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_options_set_block_based_table_factory"
c_rocksdb_options_set_block_based_table_factory :: Options
-> BlockBasedOptions
-> IO ()
--
-- Prefix Extractor
--
foreign import ccall safe "rocksdb/c.h rocksdb_slicetransform_create_fixed_prefix"
c_rocksdb_slicetransform_create_fixed_prefix :: CSize -> IO SliceTransform
foreign import ccall safe "rocksdb/c.h rocksdb_slicetransform_destroy"
c_rocksdb_slicetransform_destroy :: SliceTransform -> IO ()
--
-- Bloom Filter
--
foreign import ccall safe "rocksdb/c.h rocksdb_filterpolicy_destroy"
c_rocksdb_filterpolicy_destroy :: FilterPolicy -> IO ()
foreign import ccall safe "rocksdb/c.h rocksdb_filterpolicy_create_bloom_full"
c_rocksdb_filterpolicy_create_bloom_full :: CInt -> IO FilterPolicy
--
-- 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 ()