#include "StdAfx.h" #include "T2Archive.h" #include "T2People.h" #include "T2PeopleArrayList.h" #include "T2PeoplePtrList.h" T2PeoplePtrList::T2PeoplePtrList(int count) : LArray(sizeof(T2People *)) { Init(count); } /*virtual*/ T2PeoplePtrList::~T2PeoplePtrList() { } void T2PeoplePtrList::Init(unsigned int count) { if (count > 0) { AdjustAllocation(count); T2People *nullPeople = NULL; InsertItemsAt(count, 1, &nullPeople); } } BOOL T2PeoplePtrList::Add(T2People* people) { BOOL done = false; T2People *nullPeople = NULL; int theIndex; if (GetPeopleIndex(nullPeople, theIndex)) { AssignItemsAt(1, theIndex, &people); done = true; } return done; } T2People* T2PeoplePtrList::GetItemAt(int index) const { T2People *people; if (!FetchItemAt(index, &people)) people = NULL; return people; } BOOL T2PeoplePtrList::GetPeopleIndex(T2People* people, int& outIndex) const { BOOL result = false; outIndex = FetchIndexOf(&people); if (outIndex != 0) result = true; return result; } BOOL T2PeoplePtrList::HasSpace() const { int theIndex; T2People *nullPeople = NULL; return GetPeopleIndex(nullPeople, theIndex); } void T2PeoplePtrList::Clear() { T2People *nullPeople = NULL; AssignItemsAt(mItemCount, 1, &nullPeople); } void T2PeoplePtrList::Clear(T2People* people) { int theIndex; if (GetPeopleIndex(people, theIndex)) { T2People *nullPeople = NULL; AssignItemsAt(1, theIndex, &nullPeople); } } void T2PeoplePtrList::SetDestination(unsigned int tenantID) { LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) people->SetDestination(tenantID); } } void T2PeoplePtrList::ChangeDestination(unsigned int tenantID) { LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) people->ChangeDestination(tenantID); } } void T2PeoplePtrList::SetReturn(unsigned int tenantID) { LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) people->SetReturn(tenantID, 0); } } void T2PeoplePtrList::IncStress(int value) { LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) people->IncStress(value); } } void T2PeoplePtrList::IncEstimate(int value) { LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) people->IncEstimate(value); } } BOOL T2PeoplePtrList::InSameTenant(unsigned int tenantID) const { BOOL inSameTenant = true; LArrayIterator iterator(*this); T2People *thePeople; while (inSameTenant && iterator.Next(&thePeople)) { if (thePeople && thePeople->GetCurTenantID() != tenantID) inSameTenant = false; } return inSameTenant; } void T2PeoplePtrList::LoadSelf(T2Archive& archive, T2PeopleArrayList* list) { int numPeople; archive >> numPeople; Init(numPeople); for (unsigned int i = 0; i < numPeople; i++) { unsigned int peopleID; archive >> peopleID; if (list) Add(list->FindPeople(peopleID)); } } void T2PeoplePtrList::SaveSelf(T2Archive& archive) const { archive << mItemCount; LArrayIterator iterator(*this); T2People *people; while (iterator.Next(&people)) { if (people) archive << people->GetPeopleID(); else archive << (unsigned int) 0; } }