Pothos  0.4.3-gabce2ce6
The Pothos dataflow programming software suite
ObjectM.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 //We need to declare lots of copy constructors so the templated version is only called explicitly.
13 //However, the constructors cause the following warning on MSVC, which we disable below:
14 #ifdef _MSC_VER
15 #pragma warning(push)
16 #pragma warning (disable:4521) // 'class' : multiple copy constructors specified
17 #endif //_MSC_VER
18 
19 #include <Pothos/Config.hpp>
20 #include <Pothos/Object/Object.hpp>
21 
22 namespace Pothos {
23 
34 class POTHOS_API ObjectM : public Object
35 {
36 public:
40  explicit ObjectM(void);
41 
43  ObjectM(const ObjectM &obj);
44 
46  ObjectM(ObjectM &&obj);
47 
49  ObjectM(ObjectM &obj);
50 
52  ObjectM(const ObjectM &&obj);
53 
58  template <typename ValueType>
59  explicit ObjectM(ValueType &&value);
60 
62  virtual ~ObjectM(void);
63 
65  ObjectM &operator=(const ObjectM &rhs);
66 
68  ObjectM &operator=(ObjectM &&rhs);
69 
76  template <typename ValueType>
77  ValueType &extract(void) const;
78 };
79 
80 } //namespace Pothos
81 
82 #ifdef _MSC_VER
83 #pragma warning(pop)
84 #endif //_MSC_VER
#define POTHOS_API
Definition: Config.hpp:41
Definition: CallInterface.hpp:15
Definition: ObjectM.hpp:34
Definition: Object.hpp:55