nndeploy C++ API  0.2.0
nndeploy C++ API
object.h
Go to the documentation of this file.
1 
2 #ifndef _NNDEPLOY_BASE_OBJECT_H_
3 #define _NNDEPLOY_BASE_OBJECT_H_
4 
5 #include "nndeploy/base/common.h"
7 #include "nndeploy/base/macro.h"
8 #include "nndeploy/base/status.h"
9 
10 namespace nndeploy {
11 namespace base {
12 
14  public:
15  NonCopyable() = default;
16 
17  NonCopyable(const NonCopyable &) = delete;
18  NonCopyable &operator=(const NonCopyable &) = delete;
19 
20  NonCopyable(NonCopyable &&) = delete;
22 };
23 
25  public:
26  Movable() = default;
27  Movable(const Movable &) = delete;
28  Movable &operator=(const Movable &) = delete;
29 };
30 
32  template <typename T>
33  void operator()(T *obj) const {
34  if (obj) {
35  delete obj;
36  }
37  }
38 };
39 
40 template <typename T>
41 using UniquePtr = std::unique_ptr<T, Deleter>;
42 
43 template <typename T>
45  public:
49  inline static T &getInstance() {
50  static T instance;
51  return instance;
52  }
53 
54  private:
55  Singleton() = default;
56  ~Singleton() = default;
57  Singleton(const Singleton &) = delete;
58  Singleton &operator=(const Singleton &) = delete;
59  Singleton(Singleton &&) = delete;
60  Singleton &operator=(Singleton &&) = delete;
61 };
62 
63 } // namespace base
64 } // namespace nndeploy
65 
66 #endif
Movable & operator=(const Movable &)=delete
Movable(const Movable &)=delete
NonCopyable & operator=(const NonCopyable &)=delete
NonCopyable(const NonCopyable &)=delete
NonCopyable & operator=(NonCopyable &&)=delete
NonCopyable(NonCopyable &&)=delete
static T & getInstance()
get a reference to the singleton object
Definition: object.h:49
#define NNDEPLOY_CC_API
api
Definition: macro.h:29
std::unique_ptr< T, Deleter > UniquePtr
Definition: object.h:41
void operator()(T *obj) const
Definition: object.h:33