diff options
Diffstat (limited to 'lib/Numeric/GSL/Special/auto.hs')
-rw-r--r-- | lib/Numeric/GSL/Special/auto.hs | 15 |
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 | ||
179 | showH hc h@(Header t n args) = "foreign import ccall \""++hc++" "++n++"\" "++n++" :: "++ (concat$intersperse" -> "$map showHa args) ++" -> " ++ t' | 181 | showH 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 | ||
183 | showHt (Normal (s:ss)) = toUpper s : ss | 185 | ht "int" = "CInt" |
184 | showHt (Pointer "gsl_sf_result") = "Ptr Double" | 186 | ht (s:ss) = toUpper s : ss |
187 | |||
188 | showHt (Normal t) = ht t | ||
189 | showHt (Pointer "gsl_sf_result") = "Ptr ()" | ||
185 | showHt (Pointer "gsl_sf_result_e10") = "Ptr ()" | 190 | showHt (Pointer "gsl_sf_result_e10") = "Ptr ()" |
186 | showHt (Pointer (s:ss)) = "Ptr "++toUpper s : ss | 191 | showHt (Pointer t) = "Ptr "++ht t |
187 | 192 | ||
188 | showHa (t,a) = showHt t | 193 | showHa (t,a) = showHt t |
189 | 194 | ||