summaryrefslogtreecommitdiff
path: root/TAO/tao/Configurable_Refcount.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Configurable_Refcount.inl')
-rw-r--r--TAO/tao/Configurable_Refcount.inl55
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