diff options
Diffstat (limited to 'Tools/CodeGen/CodeGenSymmetries.m')
-rw-r--r-- | Tools/CodeGen/CodeGenSymmetries.m | 19 |
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[]; |