| /* |
| ****************************************************************************** |
| * Copyright (C) 2014, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| ****************************************************************************** |
| * sharedobject.cpp |
| */ |
| #include "sharedobject.h" |
| |
| U_NAMESPACE_BEGIN |
| SharedObject::~SharedObject() {} |
| |
| void |
| SharedObject::addRef() const { |
| umtx_atomic_inc(&refCount); |
| } |
| |
| void |
| SharedObject::removeRef() const { |
| if(umtx_atomic_dec(&refCount) == 0) { |
| delete this; |
| } |
| } |
| |
| int32_t |
| SharedObject::getRefCount() const { |
| return umtx_loadAcquire(refCount); |
| } |
| |
| void |
| SharedObject::deleteIfZeroRefCount() const { |
| if(getRefCount() == 0) { |
| delete this; |
| } |
| } |
| |
| U_NAMESPACE_END |