00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _SK_UTIL_SLOT_POINTER_HXX_
00009 #define _SK_UTIL_SLOT_POINTER_HXX_
00010
00011 #include <sk/util/slot/Mixable.hxx>
00012 #include <sk/util/slot/mixin/None.h>
00013 #include <sk/util/String.h>
00014
00015 namespace sk {
00016 namespace util {
00017 namespace slot {
00018 template<typename T, typename Mixin = mixin::None>
00019 class Pointer
00020 : public sk::util::slot::Mixable<T, Mixin>
00021 {
00022 public:
00023 Pointer(T* object);
00024 virtual ~Pointer();
00025
00026
00027 bool isOwner() const;
00028 T& get() const;
00029 T* deprive();
00030 T* replace(T* object);
00031
00032
00033 const sk::util::String inspect() const;
00034
00035 private:
00036 Pointer(const Pointer<T, Mixin>& other);
00037 Pointer<T, Mixin>& operator = (const Pointer<T, Mixin>& other);
00038
00039 T* _object;
00040 };
00041 }
00042 }
00043 }
00044
00045 #endif