diff options
author | dos-reis <gdr@axiomatics.org> | 2009-07-12 17:10:18 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2009-07-12 17:10:18 +0000 |
commit | 3838fe22164e91e9d5269f801c2b668682ccde83 (patch) | |
tree | 68200708174170f1d1ce3573e7d8cf77a4af4d81 /src/algebra/mkfunc.spad.pamphlet | |
parent | 9a91238840354e46c0f1d898881d5ebf8c395520 (diff) | |
download | open-axiom-3838fe22164e91e9d5269f801c2b668682ccde83.tar.gz |
* algebra/mkfunc.spad.pamphlet
(mkDefun$MakeFloatCompiledFunction): Tidy.
* interp/c-util.boot (declareUnusedParameters): New.
* interp/i-map.boot: Use it.
* interp/i-spec1.boot: Likewise.
* interp/slam.boot: Likewise.
* lib/cfuns-c.c (writeablep): Document MinGW/MSYS bug work around.
Diffstat (limited to 'src/algebra/mkfunc.spad.pamphlet')
-rw-r--r-- | src/algebra/mkfunc.spad.pamphlet | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet index 4b629b78..30f219d6 100644 --- a/src/algebra/mkfunc.spad.pamphlet +++ b/src/algebra/mkfunc.spad.pamphlet @@ -397,6 +397,11 @@ MakeFloatCompiledFunction(S): Exports == Implementation where coerceToSF(f: INF): INF == gencode("COERCE",[f, quote getVMType(SF)$Foreign(Builtin)]) + -- return true if the form `x' is contained in `y' + contained?(x: INF, y: INF): Boolean == + atom? y => x = y + contained?(x, car y) or contained?(x, cdr y) + mkPretend form == convert([convert("pretend"::Symbol), form, lsf]$List(INF))@INF @@ -410,9 +415,14 @@ MakeFloatCompiledFunction(S): Exports == Implementation where mkDefun(s, lv) == name := convert(new()$Symbol)@INF - fun := convert([convert("DEFUN"::Symbol), name, convert lv, - gencode("DECLARE",[gencode("FLOAT",lv)]), - coerceToSF mkCTOR s]$List(INF))@INF + body := coerceToSF mkCTOR s + unusedParms := [ p for p in lv | not contained?(p,s)] + stmts := + null unusedParms => [body] + [gencode("DECLARE",[gencode("IGNORE", unusedParms)]),body] + stmts := concat(gencode("DECLARE",[gencode("FLOAT",lv)]), stmts) + header := [convert("DEFUN"::Symbol), name, convert lv] + fun := convert append(header,stmts) EVAL(fun)$Lisp if _$compileDontDefineFunctions$Lisp then COMPILE(name)$Lisp name |