summaryrefslogtreecommitdiff
path: root/src/components/include/utils/make_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include/utils/make_shared.h')
-rw-r--r--src/components/include/utils/make_shared.h149
1 files changed, 97 insertions, 52 deletions
diff --git a/src/components/include/utils/make_shared.h b/src/components/include/utils/make_shared.h
index 665344737c..9d40d646a6 100644
--- a/src/components/include/utils/make_shared.h
+++ b/src/components/include/utils/make_shared.h
@@ -48,99 +48,144 @@
* SharedPtr<A> shared2(MakeShared<A>(5, 5.5);
* SharedPtr<A> shared3(MakeShared<A>(5, 5.5, std::string("MyStr"));
*
- * The profit in using MakeShared instead of simple allocation with operator new is evident.
- * Firstly it allows us to centralize allocation place, secondly it allows us to use
+ * The profit in using MakeShared instead of simple allocation with operator new
+ *is evident.
+ * Firstly it allows us to centralize allocation place, secondly it allows us to
+ *use
* safe operator new overloading (no throwable one).
*/
namespace utils {
-template <typename T> class SharedPtr;
+template <typename T>
+class SharedPtr;
namespace {
template <typename T>
- SharedPtr<T>Initialize(T* object) {
- return object == NULL ? SharedPtr<T>() : SharedPtr<T>(object);
- }
+SharedPtr<T> Initialize(T* object) {
+ return object == NULL ? SharedPtr<T>() : SharedPtr<T>(object);
+}
}
-template<typename T>
+template <typename T>
SharedPtr<T> MakeShared() {
T* t = new (std::nothrow) T;
return Initialize(t);
}
-template<typename T, typename Arg1>
+template <typename T, typename Arg1>
SharedPtr<T> MakeShared(Arg1& arg1) {
- T* t = new (std::nothrow) T(arg1);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2>
+template <typename T, typename Arg1, typename Arg2>
SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2) {
- T* t = new (std::nothrow) T(arg1, arg2);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1, arg2);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3>
+template <typename T, typename Arg1, typename Arg2, typename Arg3>
SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1, arg2, arg3);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4>
SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5);
- return Initialize(t);
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4,
+ typename Arg5>
+SharedPtr<T> MakeShared(
+ Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5) {
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
-SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5, Arg6& arg6) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5, arg6);
- return Initialize(t);
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4,
+ typename Arg5,
+ typename Arg6>
+SharedPtr<T> MakeShared(
+ Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5, Arg6& arg6) {
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5, arg6);
+ return Initialize(t);
}
-
-template<typename T, typename Arg1>
+template <typename T, typename Arg1>
SharedPtr<T> MakeShared(const Arg1& arg1) {
- T* t = new (std::nothrow) T(arg1);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2>
+template <typename T, typename Arg1, typename Arg2>
SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2) {
- T* t = new (std::nothrow) T(arg1, arg2);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1, arg2);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3>
+template <typename T, typename Arg1, typename Arg2, typename Arg3>
SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3);
- return Initialize(t);
+ T* t = new (std::nothrow) T(arg1, arg2, arg3);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, const Arg4& arg4) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4);
- return Initialize(t);
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4>
+SharedPtr<T> MakeShared(const Arg1& arg1,
+ const Arg2& arg2,
+ const Arg3& arg3,
+ const Arg4& arg4) {
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, const Arg4& arg4, const Arg5& arg5) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5);
- return Initialize(t);
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4,
+ typename Arg5>
+SharedPtr<T> MakeShared(const Arg1& arg1,
+ const Arg2& arg2,
+ const Arg3& arg3,
+ const Arg4& arg4,
+ const Arg5& arg5) {
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5);
+ return Initialize(t);
}
-template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
-SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, const Arg4& arg4, const Arg5& arg5, const Arg6& arg6) {
- T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5, arg6);
- return Initialize(t);
+template <typename T,
+ typename Arg1,
+ typename Arg2,
+ typename Arg3,
+ typename Arg4,
+ typename Arg5,
+ typename Arg6>
+SharedPtr<T> MakeShared(const Arg1& arg1,
+ const Arg2& arg2,
+ const Arg3& arg3,
+ const Arg4& arg4,
+ const Arg5& arg5,
+ const Arg6& arg6) {
+ T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5, arg6);
+ return Initialize(t);
}
-
-} // namespace utils;
-#endif // SRC_COMPONENTS_INCLUDE_UTILS_MAKE_SHARED_H_
+} // namespace utils;
+#endif // SRC_COMPONENTS_INCLUDE_UTILS_MAKE_SHARED_H_