using System.Collections.Generic;
using TSLab.Script.Handlers;
namespace NewIndicators.Support
{
public class Flip : IBoolAccum
{
public IList<bool> Execute(IList<bool> source1, IList<bool> source2)
{
return Calc(source1, source2);
}
public bool m_last;
public bool Execute(bool source1, bool source2)
{
m_last = Calc(source1, source2, m_last);
return m_last;
}
public static IList<bool> Calc(IList<bool> source1, IList<bool> source2)
{
var res = new bool[source1.Count];
for (int i = 1; i < source1.Count; i++)
{
var last = i > 0 ? res[i - 1] : false;
res[i] = Calc(source1[i], source2[i], last);
}
return res;
}
public static bool Calc(bool source1, bool source2, bool last)
{
var res = last;
if(!res & source1)
{
res = true;
}
if (res & source2)
{
res = false;
}
return res;
}
}
}