croaring-ffi-1.0: src/Data/Bitmap/Roaring/FFI/Bitmap64/Statistics.hsc
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE NoFieldSelectors #-}
-- | C struct @roaring64_statistics_t@ from @roaring/roaring_types.h@, filled in by 'Data.Bitmap.Roaring.FFI.Bitmap64.statistics'.
module Data.Bitmap.Roaring.FFI.Bitmap64.Statistics
( Statistics (..)
) where
#include <roaring/roaring.h>
import Data.Word (Word64)
import Foreign.Storable (Storable (..))
-- | @roaring64_statistics_t@
data Statistics = Statistics
{ containers :: Word64
, arrayContainers :: Word64
, runContainers :: Word64
, bitsetContainers :: Word64
, valuesArrayContainers :: Word64
, valuesRunContainers :: Word64
, valuesBitsetContainers :: Word64
, bytesArrayContainers :: Word64
, bytesRunContainers :: Word64
, bytesBitsetContainers :: Word64
, maxValue :: Word64
-- ^ Undefined when the cardinality is zero.
, minValue :: Word64
-- ^ Undefined when the cardinality is zero.
, cardinality :: Word64
}
deriving (Eq, Ord, Show)
instance Storable Statistics where
sizeOf _ = #{size roaring64_statistics_t}
{-# INLINE sizeOf #-}
alignment _ = #{alignment roaring64_statistics_t}
{-# INLINE alignment #-}
peek ptr =
Statistics
<$> #{peek roaring64_statistics_t, n_containers} ptr
<*> #{peek roaring64_statistics_t, n_array_containers} ptr
<*> #{peek roaring64_statistics_t, n_run_containers} ptr
<*> #{peek roaring64_statistics_t, n_bitset_containers} ptr
<*> #{peek roaring64_statistics_t, n_values_array_containers} ptr
<*> #{peek roaring64_statistics_t, n_values_run_containers} ptr
<*> #{peek roaring64_statistics_t, n_values_bitset_containers} ptr
<*> #{peek roaring64_statistics_t, n_bytes_array_containers} ptr
<*> #{peek roaring64_statistics_t, n_bytes_run_containers} ptr
<*> #{peek roaring64_statistics_t, n_bytes_bitset_containers} ptr
<*> #{peek roaring64_statistics_t, max_value} ptr
<*> #{peek roaring64_statistics_t, min_value} ptr
<*> #{peek roaring64_statistics_t, cardinality} ptr
{-# INLINE peek #-}
poke ptr statistics = do
#{poke roaring64_statistics_t, n_containers} ptr statistics.containers
#{poke roaring64_statistics_t, n_array_containers} ptr statistics.arrayContainers
#{poke roaring64_statistics_t, n_run_containers} ptr statistics.runContainers
#{poke roaring64_statistics_t, n_bitset_containers} ptr statistics.bitsetContainers
#{poke roaring64_statistics_t, n_values_array_containers} ptr statistics.valuesArrayContainers
#{poke roaring64_statistics_t, n_values_run_containers} ptr statistics.valuesRunContainers
#{poke roaring64_statistics_t, n_values_bitset_containers} ptr statistics.valuesBitsetContainers
#{poke roaring64_statistics_t, n_bytes_array_containers} ptr statistics.bytesArrayContainers
#{poke roaring64_statistics_t, n_bytes_run_containers} ptr statistics.bytesRunContainers
#{poke roaring64_statistics_t, n_bytes_bitset_containers} ptr statistics.bytesBitsetContainers
#{poke roaring64_statistics_t, max_value} ptr statistics.maxValue
#{poke roaring64_statistics_t, min_value} ptr statistics.minValue
#{poke roaring64_statistics_t, cardinality} ptr statistics.cardinality
{-# INLINE poke #-}