/// <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);
        }
Exemple #3
0
        /// <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);
        }