private void GenerateTestEnvironment_Click(object sender, RoutedEventArgs e) { ComponentDefenition compDef = null; if (selectedAutosarTreeObject is ComponentDefenition) { compDef = (ComponentDefenition)selectedAutosarTreeObject; } else if (selectedAutosarTreeObject is ComponentInstance) { compDef = ((ComponentInstance)selectedAutosarTreeObject).ComponentDefenition; } if (compDef != null) { System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog(); if (lastTestEnvironmentDir != null) { dialog.SelectedPath = lastTestEnvironmentDir; } System.Windows.Forms.DialogResult result = dialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { lastTestEnvironmentDir = dialog.SelectedPath; TestRteEnvironmentGenerator generator = new TestRteEnvironmentGenerator(); generator.GenerateRteEnvironment(compDef, dialog.SelectedPath); MessageBox.Show("Test environment has been generated for " + compDef.Name); } } }
void GenerateTestRteCFile(ComponentDefenition compDef, String outputDir) { String FileName = outputDir + "\\" + Properties.Resources.TEST_RTE_C_FILENAME; StreamWriter writer = new StreamWriter(FileName); RteFunctionsGenerator.GenerateFileTitle(writer, Properties.Resources.TEST_RTE_C_FILENAME, "This file contains function for test environment."); String guardDefine = RteFunctionsGenerator.OpenGuardDefine(writer); /* Add includes */ RteFunctionsGenerator.AddInclude(writer, Properties.Resources.TEST_RTE_H_FILENAME); writer.WriteLine(); /* Declare test structure */ writer.WriteLine(TestArtefactsStructureDataType + " " + TestArtefactsVariable + ";"); writer.WriteLine(); /* Create functions */ CreateRteWriteFunctions(writer, compDef); CreateRteReadFunctions(writer, compDef); CreateRteCDataFunctions(writer, compDef); CreateRtePimFunctions(writer, compDef); CreateRteCallFunctions(writer, compDef); RteFunctionsGenerator.CloseGuardDefine(writer); RteFunctionsGenerator.WriteEndOfFile(writer); writer.Close(); }
void CreateRtePimFunctions(StreamWriter writer, ComponentDefenition compDefenition) { foreach (PimDefenition pim in compDefenition.PerInstanceMemoryList) { GenerateRtePimFunction(writer, compDefenition, pim); } }
public void GenerateRteEnvironment(ComponentDefenition compDef, String outputDir) { /* Generate Rte_<ComponentName>.h file */ RteComponentGenerator compGenerator = new RteComponentGenerator(); compGenerator.CreateRteIncludes(outputDir, compDef); /* Generate Rte_DataTypes.h file */ RteDataTypesGenerator datatypeGenerator = new RteDataTypesGenerator(); datatypeGenerator.GenerateDataTypesFile(outputDir); /* Generate SystemErrors.h */ SystemErrorGenerator systemErrorGenerator = new SystemErrorGenerator(); systemErrorGenerator.GenerateSystemErrorsFile(outputDir); GenerateTestRteHFile(compDef, outputDir); GenerateTestRteCFile(compDef, outputDir); GenerateTestInitializationFile(compDef, outputDir); ReturnCodesGenerator returnCodesGenerator = new ReturnCodesGenerator(); returnCodesGenerator.GenerateReturnCodesFile(outputDir); }
void GenerateRteWritePortFieldFunction(StreamWriter writer, ComponentDefenition compDef, PortDefenition port, SenderReceiverInterfaceField field) { String returnValue = Properties.Resources.STD_RETURN_TYPE; String RteFuncName = RteFunctionsGenerator.GenerateReadWriteConnectionFunctionName(port, field); String fieldVariable = RteFunctionsGenerator.GenerateSenderReceiverInterfaceArguments(field, port.PortType, compDef.MultipleInstantiation); writer.WriteLine(returnValue + RteFuncName + fieldVariable); writer.WriteLine("{"); if (!compDef.MultipleInstantiation) //single instantiation component { ComponentInstancesList components = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDef); if (components.Count > 0) { ComponentInstance compInstance = components[0]; String compName = RteFunctionsGenerator.GenerateComponentName(compInstance.Name); String fieldName = RteFunctionsGenerator.GenerateRteWriteFieldInComponentDefenitionStruct(port, field); writer.WriteLine(" " + compName + "." + fieldName + " = *" + field.Name + ";"); } } else //multiple instantiation component { String rteStructFieldName = RteFunctionsGenerator.GenerateRteWriteFieldInComponentDefenitionStruct(port, field); String instanceLine = "((" + compDef.Name + "*)instance)->" + rteStructFieldName + " = *" + field.Name + ";"; writer.WriteLine(" " + instanceLine); } writer.WriteLine(" return " + Properties.Resources.RTE_E_OK + ";"); writer.WriteLine("}"); writer.WriteLine(""); //} }
void GenerateComponent(ComponentDefenition component) { /* Generate component Folder */ String componentFolder = RteFunctionsGenerator.GetComponentsFolder() + "\\" + component.Name; String rteDir = RteFunctionsGenerator.GetRteFolder() + "\\"; String incDir = componentFolder + "\\include\\"; String srcDir = componentFolder + "\\src\\"; Directory.CreateDirectory(incDir); Directory.CreateDirectory(srcDir); /* Fill sections of code */ /* Each component runnable shall be in its own file */ foreach (PeriodicRunnableDefenition runnable in component.Runnables) { CreateRunnable(srcDir, runnable); } /* Each Server port functions shall be in its own file */ foreach (PortDefenition port in component.Ports) { if (port.PortType == PortType.Server) { CreateServerCalls(srcDir, component, port); } } /* Generate funcitons for Sender-Receiver ports and call operations from client ports */ CreateRteIncludes(rteDir, component); CreateComponentIncludes(incDir, component); }
void GenerateRteCDataFunction(StreamWriter writer, ComponentDefenition compDef, CDataDefenition cdataDef) { String returnValue = cdataDef.DataTypeName + " "; String RteFuncName = RteFunctionsGenerator.GenerateFullCDataFunctionName(compDef, cdataDef); String fieldVariable = RteFunctionsGenerator.GenerateMultipleInstanceFunctionArguments(compDef.MultipleInstantiation); writer.WriteLine(returnValue + RteFuncName + fieldVariable); writer.WriteLine("{"); if (!compDef.MultipleInstantiation) //single instantiation component { ComponentInstancesList components = AutosarApplication.GetInstance().GetComponentInstanceByDefenition(compDef); if (components.Count > 0) { /* At least one component exists at this step */ ComponentInstance compInstance = components[0]; String compName = RteFunctionsGenerator.GenerateComponentName(compInstance.Name); String field = RteFunctionsGenerator.GenerateRteCDataFieldInComponentDefenitionStruct(compDef, cdataDef); writer.WriteLine(" return " + compName + "." + field + ";"); } } else //multiple instantiation component { String field = RteFunctionsGenerator.GenerateRteCDataFieldInComponentDefenitionStruct(compDef, cdataDef); writer.WriteLine(" return ((" + compDef.Name + "*)instance)->" + field + ";"); } writer.WriteLine("}"); writer.WriteLine(""); }
void GenerateTestRteHFile(ComponentDefenition compDef, String outputDir) { String FileName = outputDir + "\\" + Properties.Resources.TEST_RTE_H_FILENAME; StreamWriter writer = new StreamWriter(FileName); RteFunctionsGenerator.GenerateFileTitle(writer, Properties.Resources.TEST_RTE_H_FILENAME, "This file contains structure for provide test environment."); String guardDefine = RteFunctionsGenerator.OpenGuardDefine(writer); /* Add includes */ RteFunctionsGenerator.AddInclude(writer, Properties.Resources.RTE_DATATYPES_H_FILENAME); RteFunctionsGenerator.AddInclude(writer, "Rte_" + compDef.Name + ".h"); RteFunctionsGenerator.AddInclude(writer, Properties.Resources.TEST_FRAMEWORK_H_FILENAME); RteFunctionsGenerator.AddInclude(writer, "<string.h>"); /* Create structure */ CreateTestArtefactStructure(writer, compDef); writer.WriteLine("/* All periodical runnables */"); foreach (PeriodicRunnableDefenition runnable in compDef.Runnables) { writer.WriteLine(RteFunctionsGenerator.Generate_RunnableFunction(compDef, runnable) + ";"); } writer.WriteLine(); writer.WriteLine("/* All server calls */"); CreateRteCallFunctionDeclarations(writer, compDef); writer.WriteLine(); RteFunctionsGenerator.CloseGuardDefine(writer); RteFunctionsGenerator.WriteEndOfFile(writer); writer.Close(); }
void CreateRteCDataFunctions(StreamWriter writer, ComponentDefenition compDefenition) { foreach (CDataDefenition cdataDef in compDefenition.CDataDefenitions) { GenerateRteCDataFunction(writer, compDefenition, cdataDef); } }
public ComponentDefenition CreateComponentDefenition(string name) { ComponentDefenition compDef = new ComponentDefenition(); compDef.Name = name; compDef.Runnables.Add(CreateRunnableDefenition("Refresh")); return(compDef); }
public ComponentInstance CreateComponent(ComponentDefenition componentDefenition, double X, double Y) { int leftPortCount = 0; int rightPortCount = 0; foreach (PortDefenition portDef in componentDefenition.Ports) { if ((portDef.PortType == PortType.Receiver) || (portDef.PortType == PortType.Server)) { leftPortCount++; } else { rightPortCount++; } } double componentHeight = Math.Max(leftPortCount, rightPortCount) * 50 + 60; ComponentInstance componentInstance = new ComponentInstance(); componentInstance.Name = GetComponentName(componentDefenition); componentInstance.ComponentDefenitionGuid = componentDefenition.GUID; componentInstance.Painter.Left = X - 60; componentInstance.Painter.Right = X + 60; componentInstance.Painter.Top = Y - componentHeight / 2.0; componentInstance.Painter.Height = componentHeight; componentInstance.UpdatePims(); double LeftTop = componentInstance.Painter.Top + 30; double RightTop = LeftTop; double LeftPos = componentInstance.Painter.Left - 10; double RightPos = componentInstance.Painter.Right - 10; /* Create all port painters from defenition */ foreach (PortDefenition portDef in componentDefenition.Ports) { PortPainter newPort; if ((portDef.PortType == PortType.Receiver) || (portDef.PortType == PortType.Server)) { newPort = CreatePortPainter(portDef, LeftPos, LeftTop); newPort.ConnectionPortLocation = RectangleSide.Left; LeftTop += 50; } else { newPort = CreatePortPainter(portDef, RightPos, RightTop); newPort.ConnectionPortLocation = RectangleSide.Right; RightTop += 50; } componentInstance.Ports.Add(newPort); } componentInstance.UpdateCData(); componentInstance.UpdatePims(); return(componentInstance); }
public static String Generate_RunnableFunction(ComponentDefenition compDefenition, PeriodicRunnableDefenition runnable) { if (compDefenition.MultipleInstantiation) { return("void " + Generate_RunnableFunctionName(compDefenition, runnable) + "(" + ComponentInstancePointerDatatype + " instance)"); } else /* Single instantiation */ { return("void " + Generate_RunnableFunctionName(compDefenition, runnable) + "(void)"); } }
protected void TestComponentDefenition(ComponentDefenition elem) { bool withoutErrors = true; /* Check if there is an CDATA with similar names */ withoutErrors &= CheckSimilarNames(elem.CDataDefenitions.ConvertAll(x => x as IGUID), elem.Name + ": CData "); /* Check if there is an PIM with similar names */ withoutErrors &= CheckSimilarNames(elem.PerInstanceMemoryList.ConvertAll(x => x as IGUID), elem.Name + ": Pim "); /* Check if there is an Ports with similar names */ withoutErrors &= CheckSimilarNames(elem.Ports.ConvertAll(x => x as IGUID), elem.Name + ": Port "); /* Check if there is an Ports with similar names */ withoutErrors &= CheckSimilarNames(elem.Runnables.ConvertAll(x => x as IGUID), elem.Name + ": Runnables "); /* CData */ foreach (CDataDefenition cdata in elem.CDataDefenitions) { if (cdata.DataTypeName.Equals(AutosarApplication.ErrorDataType)) { AppendText("Component: " + elem.Name + ", Cdata : " + cdata.Name + " doesn't have specified datatype ", Error: true); withoutErrors = false; } } /* Pim */ foreach (PimDefenition pim in elem.PerInstanceMemoryList) { if (pim.DataTypeName.Equals(AutosarApplication.ErrorDataType)) { AppendText("Component: " + elem.Name + ", PIM : " + pim.Name + " doesn't have specified datatype ", Error: true); withoutErrors = false; } } /* Ports */ foreach (PortDefenition port in elem.Ports) { if (port.InterfaceName.Equals(AutosarApplication.ErrorDataType)) { AppendText("Component: " + elem.Name + ", Port : " + port.Name + " doesn't have specified datatype ", Error: true); withoutErrors = false; } } if (withoutErrors) { AppendText(elem.Name); } }
public void SyncronizeCData(ComponentDefenition compDef, bool useAllDefenition = false) { foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { if (useAllDefenition || compInstance.ComponentDefenition.Equals(compDef)) { compInstance.UpdateCData(); } } } }
public void MouseDownOnTreeViewMenu() { if (treeView.SelectedItem is TreeViewItem) { TreeViewItem selectedItem = treeView.SelectedItem as TreeViewItem; if (selectedItem.Tag is ComponentDefenition) { compDef = (selectedItem.Tag as ComponentDefenition); DataObject dataObj = new DataObject(compDef); DragDrop.DoDragDrop(selectedItem, dataObj, DragDropEffects.Copy); } } }
public void SyncronizeRunnables(ComponentDefenition compDef, bool useAllDefenition = false) { foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { if (useAllDefenition || compInstance.ComponentDefenition.Equals(compDef)) { compInstance.SyncronizeRunnablesWithDefenition(); } } } }
public static String GenerateFullCDataFunctionDefenitionNameAndReturnType(ComponentDefenition compDefenition, CDataDefenition cdata) { String returnDataType = GenerateCDataDataType(compDefenition, cdata); String FunctionArguments = "("; if (compDefenition.MultipleInstantiation) { FunctionArguments = ComponentInstancePointerDatatype + " instance"; } FunctionArguments += ")"; String result = GenerateCDataDataType(compDefenition, cdata) + " " + GenerateFullCDataFunctionName(compDefenition, cdata) + FunctionArguments; return(result); }
void GenerateRtePimFunction(StreamWriter writer, ComponentDefenition compDef, PimDefenition pimDef) { String returnValue = pimDef.DataTypeName + " * "; String RteFuncName = RteFunctionsGenerator.GenerateShortPimFunctionName(pimDef); String fieldVariable = RteFunctionsGenerator.GenerateMultipleInstanceFunctionArguments(compDef.MultipleInstantiation); writer.WriteLine(returnValue + RteFuncName + fieldVariable); writer.WriteLine("{"); writer.WriteLine(" " + TestArtefactsVariable + "." + RteFuncName + "." + CallCount + "++;"); writer.WriteLine(" return &" + TestArtefactsVariable + "." + RteFuncName + ".data;"); writer.WriteLine("}"); writer.WriteLine(""); }
void CreateRteCallFunctions(StreamWriter writer, ComponentDefenition compDefenition) { foreach (PortDefenition port in compDefenition.Ports) { if (port.PortType == PortType.Client) { ClientServerInterface csInterface = port.InterfaceDatatype as ClientServerInterface; foreach (ClientServerOperation operation in csInterface.Operations) { GenerateRteCallPortFieldFunction(writer, compDefenition, port, operation); } } } }
public void UpdatePortsInComponentInstances() { /* Remove unexists port in defenition */ foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { ComponentDefenition compDefenition = compInstance.ComponentDefenition; for (int i = compInstance.Ports.Count - 1; i >= 0; i--) { PortPainter portPainter = compInstance.Ports[i]; PortDefenition portDefenition = compDefenition.Ports.FindObject(portPainter.PortDefenitionGuid); if (portDefenition == null) { DeletePort(portPainter); } } } } /* Add new or missing ports */ foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { ComponentDefenition compDefenition = compInstance.ComponentDefenition; foreach (PortDefenition portDef in compDefenition.Ports) { bool find = false; foreach (PortPainter portPainter in compInstance.Ports) { if (portPainter.PortDefenition.Equals(portDef)) { find = true; break; } } if (!find) { double x = compInstance.Painter.Left - PortPainter.DefaultWidth / 2.0; double y = (compInstance.Painter.Top + compInstance.Painter.Bottom) / 2; PortPainter portPainter = ComponentFabric.GetInstance().CreatePortPainter(portDef, x, y); compInstance.Ports.Add(portPainter); } } } } }
public String GetComponentName(ComponentDefenition componentDefenition) { return(componentDefenition.Name); /*int count = 0; * foreach (ComponentInstance compInstance in AutosarApplication.GetInstance().componentInstancesList) * { * if (compInstance.ComponentDefenitionGuid.Equals(componentDefenition.GUID)) * { * count++; * } * } * * return componentDefenition.Name + count.ToString();*/ }
/* * public int GetComponentDefenitionIndex(ComponentInstance instance) * { * int index = -1; * for (int i = 0; i < app.componentInstancesList.Count; i++) * { * if (app.componentInstancesList[i].ComponentDefenition.Equals(instance.ComponentDefenition)) * { * index++; * if (app.componentInstancesList[i].Equals(instance)) * { * return index; * } * } * } * return index; * } */ public int GetComponentDefenitionCount(ComponentDefenition componentDefenition) { int count = 0; foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { if (compInstance.ComponentDefenition.Equals(componentDefenition)) { count++; } } } return(count); }
public ComponentInstancesList GetComponentInstanceByDefenition(ComponentDefenition compDef) { ComponentInstancesList list = new ComponentInstancesList(); foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance componentInstance in composition.ComponentInstances) { if (componentInstance.ComponentDefenitionGuid.Equals(compDef.GUID)) { list.Add(componentInstance); } } } return(list); }
void GenerateRteReadPortFieldFunction(StreamWriter writer, ComponentDefenition compDef, PortDefenition port, SenderReceiverInterfaceField field) { String returnValue = Properties.Resources.STD_RETURN_TYPE; String RteFuncName = RteFunctionsGenerator.GenerateReadWriteConnectionFunctionName(port, field); String fieldVariable = RteFunctionsGenerator.GenerateSenderReceiverInterfaceArguments(field, port.PortType, compDef.MultipleInstantiation); String fieldName = RteFunctionsGenerator.GenerateReadWriteFunctionName(port, field); writer.WriteLine(returnValue + RteFuncName + fieldVariable); writer.WriteLine("{"); writer.WriteLine(" " + TestArtefactsVariable + "." + fieldName + "." + CallCount + "++;"); writer.WriteLine(" memcpy(" + field.Name + ", &" + TestArtefactsVariable + "." + fieldName + ".Arguments.data, sizeof(" + field.DataTypeName + "));"); writer.WriteLine(" return " + TestArtefactsVariable + "." + fieldName + ".ReturnValue;"); writer.WriteLine("}"); writer.WriteLine(""); }
/* Delete component defenition and its instances */ public void Delete(ComponentDefenition componentDefenition) { /* Find Object instances */ foreach (CompositionInstance composition in Compositions) { for (int i = composition.ComponentInstances.Count - 1; i >= 0; i--) { ComponentInstance compInstance = composition.ComponentInstances[i]; if (compInstance.ComponentDefenition.Equals(componentDefenition)) { Delete(compInstance); } } } ComponentDefenitionsList.Remove(componentDefenition); }
void GenerateRteCallPortFieldFunction(StreamWriter writer, ComponentDefenition compDef, PortDefenition port, ClientServerOperation operation) { String returnValue = Properties.Resources.STD_RETURN_TYPE; String RteFuncName = RteFunctionsGenerator.Generate_RteCall_FunctionName(port, operation); String fieldVariable = RteFunctionsGenerator.GenerateClientServerInterfaceArguments(operation, compDef.MultipleInstantiation); writer.WriteLine(returnValue + RteFuncName + fieldVariable); writer.WriteLine("{"); writer.WriteLine(" " + TestArtefactsVariable + "." + RteFuncName + "." + CallCount + "++;"); foreach (var csField in operation.Fields) { writer.WriteLine(" " + TestArtefactsVariable + "." + RteFuncName + ".Arguments." + csField.Name + " = *" + csField.Name + ";"); } writer.WriteLine(" return " + TestArtefactsVariable + "." + RteFuncName + ".ReturnValue;"); writer.WriteLine("}"); writer.WriteLine(""); }
public void ViewPortImage_Drop(DragEventArgs e, double worldCoordX, double worldCoordY) { object obj = e.Data.GetData(typeof(ComponentDefenition)); if (obj is ComponentDefenition) { ComponentDefenition realDefenition = (ComponentDefenition)obj; int count = AutosarApplication.GetInstance().GetComponentDefenitionCount(realDefenition); if (realDefenition.MultipleInstantiation || ((count == 0) && (!realDefenition.MultipleInstantiation))) { ComponentInstance compInstance = ComponentFabric.GetInstance().CreateComponent(realDefenition, worldCoordX, worldCoordY); compInstance.UpdateAnchorsPositions(); CompositionInstance activeComposition = AutosarApplication.GetInstance().ActiveComposition; activeComposition.ComponentInstances.Add(compInstance); } } }
void CreateRteReadFunctions(StreamWriter writer, ComponentDefenition compDefenition) { foreach (PortDefenition port in compDefenition.Ports) { if (port.PortType == PortType.Receiver) { SenderReceiverInterface srInterface = port.InterfaceDatatype as SenderReceiverInterface; if (srInterface != null) // prevent for unselected interface for port { foreach (SenderReceiverInterfaceField field in srInterface.Fields) { GenerateRteReadPortFieldFunction(writer, compDefenition, port, field); } } } } }
void CreateRteCallFunctionDeclarations(StreamWriter writer, ComponentDefenition compDefenition) { foreach (PortDefenition port in compDefenition.Ports) { if (port.PortType == PortType.Server) { ClientServerInterface csInterface = port.InterfaceDatatype as ClientServerInterface; foreach (ClientServerOperation operation in csInterface.Operations) { String returnValue = Properties.Resources.STD_RETURN_TYPE; String RteFuncName = RteFunctionsGenerator.Generate_RteCall_FunctionName(port, operation); String fieldVariable = RteFunctionsGenerator.GenerateClientServerInterfaceArguments(operation, compDefenition.MultipleInstantiation); String writeValue = returnValue + RteFuncName + fieldVariable + ";"; writer.WriteLine(writeValue); } } } }
void CreateComponentIncludes(String dir, ComponentDefenition componentDefenition) { String filename = dir + componentDefenition.Name + ".h"; StreamWriter writer = new StreamWriter(filename); RteFunctionsGenerator.GenerateFileTitle(writer, filename, "Implementation for header of " + componentDefenition.Name); RteFunctionsGenerator.OpenGuardDefine(writer); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.IncludesLine); RteFunctionsGenerator.AddInclude(writer, "Rte_" + componentDefenition.Name + ".h"); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.EndOfIncludesLine); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.MacrosLine); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.EndOfMacrosLine); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.TypeDefenitionsLine); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.EndOfTypeDefenitionsLine); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.ExternalVariablesLine); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.EndOfExternalVariableLine); writer.WriteLine(""); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.GlobalFunctionsDeclarationLine); writer.WriteLine(""); writer.WriteLine(RteFunctionsGenerator.EndOfGlobalFunctionsDeclarationLine); writer.WriteLine(""); RteFunctionsGenerator.CloseGuardDefine(writer); RteFunctionsGenerator.WriteEndOfFile(writer); writer.Close(); }