plugins-multistage 0.4 → 0.4.0.1
raw patch · 2 files changed
+7/−5 lines, 2 files
Files
plugins-multistage.cabal view
@@ -1,5 +1,5 @@ name: plugins-multistage-version: 0.4+version: 0.4.0.1 synopsis: Dynamic linking for embedded DSLs with staged compilation description: Dynamic compilation, linking and loading of functions in staged languages.
src/System/Plugins/MultiStage.hs view
@@ -55,6 +55,7 @@ , prefix :: String , wdir :: String , opts :: [String]+ , safety :: Safety } defaultConfig :: Config@@ -67,6 +68,7 @@ , prefix = "c_" , wdir = "tmp" , opts = []+ , safety = unsafe } noBuilder :: Config -> Name -> Q Body@@ -101,7 +103,7 @@ declareWorker :: Config -> Name -> Name -> [Name] -> Type -> [DecQ] declareWorker conf@Config{..} wname name as typ =- [ declareImport factory csig+ [ declareImport conf factory csig , sigD bname $ appT [t|Ptr|] csig , funD bname [clause [] (builder conf name) []] , sigD rname csig@@ -123,9 +125,9 @@ , funD cname [clause (map varP as) (wrapper wname as) [] ] ] -declareImport :: Name -> TypeQ -> DecQ-declareImport name csig =- forImpD cCall safe "dynamic" name [t|FunPtr $(csig) -> $(csig)|]+declareImport :: Config -> Name -> TypeQ -> DecQ+declareImport Config{..} name csig =+ forImpD cCall safety "dynamic" name [t|FunPtr $(csig) -> $(csig)|] wrapper :: Name -> [Name] -> Q Body wrapper workername args = normalB