blob: 0908cbe4e6558876801cf724c63a9bc6555dfe31 (
plain)
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
|
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE EmptyDataDecls #-}
module Numeric.Sundials.CLangToHaskellTypes where
import Foreign.C.Types
import qualified Language.Haskell.TH as TH
import qualified Language.C.Types as CT
import qualified Data.Map as Map
import Language.C.Inline.Context
import qualified Data.Vector.Storable as V
data SunVector
data SunMatrix = SunMatrix { rows :: CInt
, cols :: CInt
, vals :: V.Vector CDouble
}
-- | This is true only if configured/ built as 64 bits
type SunIndexType = CLong
sunTypesTable :: Map.Map CT.TypeSpecifier TH.TypeQ
sunTypesTable = Map.fromList
[
(CT.TypeName "sunindextype", [t| SunIndexType |] )
, (CT.TypeName "SunVector", [t| SunVector |] )
, (CT.TypeName "SunMatrix", [t| SunMatrix |] )
]
sunCtx :: Context
sunCtx = mempty {ctxTypesTable = sunTypesTable}
|