#ifndef CT_STANDARDCLOUDOSGT_HPP #define CT_STANDARDCLOUDOSGT_HPP #include "ct_cloud/ct_standardcloudosgt.h" #include template CT_StandardCloudOsgT::CT_StandardCloudOsgT(const size_t &initialSize) : CT_AbstractCloudT() { m_array = new AType(initialSize); } template typename CT_StandardCloudOsgT::Iterator CT_StandardCloudOsgT::begin() { return m_array->begin(); } template typename CT_StandardCloudOsgT::Const_Iterator CT_StandardCloudOsgT::constBegin() const { return m_array->begin(); } template typename CT_StandardCloudOsgT::Iterator CT_StandardCloudOsgT::end() { return m_array->end(); } template typename CT_StandardCloudOsgT::Const_Iterator CT_StandardCloudOsgT::constEnd() const { return m_array->end(); } template size_t CT_StandardCloudOsgT::size() const { return m_array->size(); } template size_t CT_StandardCloudOsgT::memoryUsed() const { return size() * sizeof(T); } template T& CT_StandardCloudOsgT::operator[](const size_t &index) { return pTAt(index); } template const T& CT_StandardCloudOsgT::operator[](const size_t &index) const { return pTAt(index); } template typename CT_StandardCloudOsgT::AType* CT_StandardCloudOsgT::osgArray() { return m_array.get(); } template void CT_StandardCloudOsgT::erase(const size_t &beginIndex, const size_t &sizes) { size_t endIndex = beginIndex+sizes; size_t cpySize = size()-(beginIndex+sizes); if(cpySize > 0) { T *data = m_array->asVector().data(); T *dst = data+beginIndex; T *src = data+endIndex; memcpy(dst, src, sizeof(T)*cpySize); } resize(size()-sizes); } template void CT_StandardCloudOsgT::resize(const size_t &newSize) { m_array->resize(newSize); m_array->asVector().shrink_to_fit(); } template void CT_StandardCloudOsgT::internalCopyData(const size_t &destIndex, const size_t &srcIndex, const size_t &size) { T *data = m_array->asVector().data(); T *dst = data+destIndex; T *src = data+srcIndex; memcpy(dst, src, sizeof(T)*size); } template void CT_StandardCloudOsgT::copyDataFromTo(T* src, const size_t &destIndex, const size_t &size) { T *data = m_array->asVector().data(); T *dst = data+destIndex; memcpy(dst, src, sizeof(T)*size); } template CT_AbstractCloud* CT_StandardCloudOsgT::copy() const { size_t s = size(); CT_StandardCloudOsgT *cloud = new CT_StandardCloudOsgT(s); for(size_t i=0; iat(i); return cloud; } template void CT_StandardCloudOsgT::addT(const T &val) { m_array->push_back(val); } template T& CT_StandardCloudOsgT::addT() { T tmp; addT(tmp); return *(m_array->end()-1); } #endif // CT_STANDARDCLOUDOSGT_HPP