diff options
Diffstat (limited to 'TAO/tao/Configurable_Refcount.inl')
-rw-r--r-- | TAO/tao/Configurable_Refcount.inl | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/TAO/tao/Configurable_Refcount.inl b/TAO/tao/Configurable_Refcount.inl new file mode 100644 index 00000000000..c885976bbc6 --- /dev/null +++ b/TAO/tao/Configurable_Refcount.inl @@ -0,0 +1,55 @@ +// -*- C++ -*- +//$Id$ + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +ACE_INLINE +TAO_Configurable_Refcount::TAO_Configurable_Refcount ( + TAO_Configurable_Refcount::Lock_Type type, + unsigned long value) + : type_ (type), + null_refcount_ (value), + mutex_refcount_ (value) +{ +} + +ACE_INLINE unsigned long +TAO_Configurable_Refcount::increment (void) +{ + switch(this->type_) + { + case TAO_NULL_LOCK: + return this->null_refcount_++; + case TAO_THREAD_LOCK: + default: + return this->mutex_refcount_++; + } +} + +ACE_INLINE unsigned long +TAO_Configurable_Refcount::decrement (void) +{ + switch(this->type_) + { + case TAO_NULL_LOCK: + return --this->null_refcount_; + case TAO_THREAD_LOCK: + default: + return --this->mutex_refcount_; + } +} + +ACE_INLINE unsigned long +TAO_Configurable_Refcount::value (void) const +{ + switch(this->type_) + { + case TAO_NULL_LOCK: + return this->null_refcount_.value (); + case TAO_THREAD_LOCK: + default: + return this->mutex_refcount_.value (); + } +} + +TAO_END_VERSIONED_NAMESPACE_DECL |