{
my ($self, $mem_ctx, $type, $switch, $name) = @_;
- $self->pidl("PyObject *ret;");
+ my $has_default = 0;
+
+ $self->pidl("PyObject *ret = NULL;");
$self->pidl("");
$self->pidl("switch ($switch) {");
- $self->indent;
foreach my $e (@{$type->{ELEMENTS}}) {
$self->pidl("$e->{CASE}:");
+ if ($e->{CASE} eq "default") { $has_default = 1; }
$self->indent;
$self->pidl("Py_INCREF(ret);");
}
- $self->pidl("return ret;");
+ $self->pidl("break;");
$self->pidl("");
$self->deindent;
}
- $self->deindent;
- $self->pidl("}");
+ if (!$has_default) {
+ $self->pidl("default:");
+ $self->indent;
+ $self->pidl("PyErr_SetString(PyExc_TypeError, \"unknown union level\");");
+ $self->pidl("ret = NULL;");
+ $self->pidl("break;");
+ $self->deindent;
+ }
- $self->pidl("PyErr_SetString(PyExc_TypeError, \"unknown union level\");");
- $self->pidl("return NULL;");
+ $self->pidl("}");
+ $self->pidl("");
+ $self->pidl("return ret;");
}
sub FromPythonToUnionFunction($$$$$)