6namespace ChimeraTK::detail {
10 void SharedAccessors::combineTransferSharedStates(TransferElementID oldId, TransferElementID newId) {
11 std::lock_guard<std::mutex> l(_mapMutex);
12 auto oldIter = _transferSharedStates.find(oldId);
13 assert(oldIter != _transferSharedStates.end());
14 auto newIter = _transferSharedStates.find(newId);
15 assert(newIter != _transferSharedStates.end());
19 assert(oldIter->second.instanceCount >= 1);
20 --(oldIter->second.instanceCount);
21 ++(newIter->second.instanceCount);
22 if(oldIter->second.instanceCount == 0) {
23 _transferSharedStates.erase(oldIter);
29 void SharedAccessors::addTransferElement(TransferElementID
id) {
30 std::lock_guard<std::mutex> l(_mapMutex);
31 assert(_transferSharedStates.find(
id) == _transferSharedStates.end());
32 _transferSharedStates[id].instanceCount = 1;
37 void SharedAccessors::removeTransferElement(TransferElementID
id) {
38 std::lock_guard<std::mutex> l(_mapMutex);
39 auto iter = _transferSharedStates.find(
id);
40 assert(iter != _transferSharedStates.end());
41 assert(iter->second.instanceCount >= 1);
42 --(iter->second.instanceCount);
43 if(iter->second.instanceCount == 0) {
44 _transferSharedStates.erase(iter);
50 size_t SharedAccessors::instanceCount(TransferElementID
id) {
51 std::lock_guard<std::mutex> l(_mapMutex);
52 auto iter = _transferSharedStates.find(
id);
53 if(iter == _transferSharedStates.end()) {
56 return iter->second.instanceCount;