+cvt_top (Foreign (Import callconv safety from nm typ))
+ = ForD (ForeignImport (vName nm) (cvtType typ) fi False loc0)
+ where fi = CImport callconv' safety' c_header nilFS cis
+ callconv' = case callconv of
+ CCall -> CCallConv
+ StdCall -> StdCallConv
+ safety' = case safety of
+ Unsafe -> PlayRisky
+ Safe -> PlaySafe False
+ Threadsafe -> PlaySafe True
+ (c_header', c_func') = break (== ' ') from
+ c_header = mkFastString c_header'
+ c_func = tail c_func'
+ cis = CFunction (StaticTarget (mkFastString c_func))
+