using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;

using CategoryTheory;
using DiagramUI;

namespace DataPerformer
{
    /// <summary>
    /// Parameter of measurements
    /// </summary>
    public delegate object MeasureParameter();


    /// <summary>
    /// Array calculator
    /// </summary>
    public delegate void ArrayCalculator(int n, int m, double[] x, double[] data);






 
    /// <summary>
    /// Common interface of data transformers
    /// </summary>
    public interface IDataTransformer : IMeasurements, IDataConsumer
    {
    }

    /// <summary>
    /// Factory of data transformers
    /// </summary>
    public interface IDataTransformerFactory
    {
        /// <summary>
        /// Gets data transformer by name
        /// </summary>
        /// <param name="name">The name of data transformer</param>
        /// <returns>Data transformer name</returns>
        IDataTransformer this[string name]
        {
            get;
        }

        /// <summary>
        /// Names of transformers
        /// </summary>
        string[] Transformers
        {
            get;
        }
    }
}
