pidl: added a new type dnsp_name
authorAndrew Tridgell <tridge@samba.org>
Tue, 11 May 2010 05:09:05 +0000 (07:09 +0200)
committerAndrew Tridgell <tridge@samba.org>
Thu, 5 Aug 2010 07:31:29 +0000 (17:31 +1000)
This is a name type used in DNS where each DNS component maps to a
length byte followed by the string

We want these to map to a char *, which is why we need to do this in
PIDL

pidl/lib/Parse/Pidl/NDR.pm
pidl/lib/Parse/Pidl/Samba4/Python.pm
pidl/lib/Parse/Pidl/Typelist.pm

index a875ec875613d2e17cb6a7878444ea2b5d0063f8..c1ac6001dac87379690545f0e1b1ea35585b1302 100644 (file)
@@ -74,7 +74,8 @@ my $scalar_alignment = {
        'COMRESULT' => 4,
        'nbt_string' => 4,
        'wrepl_nbt_name' => 4,
-       'ipv4address' => 4
+       'ipv4address' => 4,
+       'dnsp_name' => 1
 };
 
 sub GetElementLevelTable($$)
index 4c5cc1b378fa491f712db0340c96d53e7f9232ef..75aa0a8172704b8ab323454c1e4418f167a74d34 100644 (file)
@@ -883,6 +883,11 @@ sub ConvertObjectFromPythonData($$$$$$;$)
                return;
                }
 
+       if ($actual_ctype->{TYPE} eq "SCALAR" and $actual_ctype->{NAME} eq "dnsp_name") {
+               $self->pidl("$target = PyString_AsString($cvar);");
+               return;
+               }
+
 
        if ($actual_ctype->{TYPE} eq "SCALAR" and $actual_ctype->{NAME} eq "NTSTATUS") {
                $self->pidl("$target = NT_STATUS(PyInt_AsLong($cvar));");
@@ -1018,6 +1023,7 @@ sub ConvertScalarToPython($$$)
        # Not yet supported
        if ($ctypename eq "string_array") { return "PyCObject_FromTallocPtr($cvar)"; }
        if ($ctypename eq "ipv4address") { return "PyString_FromString($cvar)"; }
+       if ($ctypename eq "dnsp_name") { return "PyString_FromString($cvar)"; }
        if ($ctypename eq "pointer") {
                return "PyCObject_FromTallocPtr($cvar)";
        }
index 1d82dee833287de4625f0c6f6dbc2673ba3f589c..b00f0e4bed2d4806b51771209eb777053b601eb9 100644 (file)
@@ -57,6 +57,7 @@ my %scalars = (
        "nbt_string"    => "const char *",
        "wrepl_nbt_name"=> "struct nbt_name *",
        "ipv4address"   => "const char *",
+       "dnsp_name"     => "const char *",
 );
 
 my %aliases = (