internal DpDualMethodsFileGenerator(BladesLibrary libGen, string opName) : base(libGen) { OperatorName = opName; EgpDualMacro = CurrentFrame.Macro(DefaultMacro.EuclideanBinary.GeometricProductDual); }
internal ApplyVersorMethodFileGenerator(BladesLibrary libGen, string baseMacroName, string methodName, int inGrade1, int inGrade2, int outGrade) : base(libGen, baseMacroName) { MethodName = methodName; InputGrade1 = inGrade1; InputGrade2 = inGrade2; OutputGrade = outGrade; }
internal BilinearProductMethodFileGenerator(BladesLibrary libGen, string baseMacroName, string funcName, int inGrade1, int inGrade2, int outGrade) : base(libGen, baseMacroName) { MethodName = funcName; InputGrade1 = inGrade1; InputGrade2 = inGrade2; OutputGrade = outGrade; }
internal BilinearProductMainMethodFileGenerator(BladesLibrary libGen, string opName, string zeroCondition, Func <int, int, int> getFinalGrade, Func <int, int, bool> isLegalGrade) : base(libGen) { OperatorName = opName; ZeroCondition = zeroCondition; GetFinalGrade = getFinalGrade; IsLegalGrade = isLegalGrade; }
/// <summary> /// Given GMacDSL code this factory class compiles the code into a GMacAST structure and /// use the blades code library composer for C# to compose target C# code /// </summary> /// <param name="dslCode"></param> /// <param name="outputFolder"></param> /// <param name="generateMacros"></param> /// <param name="targetLanguageName"></param> /// <returns></returns> public static FilesComposer ComposeLibrary(string dslCode, string outputFolder, bool generateMacros, string targetLanguageName) { //Clear the progress log composer GMacSystemUtils.ResetProgress(); //Compile GMacDSL code into a GMacAST structure var ast = BeginCompilation(dslCode); //If compilation fails return nothing if (ReferenceEquals(ast, null)) { return(null); } //Create and initialize code library composer for C# GMacCodeLibraryComposer activeGenerator; //Select the composer based on the target language name switch (targetLanguageName) { case "C#": activeGenerator = new BladesLibrary(ast); break; default: activeGenerator = new BladesLibrary(ast); break; } //Set the output folder for generated files activeGenerator.CodeFilesComposer.RootFolder = outputFolder; //Select option for generating macros code, this takes the longest time //in the composition process and may be skipped initially while designing //structure of composed library activeGenerator.MacroGenDefaults.AllowGenerateMacroCode = generateMacros; //Specify GMacAST frames to be used for code compositions activeGenerator.SelectedSymbols.SetSymbols(ast.Frames); //Start code composition process and display its progress var formProgress = new FormProgress(activeGenerator.Progress, activeGenerator.Generate, null); formProgress.ShowDialog(); //Save all generated files //activeGenerator.CodeFilesComposer.SaveToFolder(); //Return generated folders\files as a FilesComposer object return(activeGenerator.CodeFilesComposer); }
internal GpFilesGenerator(BladesLibrary libGen, string opName, bool dualFlag) : base(libGen) { OperatorName = opName; DualFlag = dualFlag; }
internal IsZeroMethodsFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal VectorsOpMethodsFileGenerator(BladesLibrary libGen, AstMacro macroInfo) : base(libGen, macroInfo) { }
internal FactorMainMethodsFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal ClassFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal MiscMethodsFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal EqualsMethodsFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal StaticCodeFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal NormMethodsFileGenerator(BladesLibrary libGen, params string[] operatorNames) : base(libGen) { OperatorNames = operatorNames; }
internal InvolutionMethodsFileGenerator(BladesLibrary libGen) : base(libGen) { }
internal ApplyVersorMainMethodFileGenerator(BladesLibrary libGen, string opName) : base(libGen) { OperatorName = opName; }
internal ApplyMethodFileGenerator(BladesLibrary libGen, int inGrade) : base(libGen, DefaultMacro.Outermorphism.Apply) { InputGrade = inGrade; }
internal SelfEgpMethodsFileGenerator(BladesLibrary libGen, string opName) : base(libGen, opName) { OperatorName = opName; }
internal FactorMethodFileGenerator(BladesLibrary libGen, int inGrade, int inId, AstMacro gmacMacroInfo) : base(libGen, gmacMacroInfo) { InputGrade = inGrade; InputId = inId; }