Main Page
Namespaces
Classes
Package Documentation
src
FWCore
Utilities
interface
getAnyPtr.h
Go to the documentation of this file.
1
#ifndef FWCore_Utilities_getAnyPtr_h
2
#define FWCore_Utilities_getAnyPtr_h
3
4
#include <cassert>
5
#include <memory>
6
7
namespace
edm
{
8
template
<
typename
T>
9
inline
10
std::unique_ptr<T>
getAnyPtr
(
void
*
p
,
int
offset
) {
11
// A union is used to avoid possible copies during the triple cast that would otherwise be needed.
12
// std::unique_ptr<T> edp(static_cast<T*>(static_cast<void *>(static_cast<unsigned char *>(p) + offset)));
13
union
{
14
void
* vp;
15
unsigned
char
* ucp;
16
T
* tp;
17
} pointerUnion;
18
assert(p !=
nullptr
);
19
pointerUnion.vp =
p
;
20
pointerUnion.ucp +=
offset
;
21
std::unique_ptr<T> tp(pointerUnion.tp);
22
return
(
std::move
(tp));
23
}
24
}
25
26
#endif
AlCaHLTBitMon_ParallelJobs.p
p
Definition:
AlCaHLTBitMon_ParallelJobs.py:152
PFRecoTauDiscriminationByIsolation_cfi.offset
offset
Definition:
PFRecoTauDiscriminationByIsolation_cfi.py:61
edm
HLT enums.
Definition:
AlignableModifier.h:17
edm::getAnyPtr
std::unique_ptr< T > getAnyPtr(void *p, int offset)
Definition:
getAnyPtr.h:10
T
long double T
Definition:
Basic3DVectorLD.h:57
eostools.move
def move(src, dest)
Definition:
eostools.py:510
Generated for CMSSW Reference Manual by
1.8.11