PSCF v1.1
Offset.h
1#ifndef UTIL_OFFSET_H
2#define UTIL_OFFSET_H
3
4#include <cstddef>
5
6/*
7* Util Package - C++ Utilities for Scientific Computation
8*
9* Copyright 2010 - 2017, The Regents of the University of Minnesota
10* Distributed under the terms of the GNU General Public License.
11*/
12
13namespace Util
14{
15
26 template <typename D, typename B, typename M>
27 ptrdiff_t memberOffset(D& object, M B::* memPtr)
28 {
29 return reinterpret_cast<char*>(&(object.*memPtr)) - reinterpret_cast<char*>(&object);
30 }
31
39 template <typename D, typename B>
40 ptrdiff_t baseOffset(D& object)
41 {
42 D* d = &object;
43 B* b = (B*) d;
44 return reinterpret_cast<char*>(d) - reinterpret_cast<char*>(b);
45 }
46
47
48
49}
50#endif
ptrdiff_t memberOffset(D &object, M B::*memPtr)
Template for calculating offsets of data members.
Definition: Offset.h:27
Utility classes for scientific computation.
Definition: accumulators.mod:1
ptrdiff_t baseOffset(D &object)
Template for calculating offsets of base class subobjects.
Definition: Offset.h:40