OSVR-Core
PointerWrapper.h
Go to the documentation of this file.
1 
11 // Copyright 2015 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 #ifndef INCLUDED_PointerWrapper_h_GUID_0C8888FE_163F_46A3_A9F2_1EFCF610C64D
26 #define INCLUDED_PointerWrapper_h_GUID_0C8888FE_163F_46A3_A9F2_1EFCF610C64D
27 
28 // Internal Includes
29 // - none
30 
31 // Library/third-party includes
32 // - none
33 
34 // Standard includes
35 // - none
36 
37 namespace osvr {
38 namespace util {
41  template <typename Contained> class PointerWrapper {
42  public:
43  PointerWrapper(Contained *ptr = nullptr) : m_ptr(ptr) {}
44 
45  operator Contained **() { return getContainerLocation(); }
46 
47  Contained **getContainerLocation() { return &m_ptr; }
48  Contained *operator->() { return m_ptr; }
49  Contained &operator*() { return *m_ptr; }
50 
51  private:
52  Contained *m_ptr;
53  };
54 } // namespace util
55 } // namespace osvr
56 
57 #endif // INCLUDED_PointerWrapper_h_GUID_0C8888FE_163F_46A3_A9F2_1EFCF610C64D
Definition: RunLoopManager.h:42
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
A wrapper to easily define structures that exist just to hold a pointer.
Definition: PointerWrapper.h:41