-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCTypes.hs
50 lines (36 loc) · 1.09 KB
/
CTypes.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module CTypes where
import Categorifier.C.CExpr.Cat.TargetOb (TargetOb)
import Categorifier.C.CTypes.CGeneric (CGeneric)
import qualified Categorifier.C.CTypes.CGeneric as CG
import Categorifier.C.CTypes.GArrays (GArrays)
import Categorifier.C.CTypes.ToCxxType (ToCxxType)
import Categorifier.C.KTypes.C (C)
import Categorifier.Client (deriveHasRep)
import Data.Int (Int64)
import GHC.Generics (Generic)
data CInput = CInput
{ iX :: C Int64,
iY :: C Int64
}
deriving (Generic)
deriveHasRep ''CInput
instance CGeneric CInput
instance GArrays C CInput
instance ToCxxType C CInput
type instance TargetOb CInput = TargetOb (CG.Rep CInput ())
data COutput = COutput
{ oSum :: C Int64,
oDiff :: C Int64,
oAvg :: C Double
}
deriving (Generic)
deriveHasRep ''COutput
instance CGeneric COutput
instance GArrays C COutput
instance ToCxxType C COutput
type instance TargetOb COutput = TargetOb (CG.Rep COutput ())