#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 *zero = NULL; InsertItemsAt(count, 1, &zero); } } BOOL T2PeoplePtrList::Add(T2People* people) { BOOL result = false; T2People *zero = NULL; int index; if (GetPeopleIndex(zero, index)) { AssignItemsAt(1, index, &people); result = true; } return result; } 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 index; T2People *zero = NULL; return GetPeopleIndex(zero, index); } void T2PeoplePtrList::Clear() { T2People *zero = NULL; AssignItemsAt(mItemCount, 1, &zero); } void T2PeoplePtrList::Clear(T2People* people) { int index; if (GetPeopleIndex(people, index)) { T2People *zero = NULL; AssignItemsAt(1, index, &zero); } } 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 result = true; LArrayIterator iterator(*this); T2People *people; while (result && iterator.Next(&people)) { if (people && people->GetCurTenantID() != tenantID) result = false; } return result; } void T2PeoplePtrList::LoadSelf(T2Archive& archive, T2PeopleArrayList* list) { int count; archive >> count; Init(count); for (unsigned int i = 0; i < count; i++) { unsigned int peopleID; archive >> peopleID; if (peopleID) 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; } }