#ifndef OBJECT_H #define OBJECT_H namespace icinga { class I2_BASE_API Object : public enable_shared_from_this { private: Object(const Object &other); protected: Object(void); virtual ~Object(void); public: typedef shared_ptr Ptr; typedef weak_ptr WeakPtr; static unsigned long ActiveObjects; }; template struct weak_ptr_eq_raw { private: const void *m_Ref; public: weak_ptr_eq_raw(const void *ref) : m_Ref(ref) { } bool operator()(const weak_ptr& wref) const { return (wref.lock().get() == (const T *)m_Ref); } }; typedef function factory_function; template Object::Ptr factory(void) { return make_shared(); } } #endif /* OBJECT_H */