CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
holder_initializer.h
1#pragma once
2
3#include <system/smart_ptr.h>
4#include <system/string.h>
5
6namespace System
7{
8
18template <typename T, bool R = System::IsSmartPtr<T>::value || std::is_same<System::String, T>::value>
20{
21private:
23 T& m_holder;
24public:
26 inline HolderInitializer(T& holder) : m_holder(holder) {}
27
29 inline const T& HoldIfTemporary(const T& value)
30 {
31 return value;
32 }
33
35 inline const T& HoldIfTemporary(T& value)
36 {
37 return value;
38 }
39
41 inline const T& HoldIfTemporary(T&& value)
42 {
43 m_holder = value;
44 return m_holder;
45 }
46
49 inline const T& Hold(const T& value)
50 {
51 m_holder = value;
52 return m_holder;
53 }
54};
55
59template <typename T>
60struct HolderInitializer<T, false>
61{
62public:
63 inline HolderInitializer(T& holder) {}
64
65 inline const T& HoldIfTemporary(const T& value)
66 {
67 return value;
68 }
69
70 inline const T& Hold(const T& value)
71 {
72 return value;
73 }
74};
75
76}
Definition: db_command.h:9
const T & HoldIfTemporary(const T &value)
Definition: holder_initializer.h:65
HolderInitializer(T &holder)
Definition: holder_initializer.h:63
const T & Hold(const T &value)
Definition: holder_initializer.h:70
This class used to get persistent reference to the object instance, whatever it is lvalue or rvalue....
Definition: holder_initializer.h:20
const T & Hold(const T &value)
Copies passed lvalue to holder, then return the holder reference Caller should use this method to hol...
Definition: holder_initializer.h:49
HolderInitializer(T &holder)
Initializes holder reference with passed one.
Definition: holder_initializer.h:26
const T & HoldIfTemporary(const T &value)
Returns reference to rvalue (const)
Definition: holder_initializer.h:29
const T & HoldIfTemporary(T &value)
Returns reference to rvalue (non-const)
Definition: holder_initializer.h:35
const T & HoldIfTemporary(T &&value)
Copies passed lvalue to holder, then return the holder reference.
Definition: holder_initializer.h:41