#include "stdafx.h" #include "TriTempItem.h" namespace OTSMODEL { //constructor CTriTempItem::CTriTempItem() { // initialization Init(); } // copy constructor CTriTempItem::CTriTempItem(const CTriTempItem& a_oSource) { // can't copy itself if (&a_oSource == this) { return; } // copy data over Duplicate(a_oSource); } // copy constructor CTriTempItem::CTriTempItem(CTriTempItem* a_poSource) { // can't copy itself if (a_poSource == this) { return; } // copy data over Duplicate(*a_poSource); } // =operator CTriTempItem& CTriTempItem::operator=(const CTriTempItem& a_oSource) { // cleanup Cleanup(); // copy the class data over Duplicate(a_oSource); // return class return *this; } // ==operator BOOL CTriTempItem::operator==(const CTriTempItem& a_oSource) { // return FASLE, if the two list are in different size int nSize = (int)m_listTriTempItemElement.size(); if (nSize != (int)a_oSource.m_listTriTempItemElement.size()) { return FALSE; } // return FALSE if any of the pare holes are different for (int i = 0; i < nSize; ++i) { if (!(*(m_listTriTempItemElement[i].get()) == *(a_oSource.m_listTriTempItemElement[i].get()))) { return FALSE; } } return m_strTemplateName.Compare(a_oSource.m_strTemplateName) == 0 && m_TemplateID == a_oSource.m_TemplateID; } //destructor CTriTempItem::~CTriTempItem() { // cleanup Cleanup(); } void CTriTempItem::SetTriTempItemElementList(CTriTempItemElementList& a_listTriTemp, BOOL a_bClear/* = TRUE*/) { // clear list if necessary if (a_bClear) { m_listTriTempItemElement.clear(); } // copy the list for (auto pTriTemp : a_listTriTemp) { CTriTempItemElementPtr pTriTempItemElementNew = CTriTempItemElementPtr(new CTriTempItemElement(*pTriTemp.get())); m_listTriTempItemElement.push_back(pTriTempItemElementNew); } } // initialization void CTriTempItem::Init() { m_TemplateID = -1; m_strTemplateName = _T(""); m_strTopName = _T(""); m_strLeftName = _T(""); m_strRightName = _T(""); // initialization m_listTriTempItemElement.clear(); } // cleanup void CTriTempItem::Cleanup() { m_listTriTempItemElement.clear(); } // duplication void CTriTempItem::Duplicate(const CTriTempItem& a_oSource) { // initialization Init(); // copy data over m_TemplateID = a_oSource.m_TemplateID; m_strTemplateName = a_oSource.m_strTemplateName; m_strTopName = a_oSource.m_strTopName; m_strLeftName = a_oSource.m_strLeftName; m_strRightName = a_oSource.m_strRightName; for (auto pTriTempItemElement : a_oSource.m_listTriTempItemElement) { CTriTempItemElementPtr pTriTempNew = CTriTempItemElementPtr(new CTriTempItemElement(pTriTempItemElement.get())); m_listTriTempItemElement.push_back(pTriTempNew); } } void CTriTempItem::Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode) { // Name xmls::xInt xnTemplateID; xmls::xString xstrTempName; xmls::xString xstrTopName; xmls::xString xstrLeftName; xmls::xString xstrRightName; xmls::Collection xTriTempItemElement; xmls::Slo slo; slo.Register("TemplateID", &xnTemplateID); slo.Register("TemplateName", &xstrTempName); slo.Register("TopName", &xstrTopName); slo.Register("LeftName", &xstrLeftName); slo.Register("RightName", &xstrRightName); slo.Register("TemplateItemElement", &xTriTempItemElement); if (isStoring) { xnTemplateID = m_TemplateID; xstrTempName = m_strTemplateName; xstrTopName = m_strTopName; xstrLeftName = m_strLeftName; xstrRightName = m_strRightName; for (int i = 0; i < m_listTriTempItemElement.size(); i++) { xTriTempItemElement.addItem(m_listTriTempItemElement[i].get()); } slo.Serialize(true, classDoc, rootNode); } else { slo.Serialize(false, classDoc, rootNode); m_TemplateID = xnTemplateID.value(); m_strTemplateName = xstrTempName.value().c_str(); m_strTopName = xstrTopName.value().c_str(); m_strLeftName = xstrLeftName.value().c_str(); m_strRightName = xstrRightName.value().c_str(); for (int i = 0; i < xTriTempItemElement.size(); i++) { m_listTriTempItemElement.push_back(CTriTempItemElementPtr(xTriTempItemElement.getItem(i))); } } } }