module Data.ByteString.IsoBaseFileFormat.Boxes.Versioned
(Versioned(..))
where
import Data.ByteString.IsoBaseFileFormat.Boxes.Box
import Data.Default
data Versioned v0 v1 (version :: Nat) where
V0 :: IsBoxContent v0 => v0 -> Versioned v0 v1 0
V1 :: IsBoxContent v1 => v1 -> Versioned v0 v1 1
instance (version ~ 0,IsBoxContent v0,Default v0) => Default (Versioned v0 v1 (version :: Nat)) where
def = V0 def
instance IsBoxContent (Versioned v0 v1 version) where
boxSize (V0 c) = boxSize c
boxSize (V1 c) = boxSize c
boxBuilder (V0 c) = boxBuilder c
boxBuilder (V1 c) = boxBuilder c