#include "stdafx.h" #include "MsrThreadStatusClr.h" #include "otsdataconst.h" namespace OTSINTERFACE { CMsrThreadStatusClr::CMsrThreadStatusClr() { mMsrStatus =new CMsrThreadStatusPtr( new CMsrThreadStatus()); } CMsrThreadStatusClr::CMsrThreadStatusClr( CMsrThreadStatusClr^ a_oSource) // copy constructor { if (a_oSource == nullptr) { LogErrorTrace(__FILE__, __LINE__, _T("CMsrSampleStatusClr: invalid measure result.")); return; } // can't copy itself if (a_oSource == this) { return; } // copy data over Duplicate(a_oSource); } CMsrThreadStatusClr::CMsrThreadStatusClr(CMsrThreadStatusPtr pMsrStatus) // copy constructor { ASSERT(pMsrStatus); if (!pMsrStatus) { return; } mMsrStatus = new CMsrThreadStatusPtr(pMsrStatus); } CMsrThreadStatusClr^ CMsrThreadStatusClr::operator=( CMsrThreadStatusClr^ a_oSource) // =operator { if (a_oSource == nullptr) { LogErrorTrace(__FILE__, __LINE__, _T("CMsrSampleStatusClr=: invalid measure result.")); return nullptr; } // copy the class data over Duplicate(a_oSource); // return class return this; } CMsrThreadStatusClr::~CMsrThreadStatusClr() { if (mMsrStatus != nullptr) { delete mMsrStatus; } } CMsrThreadStatusClr::!CMsrThreadStatusClr() { if (mMsrStatus != nullptr) { delete mMsrStatus; } } CMsrThreadStatusPtr CMsrThreadStatusClr::GetMsrThreadStatusPtr() { return *mMsrStatus; } void CMsrThreadStatusClr::SetCompletedSample(COTSSamplesListClr^ a_listCpldSamples) { ASSERT(a_listCpldSamples); if (!a_listCpldSamples) { LogErrorTrace(__FILE__, __LINE__, _T("SetCompletedSample: invalid list pointer.")); return; } COTSSamplesList listSample; listSample.clear(); for (int i = 0; i < a_listCpldSamples->Count; i++) { COTSSamplePtr pSample = a_listCpldSamples[i]->GetSamplePtr(); ASSERT(pSample); if (!pSample) { LogErrorTrace(__FILE__, __LINE__, _T("SetCompletedSample: invalid list pointer.")); return ; } listSample.push_back(pSample); } mMsrStatus->get()->SetCompletedSamples(listSample); } // duplication void CMsrThreadStatusClr::Duplicate( CMsrThreadStatusClr^ a_oSource) { if (a_oSource == nullptr) { LogErrorTrace(__FILE__, __LINE__, _T("CMsrSampleStatusClr: invalid measure result.")); return; } mMsrStatus = new CMsrThreadStatusPtr(new CMsrThreadStatus(a_oSource->GetMsrThreadStatusPtr().get())); } }