123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- #include "stdafx.h"
- #include "InclutionSTDData.h"
- #include <algorithm>
- namespace OTSClassifyEngine {
- // constructor
- CInclutionSTDData::CInclutionSTDData()
- {
- // initialization
- Init();
- }
- // copy constructor
- CInclutionSTDData::CInclutionSTDData(const CInclutionSTDData& a_oSource)
- {
- // can't copy itself
- if (&a_oSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(a_oSource);
- }
- // copy constructor
- CInclutionSTDData::CInclutionSTDData(CInclutionSTDData* a_poSource)
- {
- // input check
- ASSERT(a_poSource);
- if (!a_poSource)
- {
- return;
- }
- // can't copy itself
- if (a_poSource == this)
- {
- return;
- }
- // copy data over
- Duplicate(*a_poSource);
- }
- // =operator
- CInclutionSTDData& CInclutionSTDData::operator=(const CInclutionSTDData& a_oSource)
- {
- // cleanup
- Cleanup();
- // copy the class data over
- Duplicate(a_oSource);
- // return class
- return *this;
- }
- // ==operator
- BOOL CInclutionSTDData::operator==(const CInclutionSTDData& a_oSource)
- {
- // elements list
- int nSize = (int)m_listElements.size();
- if (nSize != (int)a_oSource.m_listElements.size())
- {
- return FALSE;
- }
- for (unsigned int i = 0; i < nSize; ++i)
- {
- if (!(*(m_listElements[i].get()) == *(a_oSource.m_listElements[i].get())))
- {
- return FALSE;
- }
- }
- // element rangers list
- nSize = (int)m_listSTDItems.size();
- if (nSize != (int)a_oSource.m_listSTDItems.size())
- {
- return FALSE;
- }
- for (unsigned int i = 0; i < nSize; ++i)
- {
- if (!(*(m_listSTDItems[i].get()) == *(a_oSource.m_listSTDItems[i].get())))
- {
- return FALSE;
- }
- }
- // members
- return m_strVersion.Compare(a_oSource.m_strVersion) == 0 && m_strName.Compare(a_oSource.m_strName) == 0;
- }
- // destructor
- CInclutionSTDData::~CInclutionSTDData()
- {
- // cleanup
- Cleanup();
- }
- // CPartSTDData member functions
- // public
- // serialization
-
- // elements list
- void CInclutionSTDData::SetElementsList(CElementsList& a_listElements, BOOL a_bClear)
- {
- // clear elements list if necessary
- if (a_bClear)
- {
- m_listElements.clear();
- }
- // copy elements list
- for (auto poElement : a_listElements)
- {
- //CElementPtr poElementNew(new CElement(poElement.get()));
- CElementPtr poElementNew(poElement.get());
- m_listElements.push_back(poElementNew);
- }
- }
- // std items list
- void CInclutionSTDData::SetSTDItemsList(CSTDItemsList& a_listSTDItems, BOOL a_bClear)
- {
- m_listSTDItems = a_listSTDItems;
- }
- CSTDItemPtr CInclutionSTDData::GetSTDItemById(int a_nId)
- {
- // std item
- CSTDItemPtr poSDTItem = nullptr;
- // get std items list
- auto itr = std::find_if(m_listSTDItems.begin(), m_listSTDItems.end(), [a_nId](CSTDItemPtr& poSTDItemPtr) { return poSTDItemPtr->GetSTDId() == a_nId; });
- if (itr != m_listSTDItems.end())
- {
- // found the std item
- poSDTItem = *itr;
- }
- // return std item
- return poSDTItem;
- }
- void CInclutionSTDData::Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode)
- {
- xmls::xInt xFileMark;
- xmls::xString xstrVersion;
- xmls::xString xstrName;
- xmls::Collection<CElement> xElementslist;
- xmls::Collection<CSTDItem> xSTDItemslist;
- xmls::Slo slo;
- slo.Register("FileMark", &xFileMark);
- slo.Register("Version", &xstrVersion);
- slo.Register("libName", &xstrName);
- slo.Register("Elementslist", &xElementslist);
- slo.Register("STDItemslist", &xSTDItemslist);
- if (isStoring)
- {
- xFileMark = PART_STD_FILE_MARK;
- xstrVersion = m_strVersion;
- xstrName = m_strName;
- xElementslist.Clear();
- for (unsigned int i = 0; i < m_listElements.size(); i++)
- {
- xElementslist.addItem(m_listElements[i].get());
- }
- xSTDItemslist.Clear();
- for (unsigned int i = 0; i < m_listSTDItems.size(); i++)
- {
- xSTDItemslist.addItem(m_listSTDItems[i].get());
- }
- int nSTDId = (int)OTS_ID_SCOPE::USER_DEFINED_MIN;
- for (auto poSTDItem : m_listSTDItems)
- {
- //poSTDItem->Serialize(ar);
- int STDId = poSTDItem->GetSTDId();
- if (STDId < (int)OTS_ID_SCOPE::SYS_DEFINED_MIN)
- {
- poSTDItem->SetSTDId(nSTDId);
- ++nSTDId;
- }
- }
- slo.Serialize(true, classDoc, rootNode);
- }
- else
- {
- slo.Serialize(false, classDoc, rootNode);
- m_strVersion = xstrVersion.value().c_str();
- m_strName = xstrName.value().c_str();
- m_listElements.clear();
- for ( int i = 0; i < xElementslist.size(); i++)
- {
- m_listElements.push_back(CElementPtr(xElementslist.getItem(i)));
- }
- m_listSTDItems.clear();
- for ( int i = 0; i < xSTDItemslist.size(); i++)
- {
- m_listSTDItems.push_back(CSTDItemPtr(xSTDItemslist.getItem(i)));
- }
- int nIdInit = (int)OTS_ID_SCOPE::USER_DEFINED_MIN;
- for (auto s:m_listSTDItems)
- {
-
- //if PARTCLE value is NOT_IDENTIFIED Set STDID is Identifying
- if (s->GetSTDId() == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED)
- {
- s->SetSTDId(nIdInit);
- ++nIdInit;
- }
- }
- }
- }
- // protected
- // cleanup
- void CInclutionSTDData::Cleanup()
- {
- // need to do nothing at the moment
- }
- // initialization
- void CInclutionSTDData::Init()
- {
- // initialization
- m_strVersion = _T("1.1.1");
- m_strName = _T("");
- m_listElements.clear();
- m_listSTDItems.clear();
- }
- // duplication
- void CInclutionSTDData::Duplicate(const CInclutionSTDData& a_oSource)
- {
- // initialization
- Init();
- // copy data over
- m_strVersion = a_oSource.m_strVersion;
- m_strName = a_oSource.m_strName;
- for (auto poElement : a_oSource.m_listElements)
- {
- CElementPtr poElementNew(new CElement(*(poElement.get())));
- m_listElements.push_back(poElementNew);
- }
- for (auto poSTDItem : a_oSource.m_listSTDItems)
- {
- CSTDItemPtr poSTDItemNew(new CSTDItem(*(poSTDItem.get())));
- m_listSTDItems.push_back(poSTDItemNew);
- }
- }
- }
|