using System;
using System.Collections.Generic;
using System.Text;
using FormulaEditor.Interfaces;
namespace FormulaEditor
{
/// <summary>
/// Equality operation
/// </summary>
public class EqualityOperation : IObjectOperation, IFormulaCreatorOperation
{
/// <summary>
/// Variable for type definition
/// </summary>
private const Boolean b = false;
/// <summary>
/// The singleton
/// </summary>
public static readonly EqualityOperation Object = new EqualityOperation();
/// <summary>
/// Constructor
/// </summary>
private EqualityOperation()
{
}
/// <summary>
/// Arity of this operation
/// </summary>
public int Arity
{
get
{
return 2;
}
}
/// <summary>
/// Calculates result of this operation
/// </summary>
public object this[object[] x]
{
get
{
return x[0].Equals(x[1]);
}
}
/// <summary>
/// Return type
/// </summary>
public object ReturnType
{
get
{
return b;
}
}
/// <summary>
/// The "is powered" sign
/// </summary>
public bool IsPowered
{
get
{
return false;
}
}
/// <summary>
/// Creates formula
/// </summary>
/// <param name="tree">Operation tree</param>
/// <param name="level">Formula level</param>
/// <param name="sizes">Sizes of symbols</param>
/// <returns>The formula</returns>
public MathFormula CreateFormula(ObjectFormulaTree tree, byte level, int[] sizes)
{
return OptionalOperation.CreateFormula(this, tree, level, sizes, "=");
}
/// <summary>
/// Operation priority
/// </summary>
public int OperationPriority
{
get
{
return (int)ElementaryOperationPriorities.Comparation;
}
}
}
}