Loading...
Searching...
No Matches
Go to the documentation of this file.
27#undef CUTL_COPY_AND_ASSIGN
28#define CUTL_COPY_AND_ASSIGN(classname) \
29 classname(const classname &) = delete; \
30 classname &operator=(const classname &) = delete;
37#undef CUTL_SINGLETON_PTR
38#define CUTL_SINGLETON_PTR(classname) \
40 static classname* get_instance() \
42 static classname* obj = nullptr; \
45 static std::once_flag flag; \
46 std::call_once(flag, [&] { obj = new (std::nothrow) classname(); }); \
54 CUTL_COPY_AND_ASSIGN(classname)
60#undef CUTL_SINGLETON_PTR_DEFAULT_CTOR
61#define CUTL_SINGLETON_PTR_DEFAULT_CTOR(classname) \
63 static classname* get_instance() \
65 static classname* obj = nullptr; \
68 static std::once_flag flag; \
69 std::call_once(flag, [&] { obj = new (std::nothrow) classname(); }); \
76 classname() = default; \
77 CUTL_COPY_AND_ASSIGN(classname)
83#undef CUTL_SINGLETON_REF
84#define CUTL_SINGLETON_REF(classname) \
86 static classname& get_instance() \
88 static classname obj; \
95 CUTL_COPY_AND_ASSIGN(classname)
101#undef CUTL_SINGLETON_REF_DEFAULT_CTOR
102#define CUTL_SINGLETON_REF_DEFAULT_CTOR(classname) \
104 static classname& get_instance() \
106 static classname obj; \
112 classname() = default; \
113 CUTL_COPY_AND_ASSIGN(classname)