Allow overriding repr function for pidl-defined types.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 12 Dec 2008 12:31:42 +0000 (13:31 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 12 Dec 2008 12:31:42 +0000 (13:31 +0100)
pidl/lib/Parse/Pidl/Samba4/Python.pm

index 2c64f06aa48ddb0972950c2e2ff5d7df4b3f0577..26642759349d6616665dc67d2df727df5d199e8a 100644 (file)
@@ -295,6 +295,10 @@ sub PythonStruct($$$$$$)
        $self->pidl_hdr("#define $name\_Check(op) PyObject_TypeCheck(op, &$name\_Type)\n");
        $self->pidl_hdr("#define $name\_CheckExact(op) ((op)->ob_type == &$name\_Type)\n");
        $self->pidl_hdr("\n");
+       $self->pidl("#ifndef ".uc("py_$name\_repr"));
+       $self->pidl("#define ".uc("py_$name\_repr") . " py_talloc_default_repr");
+       $self->pidl("#endif");
+       $self->pidl("");
        my $docstring = ($self->DocString($d, $name) or "NULL");
        my $typeobject = "$name\_Type";
        $self->pidl("PyTypeObject $typeobject = {");
@@ -304,7 +308,7 @@ sub PythonStruct($$$$$$)
        $self->pidl(".tp_basicsize = sizeof(py_talloc_Object),");
        $self->pidl(".tp_dealloc = py_talloc_dealloc,");
        $self->pidl(".tp_getset = $getsetters,");
-       $self->pidl(".tp_repr = py_talloc_default_repr,");
+       $self->pidl(".tp_repr = ".uc("py_$name\_repr").",");
        $self->pidl(".tp_doc = $docstring,");
        $self->pidl(".tp_methods = $py_methods,");
        $self->pidl(".tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,");