module Database.DuckDB.FFI.AggregateFunctions (
c_duckdb_create_aggregate_function,
c_duckdb_destroy_aggregate_function,
c_duckdb_aggregate_function_set_name,
c_duckdb_aggregate_function_add_parameter,
c_duckdb_aggregate_function_set_return_type,
c_duckdb_aggregate_function_set_functions,
c_duckdb_aggregate_function_set_destructor,
c_duckdb_register_aggregate_function,
c_duckdb_aggregate_function_set_special_handling,
c_duckdb_aggregate_function_set_extra_info,
c_duckdb_aggregate_function_get_extra_info,
c_duckdb_aggregate_function_set_error,
c_duckdb_create_aggregate_function_set,
c_duckdb_destroy_aggregate_function_set,
c_duckdb_add_aggregate_function_to_set,
c_duckdb_register_aggregate_function_set,
) where
import Database.DuckDB.FFI.Types
import Foreign.C.String (CString)
import Foreign.C.Types (CInt (..))
import Foreign.Ptr (Ptr)
foreign import ccall safe "duckdb_create_aggregate_function"
c_duckdb_create_aggregate_function :: IO DuckDBAggregateFunction
foreign import ccall safe "duckdb_destroy_aggregate_function"
c_duckdb_destroy_aggregate_function :: Ptr DuckDBAggregateFunction -> IO ()
foreign import ccall safe "duckdb_aggregate_function_set_name"
c_duckdb_aggregate_function_set_name :: DuckDBAggregateFunction -> CString -> IO ()
foreign import ccall safe "duckdb_aggregate_function_add_parameter"
c_duckdb_aggregate_function_add_parameter :: DuckDBAggregateFunction -> DuckDBLogicalType -> IO ()
foreign import ccall safe "duckdb_aggregate_function_set_return_type"
c_duckdb_aggregate_function_set_return_type :: DuckDBAggregateFunction -> DuckDBLogicalType -> IO ()
foreign import ccall safe "duckdb_aggregate_function_set_functions"
c_duckdb_aggregate_function_set_functions :: DuckDBAggregateFunction -> DuckDBAggregateStateSizeFun -> DuckDBAggregateInitFun -> DuckDBAggregateUpdateFun -> DuckDBAggregateCombineFun -> DuckDBAggregateFinalizeFun -> IO ()
foreign import ccall safe "duckdb_aggregate_function_set_destructor"
c_duckdb_aggregate_function_set_destructor :: DuckDBAggregateFunction -> DuckDBAggregateDestroyFun -> IO ()
foreign import ccall safe "duckdb_register_aggregate_function"
c_duckdb_register_aggregate_function :: DuckDBConnection -> DuckDBAggregateFunction -> IO DuckDBState
foreign import ccall safe "duckdb_aggregate_function_set_special_handling"
c_duckdb_aggregate_function_set_special_handling :: DuckDBAggregateFunction -> IO ()
foreign import ccall safe "duckdb_aggregate_function_set_extra_info"
:: DuckDBAggregateFunction -> Ptr () -> DuckDBDeleteCallback -> IO ()
foreign import ccall "duckdb_aggregate_function_get_extra_info"
:: DuckDBFunctionInfo -> IO (Ptr ())
foreign import ccall "duckdb_aggregate_function_set_error"
c_duckdb_aggregate_function_set_error :: DuckDBFunctionInfo -> CString -> IO ()
foreign import ccall safe "duckdb_create_aggregate_function_set"
c_duckdb_create_aggregate_function_set :: CString -> IO DuckDBAggregateFunctionSet
foreign import ccall safe "duckdb_destroy_aggregate_function_set"
c_duckdb_destroy_aggregate_function_set :: Ptr DuckDBAggregateFunctionSet -> IO ()
foreign import ccall safe "duckdb_add_aggregate_function_to_set"
c_duckdb_add_aggregate_function_to_set :: DuckDBAggregateFunctionSet -> DuckDBAggregateFunction -> IO DuckDBState
foreign import ccall safe "duckdb_register_aggregate_function_set"
c_duckdb_register_aggregate_function_set :: DuckDBConnection -> DuckDBAggregateFunctionSet -> IO DuckDBState