| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #include "ScriptSystem.h"
- #pragma once
- namespace Atomic
- {
- class ScriptVector : public RefCounted
- {
- ATOMIC_REFCOUNTED(ScriptVector)
- public:
- ScriptVector() : RefCounted()
- {
- }
- virtual ~ScriptVector()
- {
- }
- RefCounted* At(unsigned index) const
- {
- if (index >= refVector_.Size())
- return 0;
- return refVector_[index];
- }
- void Push(RefCounted* refCounted)
- {
- // TODO: check null?
- refVector_.Push(SharedPtr<RefCounted>(refCounted));
- }
- unsigned GetSize() const
- {
- return refVector_.Size();
- }
- template <class T>
- bool AdaptFromVector(PODVector<T> vectorIn)
- {
- Vector<SharedPtr<RefCounted>> keepAlive = refVector_;
- refVector_.Clear();
- for (unsigned i = 0; i < vectorIn.Size(); i++)
- {
- refVector_.Push(SharedPtr<RefCounted>(vectorIn[i]));
- }
- return true;
- }
- template <class T>
- bool AdaptFromVector(Vector<T> vectorIn)
- {
- Vector<SharedPtr<RefCounted>> keepAlive = refVector_;
- refVector_.Clear();
- for (unsigned i = 0; i < vectorIn.Size(); i++)
- {
- refVector_.Push((T) vectorIn[i]);
- }
- return true;
- }
- template <class T>
- bool AdaptFromVector(Vector<WeakPtr<T>> vectorIn)
- {
- Vector<SharedPtr<RefCounted>> keepAlive = refVector_;
- refVector_.Clear();
- for (unsigned i = 0; i < vectorIn.Size(); i++)
- {
- refVector_.Push(SharedPtr<RefCounted>((RefCounted*) vectorIn[i]));
- }
- return true;
- }
- template <class T>
- bool AdaptFromVector(Vector<SharedPtr<T>> vectorIn)
- {
- Vector<SharedPtr<RefCounted>> keepAlive = refVector_;
- refVector_.Clear();
- for (unsigned i = 0; i < vectorIn.Size(); i++)
- {
- refVector_.Push(SharedPtr<RefCounted>((RefCounted*) vectorIn[i]));
- }
- return true;
- }
- template <class T>
- bool AdaptToVector(PODVector<T> vectorOut)
- {
- vectorOut.Clear();
- for (unsigned i = 0; i < refVector_.Size(); i++)
- {
- vectorOut.Push(static_cast<T>(refVector_[i].Get()));
- }
- return true;
- }
- template <class T>
- bool AdaptToVector(Vector<T> vectorOut)
- {
- vectorOut.Clear();
- for (unsigned i = 0; i < refVector_.Size(); i++)
- {
- vectorOut.Push((T) refVector_[i]);
- }
- return true;
- }
- template <class T>
- bool AdaptToVector(Vector<SharedPtr<T>> vectorOut)
- {
- vectorOut.Clear();
- for (unsigned i = 0; i < refVector_.Size(); i++)
- {
- vectorOut.Push(SharedPtr<T>((T) refVector_[i]));
- }
- return true;
- }
- template <class T>
- bool AdaptToVector(Vector<WeakPtr<T>> vectorOut)
- {
- vectorOut.Clear();
- for (unsigned i = 0; i < refVector_.Size(); i++)
- {
- vectorOut.Push(WeakPtr<T>((T) refVector_[i]));
- }
- return true;
- }
- private:
- Vector<SharedPtr<RefCounted>> refVector_;
- };
- }
|