/// <summary> /// This function is called for each interpreter invocation before Main. /// Don't perform MGA operations here unless you open a transaction. /// </summary> /// <param name="project">The handle of the project opened in GME, for which the interpreter was called.</param> public void Initialize(MgaProject project) { if (Logger == null) { Logger = new GMELogger(project, ComponentName); } MgaGateway = new MgaGateway(project); }
public void DisposeLogger() { if (Logger != null) { Logger.Dispose(); Logger = null; } }
/// <summary> /// No GUI and interactive elements are allowed within this function. /// </summary> /// <param name="parameters">Main parameters for this run and GUI configuration.</param> /// <returns>Result of the run, which contains a success flag.</returns> public IInterpreterResult Main(IInterpreterMainParameters parameters) { if (Logger == null) { Logger = new GMELogger(parameters.Project, ComponentName); } this.runtime.Clear(); this.mainParameters = parameters; var configSuccess = this.mainParameters != null; this.UpdateSuccess("Configuration", configSuccess); this.result.Labels = "RF"; try { MgaGateway.PerformInTransaction(delegate { this.WorkInMainTransaction(); }, transactiontype_enum.TRANSACTION_NON_NESTED, abort: true ); this.PrintRuntimeStatistics(); if (this.result.Success) { Logger.WriteInfo("Generated files are here: <a href=\"file:///{0}\" target=\"_blank\">{0}</a>", this.mainParameters.OutputDirectory); Logger.WriteInfo("RF simulation has been created. [SUCCESS: {0}, Labels: {1}]", this.result.Success, this.result.Labels); } else { Logger.WriteError("RF simulation cannot be created! See error messages above."); } } catch (Exception ex) { Logger.WriteError("Exception: {0}<br> {1}", ex.Message, ex.StackTrace); } finally { MgaGateway = null; if (Logger != null) { Logger.Dispose(); Logger = null; } GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); } META.Logger.RemoveFileListener(this.ComponentName); return(this.result); }
public void MainInTransaction(InterpreterMainParameters parameters, bool exportPackage = false) { this.mainParameters = (InterpreterMainParameters)parameters; Boolean disposeLogger = false; if (Logger == null) { Logger = new GMELogger(mainParameters.Project, "CyPhyDesignExporter"); disposeLogger = true; } var currentObject = mainParameters.CurrentFCO; var currentOutputDirectory = mainParameters.OutputDirectory; string artifactName = string.Empty; string metaBaseName = currentObject.MetaBase.Name; try { if (metaBaseName == typeof(CyPhyClasses.DesignContainer).Name) { artifactName = ExportToFile(CyPhyClasses.DesignContainer.Cast(currentObject), currentOutputDirectory); } else if (metaBaseName == typeof(CyPhyClasses.ComponentAssembly).Name) { if (exportPackage) { artifactName = ExportToPackage(CyPhyClasses.ComponentAssembly.Cast(currentObject), currentOutputDirectory); } else { artifactName = ExportToFile(CyPhyClasses.ComponentAssembly.Cast(currentObject), currentOutputDirectory); } } else if (IsTestBenchType(metaBaseName)) { artifactName = ExportToFile(CyPhyClasses.TestBenchType.Cast(currentObject), currentOutputDirectory); } if (!string.IsNullOrWhiteSpace(artifactName)) { var manifest = AVM.DDP.MetaTBManifest.OpenForUpdate(currentOutputDirectory); manifest.AddArtifact(Path.GetFileName(artifactName), "Design Model"); manifest.Serialize(currentOutputDirectory); } } finally { if (disposeLogger) { DisposeLogger(); } } }
public void InvokeEx(MgaProject project, MgaFCO currentobj, MgaFCOs selectedobjs, int param) { if (!enabled) { return; } try { if (Logger == null) { Logger = new GMELogger(project, ComponentName); } MgaGateway = new MgaGateway(project); this.mainParameters = new InterpreterMainParameters() { Project = project, CurrentFCO = currentobj as MgaFCO, SelectedFCOs = selectedobjs, StartModeParam = param }; _Main(this.mainParameters); //this.PrintRuntimeStatistics(); } catch (Exception ex) { Logger.WriteError("Exception: {0}<br> {1}", ex.Message, ex.StackTrace); } finally { MgaGateway = null; project = null; currentobj = null; selectedobjs = null; DisposeLogger(); GC.Collect(); GC.WaitForPendingFinalizers(); } }
public Unroller(MgaProject proj, IMgaTraceability Traceability = null, GMELogger Logger = null) { this.ConnectorsProcessed = new List <MgaModel>(); this.ConnectorToStandalonePortMap = new Dictionary <MgaModel, List <PortWrapper> >(); SupportedPortTypesMeta = new HashSet <int>(); foreach (var kind in SupportedPortTypes) { SupportedPortTypesMeta.Add(proj.RootMeta.RootFolder.DefinedFCOByName[kind, true].MetaRef); } MetaRef = new Dictionary <String, int>(); MetaRef.Add("Component", proj.RootMeta.RootFolder.DefinedFCOByName["Component", true].MetaRef); MetaRef.Add("ComponentAssembly", proj.RootMeta.RootFolder.DefinedFCOByName["ComponentAssembly", true].MetaRef); MetaRef.Add("Connector", proj.RootMeta.RootFolder.DefinedFCOByName["Connector", true].MetaRef); MetaRef.Add("TestBench", proj.RootMeta.RootFolder.DefinedFCOByName["TestBench", true].MetaRef); MetaRef.Add("TestComponent", proj.RootMeta.RootFolder.DefinedFCOByName["TestComponent", true].MetaRef); if (Logger == null) { this.Logger = new GMELogger(proj, "ConnectorUnroller"); myLogger = true; this.Logger.LoggingLevel = SmartLogger.MessageType_enum.Warning; } else { this.Logger = Logger; myLogger = false; } if (Traceability == null) { this.Traceability = new META.MgaTraceability(); } else { this.Traceability = Traceability; } }
public CyPhyParser(GMELogger Logger) { logger = Logger; }
public CodeGenerator(CyPhyGUIs.IInterpreterMainParameters parameters, Mode mode, GMELogger Logger) { this.Logger = Logger; this.mainParameters = parameters; CodeGenerator.verbose = ((CyPhy2RF.CyPhy2RF_Settings)parameters.config).Verbose; this.mode = mode; }
public UnzipToTemp(GMELogger logger = null) { Logger = logger; }
private void InitializeLogger(MgaProject project) { Logger = new GMELogger(project, this.ComponentName); }