コード例 #1
0
        /// <summary>
        /// This method reads in a simulation model xml file and builds a SimulationModelInfo object.
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public SimulationModelInfo readModel(string fileName)
        {
            SimulationModelInfo simMod = new SimulationModelInfo();

            GeneratedCode.SimulationModelRoot model = null;
            try
            {
                FileStream    f     = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                XmlSerializer newSr = new XmlSerializer(typeof(GeneratedCode.SimulationModelRoot));

                model = (GeneratedCode.SimulationModelRoot)newSr.Deserialize(f);
                f.Close();
            }
            catch (Exception err)
            {
                throw new Exception(String.Format("Error reading simulation model file: \"{0}\"", fileName), err);


                System.Console.WriteLine("file=" + fileName);
                System.Console.WriteLine(
                    "** Parsing error"
                    + ", line "
                    + err.StackTrace);
                System.Console.WriteLine(" " + err.Message);
                System.Environment.Exit(1);
            }
            simMod.eventModel  = getEventModelInfo(model);
            simMod.objectModel = getObjectModelInfo(model);
            simMod.simulationExecutionModel = getSimulationExecutionModelInfo(model);
            return(simMod);
        }
コード例 #2
0
        SimulationExecutionModelInfo getSimulationExecutionModelInfo(GeneratedCode.SimulationModelRoot model)
        {
            SimulationExecutionModelInfo simex = new SimulationExecutionModelInfo();
            SimulatorExecutionInfo       sim   = null;

            simex.updateFrequency = model.SimulationExecutionModel.UpdateFrequency;
            if (model.SimulationExecutionModel.Simulator != null)
            {
                for (int i = 0; i < model.SimulationExecutionModel.Simulator.Length; i++)
                {
                    sim = new SimulatorExecutionInfo();
                    sim.simulatorName = model.SimulationExecutionModel.Simulator[i].SimulatorName;
                    sim.dllName       = model.SimulationExecutionModel.Simulator[i].DLLName;
                    simex.simulators.Add(sim);
                }
            }
            return(simex);
        }
コード例 #3
0
        EventModelInfo getEventModelInfo(GeneratedCode.SimulationModelRoot model)
        {
            EventModelInfo   eventModel = new EventModelInfo();
            List <EventInfo> events     = null;

            for (int i = 0; i < model.EventModel.Length; i++)
            {
                if (events == null)
                {
                    events = getEventInfo("", model.EventModel[i]);
                }
                else
                {
                    System.Console.WriteLine("Error: there should only be one EventModel section!");
                    System.Environment.Exit(1);
                }
                foreach (EventInfo e in events)
                {
                    if (eventModel.events.ContainsKey(e.name))
                    {
                        System.Console.WriteLine("Error: multiple definition of " + e.name + " event type");
                        System.Environment.Exit(1);
                    }

                    if (e.parentName != "")
                    {
                        foreach (ParameterInfo p in eventModel.events[e.parentName].parameters.Values)
                        {
                            if (e.parameters.ContainsKey(p.name))
                            {
                                System.Console.WriteLine("Error: multiple parameters with name:" + p.name + " defined");
                                System.Environment.Exit(1);
                            }
                            e.parameters[p.name] = p;
                        }
                    }
                    eventModel.events[e.name] = e;
                }
            }
            return(eventModel);
        }
コード例 #4
0
        ObjectModelInfo getObjectModelInfo(GeneratedCode.SimulationModelRoot model)
        {
            ObjectModelInfo   objectModel = new ObjectModelInfo();
            List <ObjectInfo> objects     = null;

            for (int i = 0; i < model.ObjectModel.Length; i++)
            {
                if (objects == null)
                {
                    objects = getObjectInfo("", model.ObjectModel[i]);
                }
                else
                {
                    System.Console.WriteLine("Error: there should only be one EventModel section!");
                    System.Environment.Exit(1);
                }
                foreach (ObjectInfo o in objects)
                {
                    if (objectModel.objects.ContainsKey(o.name))
                    {
                        System.Console.WriteLine("Error: multiple definition of " + o.name + " object type");
                        System.Environment.Exit(1);
                    }

                    if (o.parentName != "")
                    {
                        foreach (AttributeInfo a in objectModel.objects[o.parentName].attributes.Values)
                        {
                            if (o.attributes.ContainsKey(a.name))
                            {
                                System.Console.WriteLine("Error: multiple parameters with name:" + a.name + " defined");
                                System.Environment.Exit(1);
                            }
                            o.attributes[a.name] = a;
                        }
                    }
                    objectModel.objects[o.name] = o;
                }
            }
            return(objectModel);
        }
コード例 #5
0
        public SimulationModelInfo readModel(Stream str)
        {
            SimulationModelInfo simMod = new SimulationModelInfo();

            GeneratedCode.SimulationModelRoot model = null;
            try
            {
                XmlSerializer newSr = new XmlSerializer(typeof(GeneratedCode.SimulationModelRoot));

                model = (GeneratedCode.SimulationModelRoot)newSr.Deserialize(str);
                str.Close();
            }
            catch (Exception err)
            {
                throw new Exception("Error reading simulation model stream:" + err.Message);
            }
            simMod.eventModel  = getEventModelInfo(model);
            simMod.objectModel = getObjectModelInfo(model);
            simMod.simulationExecutionModel = getSimulationExecutionModelInfo(model);
            return(simMod);
        }