7 #ifndef PXR_BASE_TF_PY_SINGLETON_H
8 #define PXR_BASE_TF_PY_SINGLETON_H
19 #include "pxr/external/boost/python/def_visitor.hpp"
20 #include "pxr/external/boost/python/raw_function.hpp"
26 namespace Tf_PySingleton {
28 namespace bp = pxr_boost::python;
50 template <
typename PtrType>
59 struct Visitor : bp::def_visitor<Visitor> {
63 template <
typename CLS>
65 typedef typename CLS::metadata::held_type PtrType;
71 c.def(
"__new__", _GetSingletonWeakPtr<PtrType>).staticmethod(
"__new__");
73 c.def(
"__init__", bp::raw_function(_DummyInit));
84 #endif // PXR_BASE_TF_PY_SINGLETON_H
TfRefPtr< typename T::DataType > TfConst_cast(const TfRefPtr< const typename T::DataType > &ptr)
friend class bp::def_visitor_access
TF_API std::string _Repr(bp::object const &self, std::string const &prefix)
TF_API Tf_PySingleton::Visitor TfPySingleton()
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
TF_API bp::object _DummyInit(bp::tuple const &, bp::dict const &)
PtrType _GetSingletonWeakPtr(bp::object const &)
TfWeakPtr< U > TfCreateWeakPtr(U *p)
TfWeakPtr< T > GetWeakPtr(T &t)