summaryrefslogtreecommitdiff
path: root/lib/Numeric/GSL/Special/auto.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Numeric/GSL/Special/auto.hs')
-rw-r--r--lib/Numeric/GSL/Special/auto.hs15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/Numeric/GSL/Special/auto.hs b/lib/Numeric/GSL/Special/auto.hs
index d2baff6..732fdc9 100644
--- a/lib/Numeric/GSL/Special/auto.hs
+++ b/lib/Numeric/GSL/Special/auto.hs
@@ -60,7 +60,9 @@ main = do
60 --mapM_ (putStrLn.showFull (name ++".h")) parsed 60 --mapM_ (putStrLn.showFull (name ++".h")) parsed
61 let exports = rep (")",") where") $ rep ("(\n","(\n ") $ rep (",\n",", ") $ unlines $ ["("]++intersperse "," (map (\(Header _ n _) -> hName n) (filter safe parsed))++[")"] 61 let exports = rep (")",") where") $ rep ("(\n","(\n ") $ rep (",\n",", ") $ unlines $ ["("]++intersperse "," (map (\(Header _ n _) -> hName n) (filter safe parsed))++[")"]
62 let defs = unlines $ map (showFull (name ++".h")) parsed 62 let defs = unlines $ map (showFull (name ++".h")) parsed
63 let imports = "\nimport Foreign(Ptr)\nimport Numeric.GSL.Special.Internal\n" 63 let imports = "\nimport Foreign(Ptr)\n"
64 ++"import Foreign.C.Types(CInt)\n"
65 ++"import Numeric.GSL.Special.Internal\n"
64 let mod = modhead name ++ "module Numeric.GSL.Special."++ upperFirst name++exports++imports++defs 66 let mod = modhead name ++ "module Numeric.GSL.Special."++ upperFirst name++exports++imports++defs
65 writeFile (upperFirst name ++ ".hs") mod 67 writeFile (upperFirst name ++ ".hs") mod
66 68
@@ -178,12 +180,15 @@ showCa (t, a) = showCt t ++" "++ a
178 180
179showH hc h@(Header t n args) = "foreign import ccall \""++hc++" "++n++"\" "++n++" :: "++ (concat$intersperse" -> "$map showHa args) ++" -> " ++ t' 181showH hc h@(Header t n args) = "foreign import ccall \""++hc++" "++n++"\" "++n++" :: "++ (concat$intersperse" -> "$map showHa args) ++" -> " ++ t'
180 where t' | pure h = showHt t 182 where t' | pure h = showHt t
181 | otherwise = "IO("++showHt t++")" 183 | otherwise = "IO "++showHt t
182 184
183showHt (Normal (s:ss)) = toUpper s : ss 185ht "int" = "CInt"
184showHt (Pointer "gsl_sf_result") = "Ptr Double" 186ht (s:ss) = toUpper s : ss
187
188showHt (Normal t) = ht t
189showHt (Pointer "gsl_sf_result") = "Ptr ()"
185showHt (Pointer "gsl_sf_result_e10") = "Ptr ()" 190showHt (Pointer "gsl_sf_result_e10") = "Ptr ()"
186showHt (Pointer (s:ss)) = "Ptr "++toUpper s : ss 191showHt (Pointer t) = "Ptr "++ht t
187 192
188showHa (t,a) = showHt t 193showHa (t,a) = showHt t
189 194