xmake.repo/packages/n/noesis/latest/Include/NsGui/FreezableCollection.inl
2024-12-22 19:15:02 +08:00

92 lines
3.1 KiB
C++

////////////////////////////////////////////////////////////////////////////////////////////////////
// NoesisGUI - http://www.noesisengine.com
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////
#include <NsCore/DynamicCast.h>
namespace Noesis
{
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline T* FreezableCollection<T>::Get(uint32_t index) const
{
return (T*)BaseFreezableCollection::mItems[index].GetPtr();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline void FreezableCollection<T>::Set(uint32_t index, T* item)
{
BaseFreezableCollection::Set(index, item);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline int FreezableCollection<T>::Add(T* item)
{
return BaseFreezableCollection::Add(item);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline void FreezableCollection<T>::Insert(uint32_t index, T* item)
{
BaseFreezableCollection::Insert(index, item);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline bool FreezableCollection<T>::Contains(const T* item) const
{
return BaseFreezableCollection::IndexOfComponent(item) >= 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline int FreezableCollection<T>::IndexOf(const T* item) const
{
return BaseFreezableCollection::IndexOfComponent(item);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline bool FreezableCollection<T>::Remove(const T* item)
{
return BaseFreezableCollection::Remove(item);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline const TypeClass* FreezableCollection<T>::GetItemType() const
{
static_assert(IsDerived<T, DependencyObject>::Result, "T must inherit from DependencyObject");
return TypeOf<T>();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline Ptr<FreezableCollection<T>> FreezableCollection<T>::Clone() const
{
return StaticPtrCast<FreezableCollection<T>>(Freezable::Clone());
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline Ptr<FreezableCollection<T>> FreezableCollection<T>::CloneCurrentValue() const
{
return StaticPtrCast<FreezableCollection<T>>(Freezable::CloneCurrentValue());
}
////////////////////////////////////////////////////////////////////////////////////////////////////
template<class T>
inline Ptr<Freezable> FreezableCollection<T>::CreateInstanceCore() const
{
return *new FreezableCollection<T>();
}
}