Esempio n. 1
0
        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;
 }
Esempio n. 3
0
 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;
 }
Esempio n. 7
0
 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)
 {
 }
Esempio n. 13
0
 internal StaticCodeFileGenerator(BladesLibrary libGen)
     : base(libGen)
 {
 }
 internal NormMethodsFileGenerator(BladesLibrary libGen, params string[] operatorNames)
     : base(libGen)
 {
     OperatorNames = operatorNames;
 }
Esempio n. 15
0
 internal InvolutionMethodsFileGenerator(BladesLibrary libGen)
     : base(libGen)
 {
 }
 internal ApplyVersorMainMethodFileGenerator(BladesLibrary libGen, string opName)
     : base(libGen)
 {
     OperatorName = opName;
 }
Esempio n. 17
0
 internal ApplyMethodFileGenerator(BladesLibrary libGen, int inGrade)
     : base(libGen, DefaultMacro.Outermorphism.Apply)
 {
     InputGrade = inGrade;
 }
Esempio n. 18
0
 internal SelfEgpMethodsFileGenerator(BladesLibrary libGen, string opName)
     : base(libGen, opName)
 {
     OperatorName = opName;
 }
Esempio n. 19
0
 internal FactorMethodFileGenerator(BladesLibrary libGen, int inGrade, int inId, AstMacro gmacMacroInfo)
     : base(libGen, gmacMacroInfo)
 {
     InputGrade = inGrade;
     InputId    = inId;
 }