+/** Base class for reference-counted objects. */
+class refcounted {
+public:
+ refcounted() throw() : refcount(0) {}
+
+ unsigned int add_reference() throw() { return ++refcount; }
+ unsigned int remove_reference() throw() { return --refcount; }
+ unsigned int get_refcount() const throw() { return refcount; }
+ void set_refcount(unsigned int r) throw() { refcount = r; }
+
+private:
+ unsigned int refcount; ///< reference counter
+};
+
+