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.
3.0 kB · 108 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109// 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 ENUM_DWA200298_HPP# define ENUM_DWA200298_HPP
# include <boost/python/detail/prefix.hpp>
# include <boost/python/object/enum_base.hpp># include <boost/python/converter/rvalue_from_python_data.hpp># include <boost/python/converter/registered.hpp>
namespace boost { namespace python {
template <class T>struct enum_ : public objects::enum_base{ typedef objects::enum_base base;
// Declare a new enumeration type in the current scope() enum_(char const* name, char const* doc = 0);
// Add a new enumeration value with the given name and value. inline enum_<T>& value(char const* name, T);
// Add all of the defined enumeration values to the current scope with the // same names used here. inline enum_<T>& export_values(); private: static PyObject* to_python(void const* x); static void* convertible_from_python(PyObject* obj); static void construct(PyObject* obj, converter::rvalue_from_python_stage1_data* data);};
template <class T>inline enum_<T>::enum_(char const* name, char const* doc ) : base( name , &enum_<T>::to_python , &enum_<T>::convertible_from_python , &enum_<T>::construct , type_id<T>() , doc ){}
// This is the conversion function that gets registered for converting// these enums to Python.template <class T>PyObject* enum_<T>::to_python(void const* x){ return base::to_python( converter::registered<T>::converters.m_class_object , static_cast<long>(*(T const*)x));}
//// The following two static functions serve as the elements of an// rvalue from_python converter for the enumeration type.//
// This checks that a given Python object can be converted to the// enumeration type.template <class T>void* enum_<T>::convertible_from_python(PyObject* obj){ return PyObject_IsInstance( obj , upcast<PyObject>( converter::registered<T>::converters.m_class_object)) ? obj : 0;}
// Constructs an instance of the enumeration type in the from_python// data.template <class T>void enum_<T>::construct(PyObject* obj, converter::rvalue_from_python_stage1_data* data){#if PY_VERSION_HEX >= 0x03000000 T x = static_cast<T>(PyLong_AS_LONG(obj));#else T x = static_cast<T>(PyInt_AS_LONG(obj));#endif void* const storage = ((converter::rvalue_from_python_storage<T>*)data)->storage.bytes; new (storage) T(x); data->convertible = storage;}
template <class T>inline enum_<T>& enum_<T>::value(char const* name, T x){ this->add_value(name, static_cast<long>(x)); return *this;}
template <class T>inline enum_<T>& enum_<T>::export_values(){ this->base::export_values(); return *this;}
}} // namespace boost::python
#endif // ENUM_DWA200298_HPP