summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl')
-rw-r--r--TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl66
1 files changed, 66 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl
new file mode 100644
index 00000000000..d9e0ffbb001
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/EventChannel/Dynamic_Bitset.inl
@@ -0,0 +1,66 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Dynamic_Bitset.inl
+ *
+ * $Id$
+ *
+ * @author Huang-Ming Huang <hh1@cse.wustl.edu>
+ */
+//=============================================================================
+
+ACE_INLINE
+Dynamic_Bitset::~Dynamic_Bitset()
+{
+ delete[] buffer_;
+}
+
+ACE_INLINE
+Dynamic_Bitset::Dynamic_Bitset(const Dynamic_Bitset& other)
+ : buffer_(new block[other.buffer_size_])
+ , buffer_size_(other.buffer_size_)
+ , bit_size_(other.bit_size_)
+{
+ memcpy(buffer_, other.buffer_, buffer_size_*BYTES_PER_BLOCK);
+}
+
+ACE_INLINE
+Dynamic_Bitset operator & (const Dynamic_Bitset& lhs, const Dynamic_Bitset& rhs)
+{
+ Dynamic_Bitset tmp(lhs);
+ tmp &= rhs;
+ return tmp;
+}
+
+ACE_INLINE
+Dynamic_Bitset::reference::reference(Dynamic_Bitset* bitset, Dynamic_Bitset::reference::size_type bit)
+: bitset_(bitset), bit_(bit)
+{
+}
+
+ACE_INLINE
+Dynamic_Bitset::reference Dynamic_Bitset::reference::operator = (bool val)
+{
+ bitset_->set(bit_, val);
+ return *this;
+}
+
+ACE_INLINE
+Dynamic_Bitset::reference::operator bool () const
+{
+ return bitset_->test(bit_);
+}
+
+ACE_INLINE
+Dynamic_Bitset::size_type Dynamic_Bitset::size() const
+{
+ return bit_size_;
+}
+
+ACE_INLINE
+Dynamic_Bitset::reference Dynamic_Bitset::operator[](Dynamic_Bitset::size_type bit)
+{
+ return Dynamic_Bitset::reference(this, bit);
+}
+