{-# LINE 1 "src/Foreign/CUDA/Driver/Graph/Base.chs" #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE EmptyCase #-}
module Foreign.CUDA.Driver.Graph.Base
where
import qualified Foreign.Ptr as C2HSImp
{-# LINE 26 "src/Foreign/CUDA/Driver/Graph/Base.chs" #-}
import Foreign.Storable
import Foreign.Ptr
newtype Graph = Graph { useGraph :: ((C2HSImp.Ptr ()))}
deriving (Eq, Show)
data GraphFlag
instance Enum GraphFlag where
toEnum x = error ("GraphFlag.toEnum: Cannot match " ++ show x)
fromEnum x = case x of {}
newtype Node = Node { useNode :: ((C2HSImp.Ptr ()))}
deriving (Eq, Show, Storable)
data NodeType = Kernel
| Memcpy
| Memset
| Host
| Subgraph
| Empty
| Count
deriving (Eq,Show,Bounded)
instance Enum NodeType where
succ Kernel = Memcpy
succ Memcpy = Memset
succ Memset = Host
succ Host = Subgraph
succ Subgraph = Empty
succ Empty = Count
succ Count = error "NodeType.succ: Count has no successor"
pred Memcpy = Kernel
pred Memset = Memcpy
pred Host = Memset
pred Subgraph = Host
pred Empty = Subgraph
pred Count = Empty
pred Kernel = error "NodeType.pred: Kernel has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from Count
fromEnum Kernel = 0
fromEnum Memcpy = 1
fromEnum Memset = 2
fromEnum Host = 3
fromEnum Subgraph = 4
fromEnum Empty = 5
fromEnum Count = 6
toEnum 0 = Kernel
toEnum 1 = Memcpy
toEnum 2 = Memset
toEnum 3 = Host
toEnum 4 = Subgraph
toEnum 5 = Empty
toEnum 6 = Count
toEnum unmatched = error ("NodeType.toEnum: Cannot match " ++ show unmatched)
{-# LINE 68 "src/Foreign/CUDA/Driver/Graph/Base.chs" #-}
newtype Executable = Executable { useExecutable :: ((C2HSImp.Ptr ()))}
deriving (Eq, Show)