{-# LANGUAGE FlexibleContexts   #-}
{-# LANGUAGE StandaloneDeriving #-}

module HaskellWorks.Data.Dsv.Strict.Cursor.Type
  ( DsvCursor(..)
  ) where

import Data.Word
import HaskellWorks.Data.Container

data DsvCursor t s = DsvCursor
  { dsvCursorDelimiter :: Elem t
  , dsvCursorText      :: !t
  , dsvCursorMarkers   :: !s
  , dsvCursorNewlines  :: !s
  , dsvCursorPosition  :: !Word64
  }

deriving instance (Eq   (Elem t), Eq   t, Eq   s) => Eq   (DsvCursor t s)
deriving instance (Show (Elem t), Show t, Show s) => Show (DsvCursor t s)