6namespace ChimeraTK::detail {
10 SharedAccessors& SharedAccessors::getInstance() {
11 static SharedAccessors instance;
17 void SharedAccessors::combineTransferSharedStates(TransferElementID oldId, TransferElementID newId) {
18 std::lock_guard<std::mutex> l(_mapMutex);
19 auto oldIter = _transferSharedStates.find(oldId);
20 assert(oldIter != _transferSharedStates.end());
21 auto newIter = _transferSharedStates.find(newId);
22 assert(newIter != _transferSharedStates.end());
25 newIter->second.instanceCount = newIter->second.instanceCount + oldIter->second.instanceCount;
26 _transferSharedStates.erase(oldIter);
31 void SharedAccessors::addTransferElement(TransferElementID
id) {
32 std::lock_guard<std::mutex> l(_mapMutex);
33 assert(_transferSharedStates.find(
id) == _transferSharedStates.end());
34 _transferSharedStates[id].instanceCount = 1;
39 void SharedAccessors::removeTransferElement(TransferElementID
id) {
40 std::lock_guard<std::mutex> l(_mapMutex);
41 auto iter = _transferSharedStates.find(
id);
42 assert(iter != _transferSharedStates.end());
43 assert(iter->second.instanceCount >= 1);
44 --(iter->second.instanceCount);
45 if(iter->second.instanceCount == 0) {
46 _transferSharedStates.erase(iter);
52 size_t SharedAccessors::instanceCount(TransferElementID
id) {
53 std::lock_guard<std::mutex> l(_mapMutex);
54 auto iter = _transferSharedStates.find(
id);
55 if(iter == _transferSharedStates.end()) {
58 return iter->second.instanceCount;