summaryrefslogtreecommitdiffstats
path: root/c++/src/H5RefCounter.C
diff options
context:
space:
mode:
Diffstat (limited to 'c++/src/H5RefCounter.C')
-rw-r--r--c++/src/H5RefCounter.C35
1 files changed, 35 insertions, 0 deletions
diff --git a/c++/src/H5RefCounter.C b/c++/src/H5RefCounter.C
new file mode 100644
index 0000000..f98f7d1
--- /dev/null
+++ b/c++/src/H5RefCounter.C
@@ -0,0 +1,35 @@
+#include "H5RefCounter.h"
+
+#ifndef H5_NO_NAMESPACE
+namespace H5 {
+using namespace std;
+#endif
+
+// Creates a reference counter to be used by an HDF5 object
+RefCounter::RefCounter() : counter(1) { };
+
+// Returns the current value of the reference counter
+int RefCounter::getCounter () const { return counter; }
+
+// Increments the reference counter as a copy of the object that uses
+// this counter is created.
+void RefCounter::increment() { counter++; }
+
+// Decrements the reference counter as a copy of the object that uses
+// this counter is destroyed.
+void RefCounter::decrement() { counter--; }
+
+// Decrements the reference counter then determines if there are no more
+// reference to the object that uses this counter
+bool RefCounter::noReference()
+{
+ if( counter > 0 )
+ counter--;
+ return( counter == 0 ? true:false );
+}
+
+RefCounter::~RefCounter() {}
+
+#ifndef H5_NO_NAMESPACE
+} // end namespace
+#endif