/// <summary> /// Creates measurements /// </summary> /// <param name="consumer">Data consumer</param> /// <param name="argument">Argument</param> /// <param name="values">Names of values</param> /// <param name="series">series</param> /// <param name="functions">functions</param> /// <returns>Mesurements dictionary</returns> public static Dictionary <string, object> CreateMeasurements(this IDataConsumer consumer, string argument, string[] values, out ParametrizedSeries[] series, out Dictionary <DoubleArrayFunction, IMeasurement[]> functions) { Double a = 0; functions = new Dictionary <DoubleArrayFunction, IMeasurement[]>(); series = null; if (argument == null | values == null) { return(null); } IMeasurement arg = null; if (argument.Equals("Time")) { arg = DataPerformer.Portable.StaticExtensionDataPerformerPortable.Factory.TimeProvider.TimeMeasurement; } else { arg = consumer.FindMeasurement(argument, false); } Dictionary <string, object> d = new Dictionary <string, object>(); List <ParametrizedSeries> m = new List <ParametrizedSeries>(); foreach (string key in values) { object o = null; IMeasurement val = consumer.FindMeasurement(key, false); object t = val.Type; if (t.Equals(a)) { ParametrizedSeries ps = new ParametrizedSeries(arg.ToValueHolder(), val.ToValueHolder()); m.Add(ps); o = ps; } else { DoubleArrayFunction f = new DoubleArrayFunction(t); functions[f] = new IMeasurement[] { arg, val }; o = f; } d[key] = o; } series = m.ToArray(); Type type = consumer.GetType(); System.Reflection.MethodInfo mi = type.GetMethod("Prepare", new Type[0]); if (mi != null) { mi.Invoke(consumer, new object[0]); } return(d); }
/// <summary> /// Gets series /// </summary> /// <param name="consumer">Data consumer</param> /// <param name="start">Start</param> /// <param name="step">Step</param> /// <param name="count">Count of steps</param> /// <param name="argument">Argument</param> /// <param name="values">Values</param> /// <returns>Dictionary of series</returns> public static Dictionary <string, DataPerformer.Basic.Series> GetSeries(this IDataConsumer consumer, double start, double step, int count, string argument, string[] values) { Dictionary <string, DataPerformer.Basic.Series> dic = new Dictionary <string, Basic.Series>(); Dictionary <string, object> d = consumer.PerformFixed(start, step, count, argument, values); foreach (string key in d.Keys) { ParametrizedSeries s = d[key] as ParametrizedSeries; DataPerformer.Basic.Series ser = new DataPerformer.Basic.Series(); ser.CopyFrom(s); dic[key] = ser; } return(dic); }
/// <summary> /// Creates measurements /// </summary> /// <param name="argument">Argument</param> /// <param name="values">Names of values</param> /// <param name="series">series</param> /// <param name="functions">functions</param> /// <param name="disassembly">Disassembly</param> /// <returns>Mesurements dictionary</returns> public Dictionary <string, object> CreateMeasurements(string argument, string[] values, out ParametrizedSeries[] series, out Dictionary <DoubleArrayFunction, IMeasurement[]> functions, Dictionary <IMeasurement, MeasurementsDisasseblyWrapper> disassembly = null) { Dictionary <IMeasurement, MeasurementsDisasseblyWrapper> dis = new Dictionary <IMeasurement, MeasurementsDisasseblyWrapper>(); if (disassembly != null) { dis = disassembly; } double a = 0; functions = new Dictionary <DoubleArrayFunction, IMeasurement[]>(); series = null; if (argument == null | values == null) { return(null); } IMeasurement arg = null; if (argument.Equals("Time")) { arg = StaticExtensionDataPerformerPortable.Factory.TimeProvider.TimeMeasurement; } else { arg = this.FindMeasurement(argument, false); } Dictionary <string, object> d = new Dictionary <string, object>(); List <ParametrizedSeries> m = new List <ParametrizedSeries>(); foreach (string key in values) { object o = null; IMeasurement val = this.FindMeasurement(key, false); if (val == null) { continue; } object t = val.Type; if (t.Equals(a)) { ParametrizedSeries ps = new ParametrizedSeries(arg.ToValueHolder(), val.ToValueHolder()); m.Add(ps); o = ps; } else if (disassembly.ContainsKey(val)) { MeasurementsDisasseblyWrapper mv = disassembly[val]; string k = key.Substring(0, key.IndexOf('.') + 1); foreach (IMeasurement mea in mv.Measurements) { ParametrizedSeries ps = new ParametrizedSeries(arg.ToValueHolder(), mea.ToValueHolder()); m.Add(ps); if (ps != null) { d[k + mea.Name] = ps; } } continue; /* TEMP DELETE DoubleArrayFunction f = new DoubleArrayFunction(t); * functions[f] = new IMeasurement[] { arg, val }; * o = f; */ } if (o != null) { d[key] = o; } } series = m.ToArray(); Prepare(); return(d); }