Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
5.0 kB · 264 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265// Copyright David Abrahams 2002.// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)#ifndef HANDLE_DWA200269_HPP# define HANDLE_DWA200269_HPP
# include <boost/python/detail/prefix.hpp>
# include <boost/python/cast.hpp># include <boost/python/errors.hpp># include <boost/python/borrowed.hpp># include <boost/python/handle_fwd.hpp># include <boost/python/refcount.hpp># include <boost/python/tag.hpp># include <boost/python/detail/raw_pyobject.hpp>
namespace boost { namespace python {
template <class T> struct null_ok;
template <class T>inline null_ok<T>* allow_null(T* p){ return (null_ok<T>*)p;}
namespace detail{ template <class T> inline T* manage_ptr(detail::borrowed<null_ok<T> >* p, int) { return python::xincref((T*)p); } template <class T> inline T* manage_ptr(null_ok<detail::borrowed<T> >* p, int) { return python::xincref((T*)p); } template <class T> inline T* manage_ptr(detail::borrowed<T>* p, long) { return python::incref(expect_non_null((T*)p)); } template <class T> inline T* manage_ptr(null_ok<T>* p, long) { return (T*)p; } template <class T> inline T* manage_ptr(T* p, ...) { return expect_non_null(p); }}
template <class T>class handle{ typedef T* (handle::* bool_type )() const;
public: // types typedef T element_type; public: // member functions handle(); ~handle();
template <class Y> explicit handle(Y* p) : m_p( python::upcast<T>( detail::manage_ptr(p, 0) ) ) { }
handle& operator=(handle const& r) { python::xdecref(m_p); m_p = python::xincref(r.m_p); return *this; }
#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1300)
template<typename Y> handle& operator=(handle<Y> const & r) // never throws { python::xdecref(m_p); m_p = python::xincref(python::upcast<T>(r.get())); return *this; }
#endif
template <typename Y> handle(handle<Y> const& r) : m_p(python::xincref(python::upcast<T>(r.get()))) { } handle(handle const& r) : m_p(python::xincref(r.m_p)) { } T* operator-> () const; T& operator* () const; T* get() const; T* release(); void reset(); operator bool_type() const // never throws { return m_p ? &handle<T>::get : 0; } bool operator! () const; // never throws
public: // implementation details -- do not touch // Defining this in the class body suppresses a VC7 link failure inline handle(detail::borrowed_reference x) : m_p( python::incref( downcast<T>((PyObject*)x) )) { } private: // data members T* m_p;};
#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP} // namespace python#endif
template<class T> inline T * get_pointer(python::handle<T> const & p){ return p.get();}
#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUPnamespace python {#else
// We don't want get_pointer above to hide the othersusing boost::get_pointer;
#endif
typedef handle<PyTypeObject> type_handle;
//// Compile-time introspection//# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATIONtemplate<typename T>class is_handle{ public: BOOST_STATIC_CONSTANT(bool, value = false); };
template<typename T>class is_handle<handle<T> >{ public: BOOST_STATIC_CONSTANT(bool, value = true);};# elsenamespace detail{ typedef char (&yes_handle_t)[1]; typedef char (&no_handle_t)[2]; no_handle_t is_handle_test(...);
template<typename T> yes_handle_t is_handle_test(boost::type< handle<T> >);}
template<typename T>class is_handle{ public: BOOST_STATIC_CONSTANT( bool, value = ( sizeof(detail::is_handle_test(boost::type<T>())) == sizeof(detail::yes_handle_t)));};# endif
//// implementations//template <class T>inline handle<T>::handle() : m_p(0){}
template <class T>inline handle<T>::~handle(){ python::xdecref(m_p);}
template <class T>inline T* handle<T>::operator->() const{ return m_p;}
template <class T>inline T& handle<T>::operator*() const{ return *m_p;}
template <class T>inline T* handle<T>::get() const{ return m_p;} template <class T>inline bool handle<T>::operator!() const{ return m_p == 0;}
template <class T>inline T* handle<T>::release(){ T* result = m_p; m_p = 0; return result;}
template <class T>inline void handle<T>::reset(){ python::xdecref(m_p); m_p = 0;}
// Because get_managed_object must return a non-null PyObject*, we// return Py_None if the handle is null.template <class T>inline PyObject* get_managed_object(handle<T> const& h, tag_t){ return h.get() ? python::upcast<PyObject>(h.get()) : Py_None;}
}} // namespace boost::python
#endif // HANDLE_DWA200269_HPP