Flee
This commit is contained in:
114
CalcEngine/InternalTypes/Miscellaneous.cs
Normal file
114
CalcEngine/InternalTypes/Miscellaneous.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using Flee.PublicTypes;
|
||||
|
||||
namespace Flee.CalcEngine.InternalTypes
|
||||
{
|
||||
internal class PairEqualityComparer : EqualityComparer<ExpressionResultPair>
|
||||
{
|
||||
public override bool Equals(ExpressionResultPair x, ExpressionResultPair y)
|
||||
{
|
||||
return string.Equals(x.Name, y.Name, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public override int GetHashCode(ExpressionResultPair obj)
|
||||
{
|
||||
return StringComparer.OrdinalIgnoreCase.GetHashCode(obj.Name);
|
||||
}
|
||||
}
|
||||
|
||||
internal abstract class ExpressionResultPair
|
||||
{
|
||||
|
||||
private string _myName;
|
||||
|
||||
protected IDynamicExpression MyExpression;
|
||||
|
||||
protected ExpressionResultPair()
|
||||
{
|
||||
}
|
||||
|
||||
public abstract void Recalculate();
|
||||
|
||||
public void SetExpression(IDynamicExpression e)
|
||||
{
|
||||
MyExpression = e;
|
||||
}
|
||||
|
||||
public void SetName(string name)
|
||||
{
|
||||
_myName = name;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return _myName;
|
||||
}
|
||||
|
||||
public string Name => _myName;
|
||||
|
||||
public abstract Type ResultType { get; }
|
||||
public abstract object ResultAsObject { get; set; }
|
||||
|
||||
public IDynamicExpression Expression => MyExpression;
|
||||
}
|
||||
|
||||
internal class GenericExpressionResultPair<T> : ExpressionResultPair
|
||||
{
|
||||
public T MyResult;
|
||||
public GenericExpressionResultPair()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Recalculate()
|
||||
{
|
||||
MyResult = (T)MyExpression.Evaluate();
|
||||
}
|
||||
|
||||
public T Result => MyResult;
|
||||
|
||||
public override System.Type ResultType => typeof(T);
|
||||
|
||||
public override object ResultAsObject
|
||||
{
|
||||
get { return MyResult; }
|
||||
set { MyResult = (T)value; }
|
||||
}
|
||||
}
|
||||
|
||||
internal class BatchLoadInfo
|
||||
{
|
||||
public string Name;
|
||||
public string ExpressionText;
|
||||
|
||||
public ExpressionContext Context;
|
||||
public BatchLoadInfo(string name, string text, ExpressionContext context)
|
||||
{
|
||||
this.Name = name;
|
||||
this.ExpressionText = text;
|
||||
this.Context = context;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class NodeEventArgs : EventArgs
|
||||
{
|
||||
|
||||
private string _myName;
|
||||
|
||||
private object _myResult;
|
||||
|
||||
internal NodeEventArgs()
|
||||
{
|
||||
}
|
||||
|
||||
internal void SetData(string name, object result)
|
||||
{
|
||||
_myName = name;
|
||||
_myResult = result;
|
||||
}
|
||||
|
||||
public string Name => _myName;
|
||||
|
||||
public object Result => _myResult;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user