module Indexation.Potoki.Produce ( entities, counts, indexedCounts, indices, ) where import Indexation.Prelude import Indexation.Types import qualified Potoki.Produce as Produce import qualified Data.Vector.Generic as GenericVector import qualified DenseIntSet entities :: EntityTable a -> Produce a entities (EntityTable vector) = Produce.vector vector {-| Counts in the index-order. -} counts :: IndexCounts a -> Produce Word32 counts (IndexCounts vector) = Produce.vector vector {-| Counts in the index-order paired with their indices. -} indexedCounts :: IndexCounts a -> Produce (Int, Word32) indexedCounts (IndexCounts vector) = Produce.vectorWithIndices vector {-| Indices, which are present in the set. -} indices :: IndexSet a -> Produce (Index a) indices (IndexSet set) = coerce (Produce.unfoldr (DenseIntSet.presentElementsUnfoldr set))