From 7fe47a9d5b1727a61dc724523b530762f6d6ba19 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Thu, 30 Jun 2022 21:38:53 -0700 Subject: Restructure project --- app/source/Cplt/Model/Workflow/Values/List.cpp | 100 +++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 app/source/Cplt/Model/Workflow/Values/List.cpp (limited to 'app/source/Cplt/Model/Workflow/Values/List.cpp') diff --git a/app/source/Cplt/Model/Workflow/Values/List.cpp b/app/source/Cplt/Model/Workflow/Values/List.cpp new file mode 100644 index 0000000..9fd6bfd --- /dev/null +++ b/app/source/Cplt/Model/Workflow/Values/List.cpp @@ -0,0 +1,100 @@ +#include "List.hpp" + +#include + +BaseValue* ListValue::Iterator::operator*() const +{ + return mIter->get(); +} + +BaseValue* ListValue::Iterator::operator->() const +{ + return mIter->get(); +} + +ListValue::Iterator& ListValue::Iterator::operator++() +{ + ++mIter; + return *this; +} + +ListValue::Iterator ListValue::Iterator::operator++(int) const +{ + return Iterator(mIter + 1); +} + +ListValue::Iterator& ListValue::Iterator::operator--() +{ + --mIter; + return *this; +} + +ListValue::Iterator ListValue::Iterator::operator--(int) const +{ + return Iterator(mIter - 1); +} + +bool operator==(const ListValue::Iterator& a, const ListValue::Iterator& b) +{ + return a.mIter == b.mIter; +} + +ListValue::Iterator::Iterator(decltype(mIter) iter) + : mIter{ iter } +{ +} + +bool ListValue::IsInstance(const BaseValue* value) +{ + return value->GetKind() == KD_List; +} + +ListValue::ListValue() + : BaseValue(KD_List) +{ +} + +int ListValue::GetCount() const +{ + return mElements.size(); +} + +BaseValue* ListValue::GetElement(int i) const +{ + return mElements[i].get(); +} + +void ListValue::Append(std::unique_ptr element) +{ + mElements.push_back(std::move(element)); +} + +void ListValue::Insert(int i, std::unique_ptr element) +{ + mElements.insert(mElements.begin() + i, std::move(element)); +} + +void ListValue::Insert(Iterator iter, std::unique_ptr element) +{ + mElements.insert(iter.mIter, std::move(element)); +} + +void ListValue::Remove(int i) +{ + mElements.erase(mElements.begin() + i); +} + +void ListValue::Remove(Iterator iter) +{ + mElements.erase(iter.mIter); +} + +ListValue::Iterator ListValue::begin() +{ + return Iterator(mElements.begin()); +} + +ListValue::Iterator ListValue::end() +{ + return Iterator(mElements.end()); +} -- cgit v1.2.3-70-g09d2