OpenMS
2.5.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
OpenMS
CONCEPT
Helpers.h
Go to the documentation of this file.
1
// --------------------------------------------------------------------------
2
// OpenMS -- Open-Source Mass Spectrometry
3
// --------------------------------------------------------------------------
4
// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5
// ETH Zurich, and Freie Universitaet Berlin 2002-2020.
6
//
7
// This software is released under a three-clause BSD license:
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above copyright
11
// notice, this list of conditions and the following disclaimer in the
12
// documentation and/or other materials provided with the distribution.
13
// * Neither the name of any author or any participating institution
14
// may be used to endorse or promote products derived from this software
15
// without specific prior written permission.
16
// For a full list of authors, refer to the file AUTHORS.
17
// --------------------------------------------------------------------------
18
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22
// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// --------------------------------------------------------------------------
31
// $Maintainer: Hannes Roest $
32
// $Authors: Hannes Roest $
33
// --------------------------------------------------------------------------
34
35
#pragma once
36
37
#include <vector>
38
#include <boost/shared_ptr.hpp>
39
40
namespace
OpenMS
41
{
42
namespace
Helpers
43
{
44
48
template
<
class
T>
49
const
std::vector<boost::shared_ptr<const T> >&
50
constifyPointerVector
(
const
std::vector<boost::shared_ptr<T> >& vec)
51
{
52
return
reinterpret_cast<
const
std::vector<boost::shared_ptr<const T>
>
&>(vec);
53
}
54
55
59
template
<
class
PtrType>
60
inline
bool
cmpPtrSafe
(
const
PtrType& a,
const
PtrType& b)
61
{
62
// We are not interested whether the pointers are equal but whether the
63
// contents are equal
64
if
(a ==
nullptr
&& b ==
nullptr
)
65
{
66
return
true
;
67
}
68
else
if
(a ==
nullptr
|| b ==
nullptr
)
69
{
70
return
false
;
// one is null the other is not
71
}
72
else
73
{
74
// compare the internal object
75
return
(*a == *b);
76
}
77
}
78
82
template
<
class
ContainerType>
83
inline
bool
cmpPtrContainer
(
const
ContainerType& a,
const
ContainerType& b)
84
{
85
if
(a.size() != b.size())
return
false
;
86
87
// check that all elements of a and b are equal using safe comparison
88
// (taking NULL into account)
89
for
(
typename
ContainerType::size_type i = 0; i < a.size(); i++)
90
{
91
if
(!
cmpPtrSafe
(a[i], b[i]))
92
{
93
return
false
;
94
}
95
}
96
return
true
;
97
}
98
99
}
100
}
101
102
OpenMS::Helpers::cmpPtrContainer
bool cmpPtrContainer(const ContainerType &a, const ContainerType &b)
Helper function to compare two pointer-containers for equality of all elements.
Definition:
Helpers.h:83
OpenMS::Helpers::constifyPointerVector
const std::vector< boost::shared_ptr< const T > > & constifyPointerVector(const std::vector< boost::shared_ptr< T > > &vec)
Helper function to add constness to a vector of shared pointers.
Definition:
Helpers.h:50
OpenMS
Main OpenMS namespace.
Definition:
FeatureDeconvolution.h:46
OpenMS::Helpers::cmpPtrSafe
bool cmpPtrSafe(const PtrType &a, const PtrType &b)
Helper comparing two pointers for equality (taking NULL into account)
Definition:
Helpers.h:60
Generated on Sat Mar 7 2020 03:23:33 for OpenMS by
1.8.16