Go to the documentation of this file. 1 #ifndef GfxTL__INDEXEDTREEDATAKERNELS_HEADER__
2 #define GfxTL__INDEXEDTREEDATAKERNELS_HEADER__
10 template <
class DataT,
class IndicesT>
39 m_indices.resize(m_data.size());
40 for (
size_t i = 0; i < m_indices.size(); ++i)
109 return m_data.begin();
121 return m_data.begin();
133 return m_indices.size();
152 Swap(
a, b, &m_indices);
158 m_indices.resize(m_indices.size() + 1);
159 typename IndicesT::value_type
v = m_data.size() - 1;
160 std::copy_backward(m_indices.begin() + h, m_indices.end() - 1, m_indices.end());
169 template <
class DataT,
class IndicesT>
189 m_indices.resize(m_data->size());
190 for (
size_t i = 0; i < m_indices.size(); ++i)
212 return Dereference(h);
218 return m_data->at(
s);
224 return m_data->back();
230 return IndexIterate(m_indices.begin(), m_data->begin());
242 return IndexIterate(m_indices.begin(), m_data->begin());
251 dereferenced_iterator
254 return m_data->begin();
257 dereferenced_iterator
260 return m_data->end();
263 const_dereferenced_iterator
266 return m_data->begin();
269 const_dereferenced_iterator
272 return m_data->end();
278 return m_indices.size();
297 Swap(
a, b, &m_indices);
303 m_indices.resize(m_indices.size() + 1);
304 typename IndicesT::value_type
v = m_data->size() - 1;
305 std::copy_backward(m_indices.begin() + h, m_indices.end() - 1, m_indices.end());
314 template <
class IteratorT,
class IndicesT>
318 typedef typename std::iterator_traits<IteratorT>::value_type
value_type;
334 m_indices.resize(m_end - m_begin);
335 for (
size_t i = 0; i < m_indices.size(); ++i)
357 return *(m_begin +
s);
369 return m_indices.size();
436 Swap(
a, b, &m_indices);
445 template <
class IndexIteratorT,
class DataIteratorT>
449 typedef typename std::iterator_traits<DataIteratorT>::value_type
value_type;
459 IndexedData(IndexIteratorT beginIndices, IndexIteratorT endIndices, DataIteratorT beginData)
461 m_beginIndices = beginIndices;
462 m_endIndices = endIndices;
463 m_beginData = beginData;
469 m_beginIndices = beginIndices;
470 m_endIndices = endIndices;
476 return m_beginIndices[h];
488 return *(m_beginData +
s);
494 return *(m_beginData[*(m_endIndices - 1)]);
500 return m_endIndices - m_beginIndices;
536 return m_beginData +
size();
548 return m_beginData +
size();
567 std::swap(m_beginIndices[
a], m_beginIndices[b]);
571 IndexIteratorT m_beginIndices;
572 IndexIteratorT m_endIndices;
573 DataIteratorT m_beginData;
void IndexedData(IndexIteratorT beginIndices, IndexIteratorT endIndices, DataIteratorT beginData)
IndicesT::value_type DereferencedType
const DataT * IndexedData() const
dereferenced_iterator dereferenced_begin()
DereferencedType Dereference(HandleType h) const
const value_type & back() const
IndicesT::value_type DereferencedType
const value_type & back() const
const value_type & at(DereferencedType s) const
InvariantIdType InvariantId(HandleType h) const
const value_type & at(DereferencedType s) const
dereferenced_iterator dereferenced_end()
DataIteratorT const_dereferenced_iterator
std::iterator_traits< DataIteratorT >::value_type value_type
dereferenced_iterator dereferenced_begin()
IndexedIterator< IndexIteratorT, DataIteratorT > iterator
DataT::iterator dereferenced_iterator
DataT::const_iterator const_dereferenced_iterator
const_dereferenced_iterator dereferenced_end() const
const value_type & at(DereferencedType s) const
InvariantIdType InvariantId(HandleType h) const
IndicesT::size_type HandleType
IndicesT::size_type HandleType
IndexedIterator< typename IndicesT::iterator, typename DataT::iterator > iterator
const DataT & ContainedData() const
void IndexedData(const DataT *data, bool initIndices=true)
IndexedIterator< typename IndicesT::iterator, IteratorT > iterator
void IndexedData(IteratorT begin, IteratorT end, bool initIndices=true)
dereferenced_iterator dereferenced_begin()
const_iterator begin() const
std::iterator_traits< IndexIteratorT >::value_type DereferencedType
InvariantIdType InvariantId(HandleType h) const
const_iterator begin() const
DereferencedType InvariantIdType
const_dereferenced_iterator dereferenced_begin() const
void InsertBack(HandleType h)
InvariantIdType InvariantId(HandleType h) const
const_dereferenced_iterator dereferenced_begin() const
HandleType BeginHandle() const
void swap(SubscriptionHandle &first, SubscriptionHandle &second)
HandleType BeginHandle() const
double a(double t, double a0, double j)
DereferencedType Dereference(HandleType h) const
IndicesT::value_type DereferencedType
const_dereferenced_iterator dereferenced_end() const
const_dereferenced_iterator dereferenced_end() const
DataT::const_iterator dereferenced_iterator
DataT::value_type value_type
const_dereferenced_iterator dereferenced_begin() const
DataT::const_iterator const_dereferenced_iterator
const_dereferenced_iterator dereferenced_begin() const
IndexedIterator< IndexIteratorT, IteratorT > IndexIterate(IndexIteratorT idxIt, IteratorT it)
IteratorT const_dereferenced_iterator
void InsertBack(HandleType h)
DereferencedType Dereference(HandleType h) const
const_iterator begin() const
DataIteratorT dereferenced_iterator
void SwapHandles(HandleType a, HandleType b)
dereferenced_iterator dereferenced_end()
const value_type & back() const
IteratorT dereferenced_iterator
const_iterator begin() const
const value_type & back() const
dereferenced_iterator dereferenced_end()
dereferenced_iterator dereferenced_begin()
double v(double t, double v0, double a0, double j)
HandleType EndHandle() const
void SwapHandles(HandleType a, HandleType b)
IndexedIterator< typename IndicesT::const_iterator, typename DataT::const_iterator > const_iterator
std::iterator_traits< IteratorT >::value_type value_type
DereferencedType InvariantIdType
const_iterator end() const
const_iterator end() const
void IndexedRange(IndexIteratorT beginIndices, IndexIteratorT endIndices)
HandleType BeginHandle() const
HandleType EndHandle() const
DereferencedType Dereference(HandleType h) const
const_iterator end() const
IndexedIterator< typename IndicesT::const_iterator, typename DataT::const_iterator > const_iterator
HandleType EndHandle() const
HandleType EndHandle() const
IndexedIterator< typename IndicesT::const_iterator, IteratorT > const_iterator
const_iterator end() const
const_dereferenced_iterator dereferenced_end() const
HandleType BeginHandle() const
IndicesT::size_type HandleType
void SwapHandles(HandleType a, HandleType b)
void SwapHandles(HandleType a, HandleType b)
dereferenced_iterator dereferenced_end()
DereferencedType InvariantIdType
const value_type & at(DereferencedType s) const
double s(double t, double s0, double v0, double a0, double j)
DereferencedType InvariantIdType
value_type & at(DereferencedType s)
void Swap(HandleT a, HandleT b, ContainerT *container)
DataT::value_type value_type
IndexedIterator< IndexIteratorT, DataIteratorT > const_iterator