123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #include "stdafx.h"
- #include "OTSSegment.h"
- namespace OTSDATA {
- // CDomain
- COTSSegment::COTSSegment()
- {
- Init();
- }
- // constructor
- COTSSegment::COTSSegment(long a_nHeight, long a_nStart, long a_nLength) // constructor
- {
- Init();
- m_nHeight = a_nHeight;
- m_nStart = a_nStart;
- m_nLength = a_nLength;
- }
- COTSSegment::COTSSegment(const COTSSegment& a_oSource) // copy constructor
- {
- // can't copy itself
- if (&a_oSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(a_oSource);
- }
- COTSSegment::COTSSegment(COTSSegment* a_poSource) // copy constructor
- {
- // input check
- ASSERT(a_poSource);
- if (!a_poSource)
- {
- return;
- }
- // can't copy itself
- if (a_poSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(*a_poSource);
- }
- COTSSegment& COTSSegment::operator=(const COTSSegment& a_oSource) // =operator
- {
- // cleanup
- Cleanup();
- // copy the class data over
- Duplicate(a_oSource);
- // return class
- return *this;
- }
- BOOL COTSSegment::operator==(const COTSSegment&a_oSource) // ==operator
- {
- return m_nHeight == a_oSource.m_nHeight && m_nStart == a_oSource.m_nStart && m_nLength == a_oSource.m_nLength;
- }
- COTSSegment::~COTSSegment() // destructor
- {
- Cleanup();
- }
- void COTSSegment::Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode)
- {
- xmls::xLong xnHeight;
- xmls::xLong xnStart;
- xmls::xLong xnLength;
- xmls::Slo slo;
- slo.Register("Height", &xnHeight);
- slo.Register("Start", &xnStart);
- slo.Register("Length", &xnLength);
- if (isStoring)
- {
- xnHeight = m_nHeight;
- xnStart = m_nStart;
- xnLength = m_nLength;
- slo.Serialize(true, classDoc, rootNode);
- }
- else
- {
- slo.Serialize(false, classDoc, rootNode);
- m_nHeight = xnHeight.value();
- m_nStart = xnStart.value();
- m_nLength = xnLength.value();
- }
- }
- BOOL COTSSegment::UpDownConection(const COTSSegment &a_Segment)
- {
- if (abs((int)(a_Segment.m_nHeight - m_nHeight)) != 1)
- {
- return FALSE;
- }
- long myStart = m_nStart;
- long myEnd = m_nStart + m_nLength - 1;
- long yourStart = a_Segment.m_nStart;
- long yourEnd = a_Segment.m_nStart + a_Segment.m_nLength - 1;
- if (yourStart-myEnd > 1 || myStart-yourEnd >1 )
- {
- return FALSE;
- }
- return TRUE;
- }
- // cleanup
- void COTSSegment::Cleanup()
- {
- }
- // initialization
- void COTSSegment::Init()
- {
- // height
- m_nHeight = 0;
- // start
- m_nStart = 0;
- // length
- m_nLength = 0;
- }
- // duplication
- void COTSSegment::Duplicate(const COTSSegment& a_oSource)
- {
- // initialization
-
- // copy data over
- m_nHeight = a_oSource.m_nHeight;
- m_nStart = a_oSource.m_nStart;
- m_nLength = a_oSource.m_nLength;
- }
- }
|