-- | Encoding of GFF3

module Biobase.GFF3.Types where

import Prelude hiding (takeWhile)
import Data.Attoparsec.ByteString.Char8 hiding (isSpace)
import qualified Data.Attoparsec.ByteString.Lazy as L
import qualified Data.ByteString.Char8 as C
import qualified Data.ByteString.Builder as S
import qualified Data.ByteString.Lazy.Char8 as B
import qualified Data.Vector as V
import System.Directory
import Data.Char
import Control.Monad
import Debug.Trace
import Text.Printf

-- | Datastructure for GFF3 http://gmod.org/wiki/GFF3
data GFF3 = GFF3
    { gff3Entries :: !(V.Vector GFF3Entry),
      gff3Sequence :: !B.ByteString
    }
    deriving (Eq)

-- | Datastructure for data lines of GFF3 http://gmod.org/wiki/GFF3
data GFF3Entry = GFF3Entry
    { gff3Seqid :: !B.ByteString,
      gff3Source :: !B.ByteString,
      gff3Type :: !B.ByteString,
      gff3Start :: Int,
      gff3End :: Int,
      gff3Score :: !B.ByteString,
      gff3Strand :: Char,
      gff3Phase :: B.ByteString,
      gff3Attributes :: !(V.Vector B.ByteString)
    }
    deriving (Eq)