ProteoWizard
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
pwiz::util::BinaryData< T > Class Template Reference

A custom vector class that can store its contents in either a std::vector or a cli::array (when compiled with .NET). More...

#include <BinaryData.hpp>

Classes

class  const_iterator
 
class  iterator
 

Public Types

typedef std::size_t size_type
 
typedef std::ptrdiff_t difference_type
 
typedef T value_type
 
typedef T & reference
 
typedef const T & const_reference
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 

Public Member Functions

 BinaryData (size_type elements=0, T t=T())
 
 BinaryData (const BinaryData &source)
 
 BinaryData (const_iterator first, const_iterator last)
 
 BinaryData (void *cliNumericArray)
 
BinaryDataoperator= (void *cliNumericArray)
 
 ~BinaryData ()
 
bool empty () const
 
size_t size () const
 
size_t capacity () const
 
void reserve (size_type n)
 
size_type max_size () const
 
const_iterator cbegin () const
 
iterator begin ()
 
const_iterator begin () const
 
const_iterator cend () const
 
const_iterator end () const
 
iterator end ()
 
reverse_iterator rbegin ()
 
const_reverse_iterator crbegin () const
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator crend () const
 
const_reverse_iterator rend () const
 
const_reference front () const
 
reference front ()
 
const_reference back () const
 
reference back ()
 
const_reference operator[] (size_type index) const
 
reference operator[] (size_type index)
 
const_reference at (size_type index) const
 
reference at (size_type index)
 
BinaryDataoperator= (const BinaryData &that)
 
BinaryDataoperator= (const std::vector< T > &source)
 
void swap (BinaryData &that)
 
void swap (std::vector< T > &that)
 
template<typename Iter >
void assign (const Iter &first, const Iter &last)
 
iterator insert (iterator i, const T &x=T())
 
void insert (iterator i, size_type n, const T &x)
 
template<typename Iter >
void insert (iterator i, const Iter &first, const Iter &last)
 
iterator erase (iterator i)
 
iterator erase (iterator From, iterator To)
 
void resize (size_type elements, const T &FillWith)
 
void resize (size_type elements)
 
void push_back (const T &value)
 
void pop_back ()
 
void clear ()
 
void * managedStorage () const
 
 operator const std::vector< T > & () const
 

Private Member Functions

void _alloc (size_type elements, const T &t)
 
void _reserve (size_type elements)
 
void _resize (size_type elements)
 
void _resize (size_type elements, const T &FillWith)
 
void _swap (BinaryData &that)
 
void _swap (std::vector< T > &that)
 
void _assign (const BinaryData &that)
 
void _assign (const std::vector< T > &that)
 
size_type _size () const
 
size_type _capacity () const
 

Private Attributes

std::unique_ptr< Impl > _impl
 

Detailed Description

template<typename T>
class pwiz::util::BinaryData< T >

A custom vector class that can store its contents in either a std::vector or a cli::array (when compiled with .NET).

Definition at line 44 of file BinaryData.hpp.

Member Typedef Documentation

◆ size_type

template<typename T >
typedef std::size_t pwiz::util::BinaryData< T >::size_type

Definition at line 48 of file BinaryData.hpp.

◆ difference_type

template<typename T >
typedef std::ptrdiff_t pwiz::util::BinaryData< T >::difference_type

Definition at line 49 of file BinaryData.hpp.

◆ value_type

template<typename T >
typedef T pwiz::util::BinaryData< T >::value_type

Definition at line 50 of file BinaryData.hpp.

◆ reference

template<typename T >
typedef T& pwiz::util::BinaryData< T >::reference

Definition at line 51 of file BinaryData.hpp.

◆ const_reference

template<typename T >
typedef const T& pwiz::util::BinaryData< T >::const_reference

Definition at line 52 of file BinaryData.hpp.

◆ reverse_iterator

template<typename T >
typedef std::reverse_iterator<iterator> pwiz::util::BinaryData< T >::reverse_iterator

Definition at line 121 of file BinaryData.hpp.

◆ const_reverse_iterator

template<typename T >
typedef std::reverse_iterator<const_iterator> pwiz::util::BinaryData< T >::const_reverse_iterator

Definition at line 122 of file BinaryData.hpp.

Constructor & Destructor Documentation

◆ BinaryData() [1/4]

template<typename T >
pwiz::util::BinaryData< T >::BinaryData ( size_type  elements = 0,
t = T() 
)

◆ BinaryData() [2/4]

template<typename T >
pwiz::util::BinaryData< T >::BinaryData ( const BinaryData< T > &  source)

◆ BinaryData() [3/4]

template<typename T >
pwiz::util::BinaryData< T >::BinaryData ( const_iterator  first,
const_iterator  last 
)

◆ BinaryData() [4/4]

template<typename T >
pwiz::util::BinaryData< T >::BinaryData ( void *  cliNumericArray)

◆ ~BinaryData()

template<typename T >
pwiz::util::BinaryData< T >::~BinaryData ( )

Member Function Documentation

◆ operator=() [1/3]

template<typename T >
BinaryData& pwiz::util::BinaryData< T >::operator= ( void *  cliNumericArray)

◆ empty()

template<typename T >
bool pwiz::util::BinaryData< T >::empty ( ) const
inline

Definition at line 140 of file BinaryData.hpp.

141  {
142  return size() == 0;
143  }

Referenced by readData().

◆ size()

template<typename T >
size_t pwiz::util::BinaryData< T >::size ( ) const
inline

◆ capacity()

template<typename T >
size_t pwiz::util::BinaryData< T >::capacity ( ) const
inline

Definition at line 150 of file BinaryData.hpp.

151  {
152  return _capacity();
153  }

◆ reserve()

template<typename T >
void pwiz::util::BinaryData< T >::reserve ( size_type  n)
inline

Definition at line 155 of file BinaryData.hpp.

156  {
157  if (n > _capacity())
158  _reserve(n);
159  }

Referenced by pwiz::util::ToBinaryData().

◆ max_size()

template<typename T >
size_type pwiz::util::BinaryData< T >::max_size ( ) const
inline

Definition at line 161 of file BinaryData.hpp.

162  {
163  return std::numeric_limits<int>().max() / sizeof(T);
164  }

◆ cbegin()

template<typename T >
const_iterator pwiz::util::BinaryData< T >::cbegin ( ) const
inline

Definition at line 166 of file BinaryData.hpp.

167  {
168  return const_iterator(*this);
169  }

◆ begin() [1/2]

template<typename T >
iterator pwiz::util::BinaryData< T >::begin ( )
inline

Definition at line 171 of file BinaryData.hpp.

172  {
173  return iterator(*this);
174  }

Referenced by readData(), and testConfiguration().

◆ begin() [2/2]

template<typename T >
const_iterator pwiz::util::BinaryData< T >::begin ( ) const
inline

Definition at line 176 of file BinaryData.hpp.

177  {
178  return cbegin();
179  }

◆ cend()

template<typename T >
const_iterator pwiz::util::BinaryData< T >::cend ( ) const
inline

Definition at line 181 of file BinaryData.hpp.

182  {
183  return const_iterator(*this, false);
184  }

◆ end() [1/2]

template<typename T >
const_iterator pwiz::util::BinaryData< T >::end ( ) const
inline

Definition at line 186 of file BinaryData.hpp.

187  {
188  return cend();
189  }

Referenced by readData(), and testConfiguration().

◆ end() [2/2]

template<typename T >
iterator pwiz::util::BinaryData< T >::end ( )
inline

Definition at line 191 of file BinaryData.hpp.

192  {
193  return iterator(*this, false);
194  }

◆ rbegin() [1/2]

template<typename T >
reverse_iterator pwiz::util::BinaryData< T >::rbegin ( )
inline

Definition at line 196 of file BinaryData.hpp.

197  {
198  return reverse_iterator(end());
199  }

◆ crbegin()

template<typename T >
const_reverse_iterator pwiz::util::BinaryData< T >::crbegin ( ) const
inline

Definition at line 201 of file BinaryData.hpp.

202  {
203  return const_reverse_iterator(cend());
204  }

◆ rbegin() [2/2]

template<typename T >
const_reverse_iterator pwiz::util::BinaryData< T >::rbegin ( ) const
inline

Definition at line 206 of file BinaryData.hpp.

207  {
208  return crbegin();
209  }

◆ rend() [1/2]

template<typename T >
reverse_iterator pwiz::util::BinaryData< T >::rend ( )
inline

Definition at line 211 of file BinaryData.hpp.

212  {
213  return reverse_iterator(begin());
214  }

◆ crend()

template<typename T >
const_reverse_iterator pwiz::util::BinaryData< T >::crend ( ) const
inline

Definition at line 216 of file BinaryData.hpp.

217  {
218  return const_reverse_iterator(begin());
219  }

◆ rend() [2/2]

template<typename T >
const_reverse_iterator pwiz::util::BinaryData< T >::rend ( ) const
inline

Definition at line 221 of file BinaryData.hpp.

222  {
223  return crend();
224  }

◆ front() [1/2]

template<typename T >
const_reference pwiz::util::BinaryData< T >::front ( ) const
inline

Definition at line 226 of file BinaryData.hpp.

227  {
228  BOOST_ASSERT(!empty());
229  return *begin();
230  }

◆ front() [2/2]

template<typename T >
reference pwiz::util::BinaryData< T >::front ( )
inline

Definition at line 232 of file BinaryData.hpp.

233  {
234  BOOST_ASSERT(!empty());
235  return *begin();
236  }

◆ back() [1/2]

template<typename T >
const_reference pwiz::util::BinaryData< T >::back ( ) const
inline

Definition at line 238 of file BinaryData.hpp.

239  {
240  BOOST_ASSERT(!empty());
241  return *(--cend());
242  }

◆ back() [2/2]

template<typename T >
reference pwiz::util::BinaryData< T >::back ( )
inline

Definition at line 244 of file BinaryData.hpp.

245  {
246  BOOST_ASSERT(!empty());
247  return *(--end());
248  }

◆ operator[]() [1/2]

template<typename T >
const_reference pwiz::util::BinaryData< T >::operator[] ( size_type  index) const

◆ operator[]() [2/2]

template<typename T >
reference pwiz::util::BinaryData< T >::operator[] ( size_type  index)

◆ at() [1/2]

template<typename T >
const_reference pwiz::util::BinaryData< T >::at ( size_type  index) const
inline

Definition at line 254 of file BinaryData.hpp.

255  {
256  if (index < 0 || index >= size())
257  throw std::out_of_range("out of range");
258  return (*this)[index];
259  }

◆ at() [2/2]

template<typename T >
reference pwiz::util::BinaryData< T >::at ( size_type  index)
inline

Definition at line 261 of file BinaryData.hpp.

262  {
263  if (index < 0 || index >= size())
264  throw std::out_of_range("out of range");
265  return (*this)[index];
266  }

◆ operator=() [2/3]

template<typename T >
BinaryData& pwiz::util::BinaryData< T >::operator= ( const BinaryData< T > &  that)
inline

Definition at line 270 of file BinaryData.hpp.

271  {
272  _assign(that);
273  return *this;
274  }

◆ operator=() [3/3]

template<typename T >
BinaryData& pwiz::util::BinaryData< T >::operator= ( const std::vector< T > &  source)
inline

Definition at line 276 of file BinaryData.hpp.

277  {
278  _assign(source);
279  return *this;
280  }

◆ swap() [1/2]

template<typename T >
void pwiz::util::BinaryData< T >::swap ( BinaryData< T > &  that)
inline

Definition at line 282 of file BinaryData.hpp.

283  {
284  _swap(that);
285  }

Referenced by std::swap().

◆ swap() [2/2]

template<typename T >
void pwiz::util::BinaryData< T >::swap ( std::vector< T > &  that)
inline

Definition at line 287 of file BinaryData.hpp.

288  {
289  _swap(that);
290  }

◆ assign()

template<typename T >
template<typename Iter >
void pwiz::util::BinaryData< T >::assign ( const Iter &  first,
const Iter &  last 
)
inline

Definition at line 293 of file BinaryData.hpp.

294  {
295  clear();
296  insert(end(), first, last);
297  }

Referenced by pwiz::util::ToBinaryData().

◆ insert() [1/3]

template<typename T >
iterator pwiz::util::BinaryData< T >::insert ( iterator  i,
const T &  x = T() 
)
inline

Definition at line 301 of file BinaryData.hpp.

302  {
303  BOOST_ASSERT(i >= begin() && i <= end());
304  size_t Offset = i - begin();
305  insert(i, 1, x);
306  return begin() + Offset;
307  }

◆ insert() [2/3]

template<typename T >
void pwiz::util::BinaryData< T >::insert ( iterator  i,
size_type  n,
const T &  x 
)
inline

Definition at line 310 of file BinaryData.hpp.

311  {
312  BOOST_ASSERT(i >= begin() && i <= end());
313  size_t OldSize = size();
314  size_type offset = i - begin();
315  resize(OldSize + n);
316  std::copy_backward(begin() + offset, begin() + OldSize, end());
317  std::fill(begin() + offset, begin() + offset + n, x);
318  }

◆ insert() [3/3]

template<typename T >
template<typename Iter >
void pwiz::util::BinaryData< T >::insert ( iterator  i,
const Iter &  first,
const Iter &  last 
)
inline

Definition at line 322 of file BinaryData.hpp.

323  {
324  BOOST_ASSERT(last >= first);
325  BOOST_ASSERT(i >= begin() && i <= end());
326  size_t count = last - first;
327  if (count == 0)
328  return;
329  size_t offset = i - begin(), old_size = size();
330  resize(old_size + count);
331  for (iterator j = begin() + old_size, k = end(); j != begin() + offset; )
332  std::iter_swap(--j, --k);
333  std::copy(first, last, begin() + offset);
334  }

◆ erase() [1/2]

template<typename T >
iterator pwiz::util::BinaryData< T >::erase ( iterator  i)
inline

Definition at line 336 of file BinaryData.hpp.

337  {
338  difference_type Offset = i - begin();
339  std::copy(i + 1, end(), i);
340  pop_back();
341  return begin() + Offset;
342  }

◆ erase() [2/2]

template<typename T >
iterator pwiz::util::BinaryData< T >::erase ( iterator  From,
iterator  To 
)
inline

Definition at line 344 of file BinaryData.hpp.

345  {
346  difference_type Offset = From - begin();
347  iterator i = std::copy(To, end(), From);
348  resize(i - begin());
349  return begin() + Offset;
350  }

◆ resize() [1/2]

template<typename T >
void pwiz::util::BinaryData< T >::resize ( size_type  elements,
const T &  FillWith 
)
inline

Definition at line 352 of file BinaryData.hpp.

353  {
354  _resize(elements, FillWith);
355  }

◆ resize() [2/2]

template<typename T >
void pwiz::util::BinaryData< T >::resize ( size_type  elements)
inline

Definition at line 357 of file BinaryData.hpp.

358  {
359  _resize(elements);
360  }

◆ push_back()

template<typename T >
void pwiz::util::BinaryData< T >::push_back ( const T &  value)
inline

◆ pop_back()

template<typename T >
void pwiz::util::BinaryData< T >::pop_back ( )
inline

Definition at line 368 of file BinaryData.hpp.

369  {
370  _resize(size() - 1);
371  }

◆ clear()

template<typename T >
void pwiz::util::BinaryData< T >::clear ( )
inline

Definition at line 373 of file BinaryData.hpp.

374  {
375  _resize(0);
376  }

Referenced by pwiz::util::ToBinaryData().

◆ managedStorage()

template<typename T >
void* pwiz::util::BinaryData< T >::managedStorage ( ) const

◆ operator const std::vector< T > &()

template<typename T >
pwiz::util::BinaryData< T >::operator const std::vector< T > & ( ) const

◆ _alloc()

template<typename T >
void pwiz::util::BinaryData< T >::_alloc ( size_type  elements,
const T &  t 
)
private

◆ _reserve()

template<typename T >
void pwiz::util::BinaryData< T >::_reserve ( size_type  elements)
private

◆ _resize() [1/2]

template<typename T >
void pwiz::util::BinaryData< T >::_resize ( size_type  elements)
private

◆ _resize() [2/2]

template<typename T >
void pwiz::util::BinaryData< T >::_resize ( size_type  elements,
const T &  FillWith 
)
private

◆ _swap() [1/2]

template<typename T >
void pwiz::util::BinaryData< T >::_swap ( BinaryData< T > &  that)
private

◆ _swap() [2/2]

template<typename T >
void pwiz::util::BinaryData< T >::_swap ( std::vector< T > &  that)
private

◆ _assign() [1/2]

template<typename T >
void pwiz::util::BinaryData< T >::_assign ( const BinaryData< T > &  that)
private

◆ _assign() [2/2]

template<typename T >
void pwiz::util::BinaryData< T >::_assign ( const std::vector< T > &  that)
private

◆ _size()

template<typename T >
size_type pwiz::util::BinaryData< T >::_size ( ) const
private

◆ _capacity()

template<typename T >
size_type pwiz::util::BinaryData< T >::_capacity ( ) const
private

Member Data Documentation

◆ _impl

template<typename T >
std::unique_ptr<Impl> pwiz::util::BinaryData< T >::_impl
private

Definition at line 394 of file BinaryData.hpp.


The documentation for this class was generated from the following file:
pwiz::util::BinaryData::cend
const_iterator cend() const
Definition: BinaryData.hpp:181
pwiz::util::BinaryData::begin
iterator begin()
Definition: BinaryData.hpp:171
pwiz::util::BinaryData::end
const_iterator end() const
Definition: BinaryData.hpp:186
pwiz::util::BinaryData::size
size_t size() const
Definition: BinaryData.hpp:145
pwiz::msdata::id::value
PWIZ_API_DECL std::string value(const std::string &id, const std::string &name)
convenience function to extract a named value from an id string
pwiz::util::BinaryData::reverse_iterator
std::reverse_iterator< iterator > reverse_iterator
Definition: BinaryData.hpp:121
pwiz::util::BinaryData::_assign
void _assign(const BinaryData &that)
pwiz::util::BinaryData::empty
bool empty() const
Definition: BinaryData.hpp:140
k
Kernel k
Definition: MatchedFilter.hpp:144
pwiz::util::BinaryData::back
const_reference back() const
Definition: BinaryData.hpp:238
pwiz::util::BinaryData::size_type
std::size_t size_type
Definition: BinaryData.hpp:48
pwiz::util::BinaryData::_reserve
void _reserve(size_type elements)
pwiz::chemistry::detail::elements
PWIZ_API_DECL Element * elements()
x
KernelTraitsBase< Kernel >::space_type::abscissa_type x
Definition: MatchedFilter.hpp:142
pwiz::util::BinaryData::clear
void clear()
Definition: BinaryData.hpp:373
pwiz::util::BinaryData::difference_type
std::ptrdiff_t difference_type
Definition: BinaryData.hpp:49
pwiz::util::BinaryData::cbegin
const_iterator cbegin() const
Definition: BinaryData.hpp:166
pwiz::util::BinaryData::resize
void resize(size_type elements, const T &FillWith)
Definition: BinaryData.hpp:352
pwiz::util::BinaryData::_capacity
size_type _capacity() const
pwiz::util::BinaryData::_size
size_type _size() const
pwiz::util::BinaryData::const_reverse_iterator
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition: BinaryData.hpp:122
pwiz::util::BinaryData::crbegin
const_reverse_iterator crbegin() const
Definition: BinaryData.hpp:201
pwiz::util::BinaryData::_swap
void _swap(BinaryData &that)
pwiz::util::BinaryData::_resize
void _resize(size_type elements)
pwiz::util::BinaryData::pop_back
void pop_back()
Definition: BinaryData.hpp:368
pwiz::util::BinaryData::crend
const_reverse_iterator crend() const
Definition: BinaryData.hpp:216
pwiz::util::BinaryData::insert
iterator insert(iterator i, const T &x=T())
Definition: BinaryData.hpp:301