From 7aa0f25d7f0a8a1eac19c886477b13ab00bd76fe Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 11 Jan 2008 18:27:47 +0100 Subject: [PATCH] python/pidl: Handle non-string types. (This used to be commit 02dd02c529d578ad7fa4a6b825097685555604fe) --- source4/pidl/lib/Parse/Pidl/Samba4/Python.pm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm index 7c379548ed4..5077102fc76 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -347,6 +347,24 @@ sub register_module_method($$$$$) push (@{$self->{module_methods}}, [$fn_name, $pyfn_name, $flags, $doc]) } +sub ConvertObjectToPython($$$) +{ + my ($self, $ctype, $cvar) = @_; + + if ($cvar =~ /^".*"$/) { + return "PyString_FromString($cvar)"; + } + + if ($cvar =~ /^[0-9]+$/ or + $ctype->{TYPE} eq "ENUM" or $ctype->{TYPE} eq "BITMAP" or + $ctype->{TYPE} eq "TYPEDEF" and + ($ctype->{TYPE} eq "ENUM" or $ctype->{TYPE} eq "BITMAP")) { + return "PyInt_FromLong($cvar)"; + } + + die("Unknown type for ".mapTypeName($ctype).": $cvar"); +} + sub Parse($$$$) { my($self,$basename,$ndr,$hdr) = @_; @@ -391,7 +409,7 @@ sub Parse($$$$) $self->pidl("m = Py_InitModule(\"$basename\", $basename\_methods);"); foreach (keys %{$self->{constants}}) { # FIXME: Handle non-string constants - $self->pidl("PyModule_AddObject(m, \"$_\", PyString_FromString(" . $self->{constants}->{$_}->[1] . "));"); + $self->pidl("PyModule_AddObject(m, \"$_\", " . $self->ConvertObjectToPython($self->{constants}->{$_}->[0], $self->{constants}->{$_}->[1]) . ");"); } $self->deindent; $self->pidl("}"); -- 2.34.1