diff --git a/ProFUSE/smart_pointers.h b/ProFUSE/smart_pointers.h new file mode 100644 index 0000000..6ab4ecd --- /dev/null +++ b/ProFUSE/smart_pointers.h @@ -0,0 +1,35 @@ + +#ifndef __PROFUSE_SMART_POINTERS_H__ +#define __PROFUSE_SMART_POINTERS_H__ + +#ifdef CPP0X +//C++0x +#include + + +#define SHARED_PTR(T) std::shared_ptr +#define WEAK_PTR(T) std::weak_ptr + +#define MAKE_SHARED(T, ...) std::make_shared(__VA_ARGS__) +#define ENABLE_SHARED_FROM_THIS(T) std::enable_shared_from_this + +#define STATIC_POINTER_CAST(T, ARG) std::static_pointer_cast(ARG) +#define DYNAMIC_POINTER_CAST(T, ARG) std::dynamic_pointer_cast(ARG) + +#else + +// tr1 +#include + +#define SHARED_PTR(T) std::tr1::shared_ptr +#define WEAK_PTR(T) std::tr1::weak_ptr + +#define MAKE_SHARED(T, ...) std::tr1::shared_ptr(new T(__VA_ARGS__)) +#define ENABLE_SHARED_FROM_THIS(T) std::tr1::enable_shared_from_this + +#define STATIC_POINTER_CAST(T, ARG) std::tr1::static_pointer_cast(ARG) +#define DYNAMIC_POINTER_CAST(T, ARG) std::tr1::dynamic_pointer_cast(ARG) + +#endif + +#endif