aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/CodeGenSymmetries.m
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CodeGen/CodeGenSymmetries.m')
-rw-r--r--Tools/CodeGen/CodeGenSymmetries.m19
1 files changed, 18 insertions, 1 deletions
diff --git a/Tools/CodeGen/CodeGenSymmetries.m b/Tools/CodeGen/CodeGenSymmetries.m
index 950cfb5..91b80d1 100644
--- a/Tools/CodeGen/CodeGenSymmetries.m
+++ b/Tools/CodeGen/CodeGenSymmetries.m
@@ -21,9 +21,10 @@
BeginPackage[
"CodeGenSymmetries`",
{"Errors`", "Helpers`", "Kranc`", "CodeGenCactus`", "MapLookup`", "CodeGenKranc`",
- "CodeGenC`", "CodeGen`", "KrancGroups`"}];
+ "CodeGenC`", "CodeGen`", "KrancGroups`", "Code`", "Object`"}];
CreateSymmetriesRegistrationSource::usage = "";
+SymmetriesProcessCode;
Begin["`Private`"];
@@ -107,6 +108,22 @@ DefFn[
CodeGenC`SOURCELANGUAGE = lang;
tmp]];
+Options[SymmetriesProcessCode] = ThornOptions;
+
+DefFn[
+ SymmetriesProcessCode[cIn_Code, opts:OptionsPattern[]] :=
+ Module[
+ {c = cIn},
+ InfoMessage[Terse, "Creating symmetry registration file"];
+ c = AppendObjectField[c, "IncludeFiles", "Symmetry.h"];
+ c = AppendObjectField[
+ c, "Sources",
+ {Filename -> "RegisterSymmetries.cc",
+ Contents -> CreateSymmetriesRegistrationSource[
+ GetObjectField[c, "Name"], GetObjectField[c,"Implementation"],
+ GetObjectField[c, "DeclaredGroups"], GetObjectField[c, "Groups"],
+ OptionValue[ReflectionSymmetries], False]}]]];
+
End[];
EndPackage[];