using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace OTSDataType { public class CIntRange:ISlo { private int m_nStart; private int m_nEnd; public CIntRange() { m_nStart = 0; m_nEnd = 0; } public CIntRange(int a_nStart, int a_nEnd) { m_nStart =Math.Min(a_nStart, a_nEnd); m_nEnd = Math.Max(a_nStart, a_nEnd); } public CIntRange(CIntRange a_poSource) { Duplicate(a_poSource); } public bool equals(CIntRange a_oSource) { return m_nStart == a_oSource.m_nStart && m_nEnd == a_oSource.m_nEnd; } public bool DataInRange(int a_nData) { return a_nData >= m_nStart && a_nData <= m_nEnd; } // start public void SetStart(int a_nStart) { m_nStart = a_nStart; //Normalise(); } public int GetStart() { return m_nStart ; } // end public void SetEnd(int a_nEnd) { m_nEnd = a_nEnd; Normalise(); } public int GetEnd() { return m_nEnd; } public void Duplicate( CIntRange a_oSource) { // copy data over m_nStart = a_oSource.m_nStart; m_nEnd = a_oSource.m_nEnd; } // normalize public void Normalise() { m_nEnd = Math.Max(m_nStart, m_nEnd); m_nStart = Math.Min(m_nStart, m_nEnd); } public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode) { xInt xStart=new xInt(); xInt xEnd=new xInt(); Slo slo=new Slo(); slo.Register("start", xStart); slo.Register("end", xEnd); if (isStoring) { xStart.AssignValue(m_nStart); xEnd.AssignValue(m_nEnd); slo.Serialize(true, classDoc, rootNode); } else { slo.Serialize(false, classDoc, rootNode); m_nStart = xStart.value(); m_nEnd = xEnd.value(); } } } }