70 :
public std::iterator<std::random_access_iterator_tag, value_t, std::ptrdiff_t, __PXI_POINTER_TYPE__, __PXI_REFERENCE_TYPE__>
73template<
typename PXV_value_t,
bool PXV_thread_safe>
107 template<typename other_value_t, typename std::enable_if<std::is_const<value_t>::value && !std::is_const<other_value_t>::value && std::is_same<other_value_t, typename std::remove_cv<value_t>::type>::value, int>::type = 0>
111 void
swap(ProxyVectorIterator& other) noexcept;
122 std::size_t operator-(const ProxyVectorIterator &other);
124 __PXI_REFERENCE__ operator*() const;
125 __PXI_POINTER__ operator->() const;
127 template<typename other_value_t, typename std::enable_if<std::is_const<value_t>::value && !std::is_const<other_value_t>::value && std::is_same<other_value_t, typename std::remove_cv<value_t>::type>::value, int>::type = 0>
128 ProxyVectorIterator & operator=(const ProxyVectorIterator<other_value_t, container_t> &other);
133 bool operator==(const ProxyVectorIterator &other) const
135 return (m_position == other.m_position);
143 return (m_position != other.m_position);
150 __PXI_POINTER__ m_position;
228template<
typename PXV_value_t,
bool PXV_thread_safe>
232 typedef container_t container_type;
234 typedef typename container_t::pointer pointer;
235 typedef typename container_t::const_pointer const_pointer;
241 container_t *
container(
bool forceCreation);
242 const container_t *
container(
bool forceCreation)
const;
244 pointer
data()
override;
245 const_pointer
data()
const override;
247 bool empty()
const override;
248 std::size_t
size()
const override;
261 static const int MEMORY_POOL_VECTOR_COUNT = 10;
262 static const int MEMORY_POOL_MAX_CAPACITY = 128;
264 static std::vector<std::unique_ptr<container_t>> m_containerPool;
266 std::unique_ptr<container_t> createContainer(std::size_t
size,
bool allowEmpty);
267 std::unique_ptr<container_t> createContainer(
const std::unique_ptr<container_t> &source,
bool allowEmpty);
268 void destroyContainer(std::unique_ptr<container_t> *
container);
270 std::unique_ptr<container_t> m_container;
296 typedef typename std::remove_cv<value_t>::type value_no_cv_t;
323 typename std::conditional<std::is_const<value_t>::value,
324 typename container_type::const_pointer,
325 typename container_type::pointer>::type
347 typename std::conditional<std::is_const<value_t>::value,
348 typename container_type::const_reference,
349 typename container_type::reference>::type
363 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
365 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
367 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
369 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
371 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
383 std::size_t
size()
const;
387 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
389 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
390 void set(__PXV_POINTER__
data, std::size_t
size, std::size_t capacity);
391 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
394 __PXV_STORAGE_POINTER__
storedData() noexcept;
395 __PXV_STORAGE_CONST_POINTER__
storedData() const noexcept;
397 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
399 template<typename U = value_t, typename std::enable_if<std::is_const<U>::value,
int>::type = 0>
402 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
403 __PXV_POINTER__
data() noexcept;
404 __PXV_CONST_POINTER__
data() const noexcept;
406 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
407 __PXV_REFERENCE__ operator[](std::
size_t n);
408 __PXV_CONST_REFERENCE__ operator[](std::
size_t n) const;
410 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
411 __PXV_REFERENCE__
at(std::
size_t n);
412 __PXV_CONST_REFERENCE__
at(std::
size_t n) const;
414 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
415 __PXV_REFERENCE__
front();
416 __PXV_CONST_REFERENCE__
front() const;
418 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
419 __PXV_REFERENCE__
back();
420 __PXV_CONST_REFERENCE__
back() const;
422 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
423 __PXV_ITERATOR__
begin();
424 __PXV_CONST_ITERATOR__
begin() const;
426 template<typename U = value_t, typename std::enable_if<!std::is_const<U>::value,
int>::type = 0>
427 __PXV_ITERATOR__
end();
428 __PXV_CONST_ITERATOR__
end() const;
430 __PXV_CONST_ITERATOR__
cbegin();
431 __PXV_CONST_ITERATOR__
cend();
438 typename std::conditional<std::is_const<value_t>::value,
446 __PXV_POINTER__ m_data;