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 }
size_type _capacity() const

◆ 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 }
void _reserve(size_type elements)

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 }
const_iterator cbegin() const

◆ 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 }
const_iterator cend() const

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 }
std::reverse_iterator< iterator > reverse_iterator
const_iterator end() const

◆ crbegin()

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

Definition at line 201 of file BinaryData.hpp.

202 {
204 }
std::reverse_iterator< const_iterator > const_reverse_iterator

◆ 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 }
const_reverse_iterator crbegin() const

◆ 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 {
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 }
const_reverse_iterator crend() const

◆ 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 }
void _assign(const BinaryData &that)

◆ 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 }
void _swap(BinaryData &that)

Referenced by std::swap(), and 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 }
iterator insert(iterator i, const T &x=T())

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 }
KernelTraitsBase< Kernel >::space_type::abscissa_type x

References x.

◆ 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 }
void resize(size_type elements, const T &FillWith)

References x.

◆ 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 }
Kernel k

References k.

◆ 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 }
std::ptrdiff_t difference_type

◆ 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 }
void _resize(size_type elements)

◆ 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

Definition at line 362 of file BinaryData.hpp.

363 {
364 _resize(size() + 1);
365 back() = value;
366 }
const_reference back() const
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

Referenced by SpectrumPeakExtractorTest::ExtractPeaksTest(), initializeTinyMGF(), initializeTinyMS1(), initializeTinyMS2(), makeSpectrumPtr(), testBinaryDataArray(), and pwiz::util::ToBinaryData().

◆ 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(), and 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: