aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2012-01-24 21:34:50 -0600
committerIan Hinder <ian.hinder@aei.mpg.de>2012-01-24 21:34:50 -0600
commit190a3c40cfb25a5926110c02fb072ed8e61f7616 (patch)
tree3edfc67150331979ce4dba6b7b9a194d1438ae09 /Tools/CodeGen
parentf7e29b649efedae4e5693a70ce9e2322b5099ab1 (diff)
Call CreateCalculationFunction for CaKernel source files
Diffstat (limited to 'Tools/CodeGen')
-rw-r--r--Tools/CodeGen/CaKernel.m21
-rw-r--r--Tools/CodeGen/KrancThorn.m2
2 files changed, 14 insertions, 9 deletions
diff --git a/Tools/CodeGen/CaKernel.m b/Tools/CodeGen/CaKernel.m
index f33cf60..bc3456b 100644
--- a/Tools/CodeGen/CaKernel.m
+++ b/Tools/CodeGen/CaKernel.m
@@ -19,7 +19,7 @@
*)
BeginPackage["CaKernel`", {"Errors`", "Helpers`", "Kranc`", "CodeGenCactus`", "MapLookup`",
- "Calculation`", "CodeGen`"}];
+ "Calculation`", "CodeGen`", "CalculationFunction`"}];
CaKernelCCL;
CaKernelCode;
@@ -71,15 +71,20 @@ DefFn[codeBlock[macro_String, contents:CodeGenBlock] :=
IndentBlock[{contents,"\n"}],
macro<>"_End_s","\n"}]];
-DefFn[CaKernelCode[calc_List] :=
+DefFn[CaKernelCode[calc_List,opts___] :=
Module[
- {kernel = "CAKERNEL_"<>GetCalculationName[calc]},
- codeBlock[
- kernel,
+ {kernel = "CAKERNEL_"<>GetCalculationName[calc], calc2},
+
+ calc2 = Join[calc, {BodyFunction -> (codeBlock[kernel, #] &),
+ CallerFunction -> False,
+ LoopFunction -> (codeBlock[kernel<>"_Computations", #] &)}];
+
+ CreateCalculationFunction[calc2,opts]]];
+
+ (* codeBlock[ *)
+ (* kernel<>"_Computations", *)
+ (* Map[makeEquation[calc, #] &, GetEquations[calc]]]] *)
- codeBlock[
- kernel<>"_Computations",
- Map[makeEquation[calc, #] &, GetEquations[calc]]]]]];
DefFn[
makeEquation[calc_List, eq_Rule] :=
diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m
index b287e68..24ff171 100644
--- a/Tools/CodeGen/KrancThorn.m
+++ b/Tools/CodeGen/KrancThorn.m
@@ -285,7 +285,7 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[
calcSources = Map[CreateSetterSource[{#}, False, {}, opts] &, calcs];
calcFilenames = Map[lookup[#, Name] <> ext &, calcs],
(* else *)
- calcSources = Map[CaKernelCode, calcs];
+ calcSources = Map[CaKernelCode[#,opts] &, calcs];
calcFilenames = Map[lookup[#, Name] <> ".code" &, calcs]];
(* Makefile *)