2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-21 05:02:17 +00:00

fixes to support pickling of enums (by Shashank Bapat)

[SVN r36256]
This commit is contained in:
Ralf W. Grosse-Kunstleve
2006-12-03 20:43:48 +00:00
parent 2db61657f2
commit d67b040683
2 changed files with 20 additions and 7 deletions

View File

@@ -32,10 +32,11 @@ extern "C"
{
static PyObject* enum_repr(PyObject* self_)
{
const char *mod = PyString_AsString(PyObject_GetAttrString( self_, "__module__"));
enum_object* self = downcast<enum_object>(self_);
if (!self->name)
{
return PyString_FromFormat("%s(%ld)", self_->ob_type->tp_name, PyInt_AS_LONG(self_));
return PyString_FromFormat("%s.%s(%ld)", mod, self_->ob_type->tp_name, PyInt_AS_LONG(self_));
}
else
{
@@ -43,7 +44,7 @@ extern "C"
if (name == 0)
return 0;
return PyString_FromFormat("%s.%s", self_->ob_type->tp_name, name);
return PyString_FromFormat("%s.%s.%s", mod, self_->ob_type->tp_name, name);
}
}
@@ -141,10 +142,9 @@ namespace
object module_name = module_prefix();
if (module_name)
module_name += '.';
d["__module__"] = module_name;
object result = (object(metatype))(
module_name + name, make_tuple(base), d);
object result = (object(metatype))(name, make_tuple(base), d);
scope().attr(name) = result;