diff options
Diffstat (limited to 'src/T2DLL/T2PeoplePtrList.cpp')
-rw-r--r-- | src/T2DLL/T2PeoplePtrList.cpp | 140 |
1 files changed, 125 insertions, 15 deletions
diff --git a/src/T2DLL/T2PeoplePtrList.cpp b/src/T2DLL/T2PeoplePtrList.cpp index cffd0fb..315d664 100644 --- a/src/T2DLL/T2PeoplePtrList.cpp +++ b/src/T2DLL/T2PeoplePtrList.cpp @@ -1,52 +1,162 @@ +#include "T2Archive.h" +#include "T2People.h" +#include "T2PeopleArrayList.h" #include "T2PeoplePtrList.h" -T2PeoplePtrList::T2PeoplePtrList(int) { +T2PeoplePtrList::T2PeoplePtrList(int count) + : LArray(sizeof(T2People *)) +{ + Init(count); } /*virtual*/ T2PeoplePtrList::~T2PeoplePtrList() { } -void T2PeoplePtrList::Init(unsigned int) { +void T2PeoplePtrList::Init(unsigned int count) { + if (count > 0) { + AdjustAllocation(count); + T2People *zero = NULL; + InsertItemsAt(count, 1, &zero); + } } -int T2PeoplePtrList::Add(T2People*) { +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) const { +T2People* T2PeoplePtrList::GetItemAt(int index) const { + T2People *people; + + if (!FetchItemAt(index, &people)) + people = NULL; + + return people; } -int T2PeoplePtrList::GetPeopleIndex(T2People*, int&) const { +BOOL T2PeoplePtrList::GetPeopleIndex(T2People* people, int& outIndex) const { + BOOL result = false; + + outIndex = FetchIndexOf(&people); + if (outIndex != 0) + result = true; + + return result; } -int T2PeoplePtrList::HasSpace() const { +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*) { +void T2PeoplePtrList::Clear(T2People* people) { + int index; + if (GetPeopleIndex(people, index)) { + T2People *zero = NULL; + AssignItemsAt(1, index, &zero); + } } -void T2PeoplePtrList::SetDestination(unsigned int) { +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) { +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) { +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) { +void T2PeoplePtrList::IncStress(int value) { + LArrayIterator iterator(*this); + T2People *people; + + while (iterator.Next(&people)) { + if (people) + people->IncStress(value); + } } -void T2PeoplePtrList::IncEstimate(int) { +void T2PeoplePtrList::IncEstimate(int value) { + LArrayIterator iterator(*this); + T2People *people; + + while (iterator.Next(&people)) { + if (people) + people->IncEstimate(value); + } } -int T2PeoplePtrList::InSameTenant(unsigned int) const { +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&, T2PeopleArrayList*) { +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&) const { +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; + } } |