...
This commit is contained in:
@@ -294,6 +294,15 @@ public:
|
||||
|
||||
_serializerFunc<SerializedT>.emplace(other, _serializerFunc<SerializedT>[this]);
|
||||
_deserializerFunc<SerializedT>.emplace(other, _deserializerFunc<SerializedT>[this]);
|
||||
|
||||
// define copy-function for newly constructed object
|
||||
other->_copyFunc = [other](AdcDeviceAttribute* o_next) {
|
||||
_getterFunc<ValueT>.emplace(o_next, _getterFunc<ValueT>[other]);
|
||||
_setterFunc<ValueT>.emplace(o_next, _setterFunc<ValueT>[other]);
|
||||
|
||||
_serializerFunc<SerializedT>.emplace(o_next, _serializerFunc<SerializedT>[other]);
|
||||
_deserializerFunc<SerializedT>.emplace(o_next, _deserializerFunc<SerializedT>[other]);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -304,6 +313,15 @@ public:
|
||||
|
||||
_serializerFunc<SerializedT>.emplace(other, std::move(_serializerFunc<SerializedT>[this]));
|
||||
_deserializerFunc<SerializedT>.emplace(other, std::move(_deserializerFunc<SerializedT>[this]));
|
||||
|
||||
// define move-function for newly constructed object
|
||||
other->_moveFunc = [other](AdcDeviceAttribute* o_next) {
|
||||
_getterFunc<ValueT>.emplace(o_next, std::move(_getterFunc<ValueT>[other]));
|
||||
_setterFunc<ValueT>.emplace(o_next, std::move(_setterFunc<ValueT>[other]));
|
||||
|
||||
_serializerFunc<SerializedT>.emplace(o_next, std::move(_serializerFunc<SerializedT>[other]));
|
||||
_deserializerFunc<SerializedT>.emplace(o_next, std::move(_deserializerFunc<SerializedT>[other]));
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -398,30 +416,34 @@ public:
|
||||
|
||||
AdcDeviceAttribute(const AdcDeviceAttribute& other)
|
||||
{
|
||||
_clearFunc();
|
||||
// _clearFunc();
|
||||
|
||||
other._copyFunc(this);
|
||||
if (&other != this) {
|
||||
other._copyFunc(this);
|
||||
}
|
||||
|
||||
_clearFunc = other._clearFunc;
|
||||
_copyFunc = other._copyFunc;
|
||||
_moveFunc = other._moveFunc;
|
||||
// _clearFunc = other._clearFunc;
|
||||
// _copyFunc = other._copyFunc;
|
||||
// _moveFunc = other._moveFunc;
|
||||
}
|
||||
|
||||
AdcDeviceAttribute(AdcDeviceAttribute&& other)
|
||||
{
|
||||
_clearFunc();
|
||||
if (&other != this) {
|
||||
other._moveFunc(this);
|
||||
}
|
||||
|
||||
other._moveFunc(this);
|
||||
// other._clearFunc();
|
||||
|
||||
_clearFunc = std::move(other._clearFunc);
|
||||
_copyFunc = std::move(other._copyFunc);
|
||||
_moveFunc = std::move(other._moveFunc);
|
||||
// _clearFunc = std::move(other._clearFunc);
|
||||
// _copyFunc = std::move(other._copyFunc);
|
||||
// _moveFunc = std::move(other._moveFunc);
|
||||
}
|
||||
|
||||
|
||||
virtual ~AdcDeviceAttribute()
|
||||
{
|
||||
_clearFunc();
|
||||
// _clearFunc();
|
||||
}
|
||||
|
||||
|
||||
@@ -559,13 +581,13 @@ public:
|
||||
AdcDeviceAttribute& operator=(const AdcDeviceAttribute& other)
|
||||
{
|
||||
if (&other != this) {
|
||||
_clearFunc();
|
||||
// _clearFunc();
|
||||
|
||||
other._copyFunc(this);
|
||||
|
||||
_clearFunc = other._clearFunc;
|
||||
_copyFunc = other._copyFunc;
|
||||
_moveFunc = other._moveFunc;
|
||||
// _clearFunc = other._clearFunc;
|
||||
// _copyFunc = other._copyFunc;
|
||||
// _moveFunc = other._moveFunc;
|
||||
}
|
||||
|
||||
return *this;
|
||||
@@ -575,13 +597,13 @@ public:
|
||||
AdcDeviceAttribute& operator=(AdcDeviceAttribute&& other)
|
||||
{
|
||||
if (&other != this) {
|
||||
_clearFunc();
|
||||
// _clearFunc();
|
||||
|
||||
other._moveFunc(this);
|
||||
|
||||
_clearFunc = std::move(other._clearFunc);
|
||||
_copyFunc = std::move(other._copyFunc);
|
||||
_moveFunc = std::move(other._moveFunc);
|
||||
// _clearFunc = std::move(other._clearFunc);
|
||||
// _copyFunc = std::move(other._copyFunc);
|
||||
// _moveFunc = std::move(other._moveFunc);
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
||||
Reference in New Issue
Block a user