EventAnalysis  1.0.0
ObjectWrapper.h
Go to the documentation of this file.
1 /*
2  * ObjectWrapper.h
3  *
4  * Created on: 26 Apr 2013
5  * Author: Nicola Mori
6  */
7 
10 #ifndef OBJECTWRAPPER_H_
11 #define OBJECTWRAPPER_H_
12 
13 #include "core/ObjectWrapperT.h"
14 
15 namespace EA {
16 
29 public:
36  ObjectWrapper();
37 
42  ObjectWrapper(const ObjectWrapper &w);
43 
49 
57  template <typename DataType> ObjectWrapper(observer_ptr<DataType> ptr);
58 
66  template <typename DataType> ObjectWrapper(std::shared_ptr<DataType> ptr);
67 
75  template <typename DataType> ObjectWrapper(std::unique_ptr<DataType> ptr);
76 
84  ObjectWrapper(const char *address);
85 
93  ObjectWrapper(char *address);
94 
104  template <typename DataType> ObjectWrapper &operator=(DataType *rhs);
105 
115  template <typename DataType> ObjectWrapper &operator=(DataType &rhs);
116 
126  template <typename DataType> ObjectWrapper &operator=(std::shared_ptr<DataType> rhs);
127 
137  template <typename DataType> ObjectWrapper &operator=(std::unique_ptr<DataType> rhs);
138 
150 
162 
169  void WrapNothing();
170 
175  bool WrapsSomething();
176 
182 
193  const std::type_info &GetObjectType() {
194  if (content)
195  return content->GetObjType();
196  else
197  return typeid(void);
198  }
199 
212  bool WrapObject(void *address, const std::type_info &type, bool own);
213 
214 private:
215  std::unique_ptr<ObjectWrapperBase> content;
216 
217  template <typename DataType>
219  wrapper_cast(ObjectWrapper &wrapper);
220  template <typename DataType>
222  wrapper_cast(ObjectWrapper &wrapper);
223  friend void *wrapper_cast(ObjectWrapper &wrapper, const std::type_info &typeInfo);
224 };
225 
226 } // namespace EA
227 
228 #include "core/ObjectWrapper.hpp"
229 #include "core/WrapperCast.hpp"
230 
231 #endif /* OBJECTWRAPPER_H_ */
ObjectWrapper CloneObject()
Creates a clone of the wrapped object and returns a wrapper wrapping it.
Definition: ObjectWrapper.cpp:52
void WrapNothing()
Remove the wrapped object.
Definition: ObjectWrapper.cpp:45
ObjectWrapper & operator=(DataType *rhs)
Assignment operator.
Definition: ObjectWrapper.hpp:25
friend observer_ptr< typename std::enable_if< std::is_class< DataType >::value, DataType >::type > wrapper_cast(ObjectWrapper &wrapper)
Cast function to extract wrapped pointer from wrapper in a type-safe way.
Definition: WrapperCast.hpp:47
bool WrapObject(void *address, const std::type_info &type, bool own)
Wrap the object at the given address.
Definition: ObjectWrapper.cpp:60
ObjectWrapper()
Default constructor.
Definition: ObjectWrapper.cpp:12
IncludeFileExc.h IncludeFileExc class declaration.
Definition: Algorithm.h:21
bool WrapsSomething()
Checks if the wrapper wraps something.
Definition: ObjectWrapper.cpp:50
Generic wrapper class.
Definition: ObjectWrapper.h:28
const std::type_info & GetObjectType()
Get the wrapped type.
Definition: ObjectWrapper.h:193
std::unique_ptr< ObjectWrapperBase > content
Definition: ObjectWrapper.h:215