{-# language CPP #-}
module OpenXR.Zero
  ( Zero(..)
  ) where
#if defined(USE_VULKAN_TYPES)
import           Vulkan.Zero
#else
import           Data.Int                       ( Int16 )
import           Data.Int                       ( Int32 )
import           Data.Int                       ( Int64 )
import           Data.Int                       ( Int8 )
import           Data.Word                      ( Word16 )
import           Data.Word                      ( Word32 )
import           Data.Word                      ( Word64 )
import           Data.Word                      ( Word8 )
import           Foreign.C.Types                ( CChar )
import           Foreign.C.Types                ( CFloat )
import           Foreign.C.Types                ( CInt )
import           Foreign.C.Types                ( CSize )
import           Foreign.Ptr                    ( nullPtr )
import           Foreign.Ptr                    ( FunPtr )
import           Foreign.Ptr                    ( Ptr )
import           Foreign.Storable               ( Storable )
import           GHC.Ptr                        ( nullFunPtr )
import           GHC.TypeNats                   ( KnownNat )
class Zero a where
  zero :: a
instance Zero Bool where
  zero = False
instance Zero (FunPtr a) where
  zero = nullFunPtr
instance Zero (Ptr a) where
  zero = nullPtr
instance Zero Int8 where
  zero = 0
instance Zero Int16 where
  zero = 0
instance Zero Int32 where
  zero = 0
instance Zero Int64 where
  zero = 0
instance Zero Word8 where
  zero = 0
instance Zero Word16 where
  zero = 0
instance Zero Word32 where
  zero = 0
instance Zero Word64 where
  zero = 0
instance Zero Float where
  zero = 0
instance Zero CFloat where
  zero = 0
instance Zero CChar where
  zero = 0
instance Zero CSize where
  zero = 0
instance Zero CInt where
  zero = 0
#endif