CIntRange.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Xml;
  7. namespace OTSDataType
  8. {
  9. public class CIntRange:ISlo
  10. {
  11. private int m_nStart;
  12. private int m_nEnd;
  13. public CIntRange()
  14. {
  15. m_nStart = 0;
  16. m_nEnd = 0;
  17. }
  18. public CIntRange(int a_nStart, int a_nEnd)
  19. {
  20. m_nStart =Math.Min(a_nStart, a_nEnd);
  21. m_nEnd = Math.Max(a_nStart, a_nEnd);
  22. }
  23. public CIntRange(CIntRange a_poSource)
  24. {
  25. Duplicate(a_poSource);
  26. }
  27. public bool equals(CIntRange a_oSource)
  28. {
  29. return m_nStart == a_oSource.m_nStart && m_nEnd == a_oSource.m_nEnd;
  30. }
  31. public bool DataInRange(int a_nData)
  32. {
  33. return a_nData >= m_nStart && a_nData <= m_nEnd;
  34. }
  35. // start
  36. public void SetStart(int a_nStart)
  37. {
  38. m_nStart = a_nStart;
  39. //Normalise();
  40. }
  41. public int GetStart()
  42. {
  43. return m_nStart ;
  44. }
  45. // end
  46. public void SetEnd(int a_nEnd)
  47. {
  48. m_nEnd = a_nEnd;
  49. Normalise();
  50. }
  51. public int GetEnd()
  52. {
  53. return m_nEnd;
  54. }
  55. public void Duplicate( CIntRange a_oSource)
  56. {
  57. // copy data over
  58. m_nStart = a_oSource.m_nStart;
  59. m_nEnd = a_oSource.m_nEnd;
  60. }
  61. // normalize
  62. public void Normalise()
  63. {
  64. m_nEnd = Math.Max(m_nStart, m_nEnd);
  65. m_nStart = Math.Min(m_nStart, m_nEnd);
  66. }
  67. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  68. {
  69. xInt xStart=new xInt();
  70. xInt xEnd=new xInt();
  71. Slo slo=new Slo();
  72. slo.Register("start", xStart);
  73. slo.Register("end", xEnd);
  74. if (isStoring)
  75. {
  76. xStart.AssignValue(m_nStart);
  77. xEnd.AssignValue(m_nEnd);
  78. slo.Serialize(true, classDoc, rootNode);
  79. }
  80. else
  81. {
  82. slo.Serialize(false, classDoc, rootNode);
  83. m_nStart = xStart.value();
  84. m_nEnd = xEnd.value();
  85. }
  86. }
  87. }
  88. }