summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2PeoplePtrList.cpp
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2023-06-28 22:22:32 +0100
committerAsh Wolf <ninji@wuffs.org>2023-06-28 22:22:32 +0100
commitc0c336500955a23e344651e5412c9d9d441ef4ee (patch)
tree790769c748db307cf3314f6e896e2f61c68561a2 /src/T2DLL/T2PeoplePtrList.cpp
parent37e364b2c6cc7487a1c888d256a73e5337bb7189 (diff)
downloadt2win-c0c336500955a23e344651e5412c9d9d441ef4ee.tar.gz
t2win-c0c336500955a23e344651e5412c9d9d441ef4ee.zip
first pass of T2DLL
Diffstat (limited to 'src/T2DLL/T2PeoplePtrList.cpp')
-rw-r--r--src/T2DLL/T2PeoplePtrList.cpp140
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;
+ }
}