using System;
using System.Collections.Generic;
using System.Text;
using DataPerformer.Interfaces;
namespace DataPerformer
{
/// <summary>
/// Performer of derivation
/// </summary>
public static class DerivationPerformer
{
/// <summary>
/// Get order of measure derivation
/// </summary>
/// <param name="measure">The measure</param>
/// <returns>Order of derivation</returns>
public static int GetDerivationOrder(IMeasure measure)
{
if (measure is IDerivation)
{
IDerivation d = measure as IDerivation;
IMeasure m = d.Derivation;
return GetDerivationOrder(m) + 1;
}
return 0;
}
/// <summary>
/// Gets higher derivation of measure
/// </summary>
/// <param name="measure">The measure</param>
/// <param name="order">Order of derivation</param>
/// <returns>Hihger derivation</returns>
public static IMeasure GetDerivation(IMeasure measure, int order)
{
if (order == 0)
{
return measure;
}
if (measure is IDerivation)
{
IDerivation d = measure as IDerivation;
IMeasure m = d.Derivation;
return GetDerivation(m, order - 1);
}
return null;
}
}
}