Author: jelmer
Date: 2006-11-23 13:48:01 +0000 (Thu, 23 Nov 2006)
New Revision: 19856

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19856

Log:
Use sptr as basis for full ptr implementation. Will add checks for duplicates 
later.

Modified:
   branches/SAMBA_4_0/source/librpc/idl/epmapper.idl
   branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
   branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/epmapper.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/epmapper.idl   2006-11-23 13:12:47 UTC 
(rev 19855)
+++ branches/SAMBA_4_0/source/librpc/idl/epmapper.idl   2006-11-23 13:48:01 UTC 
(rev 19856)
@@ -248,8 +248,8 @@
        /* Function 0x02      */
        error_status_t epm_Lookup(
                [in]            uint32          inquiry_type,
-               [in,sptr]       GUID            *object,
-               [in,sptr]       rpc_if_id_t     *interface_id,
+               [in,ptr]       GUID            *object,
+               [in,ptr]       rpc_if_id_t     *interface_id,
                [in]            uint32          vers_option,
                [in,out]        policy_handle   *entry_handle,
                [in]            uint32          max_ents,
@@ -266,8 +266,8 @@
        } epm_twr_p_t;
 
        error_status_t epm_Map(
-               [in,sptr]       GUID            *object,
-               [in,sptr]       epm_twr_t       *map_tower,
+               [in,ptr]       GUID            *object,
+               [in,ptr]       epm_twr_t       *map_tower,
                [in,out]        policy_handle   *entry_handle,
                [in]            uint32          max_towers,
                [out]           uint32          *num_towers,
@@ -292,8 +292,8 @@
        /* Function 0x06      */
        error_status_t epm_MgmtDelete(
                [in]            uint32          object_speced,
-               [in,sptr]       GUID            *object,
-               [in,sptr]       epm_twr_t       *tower
+               [in,ptr]       GUID            *object,
+               [in,ptr]       epm_twr_t       *tower
                );
 
        /**********************/

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c    2006-11-23 13:12:47 UTC 
(rev 19855)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_basic.c    2006-11-23 13:48:01 UTC 
(rev 19856)
@@ -481,7 +481,7 @@
 /*
   push a 'simple' full non-zero value if a pointer is non-NULL, otherwise 0
 */
-_PUBLIC_ NTSTATUS ndr_push_sptr_ptr(struct ndr_push *ndr, const void *p)
+_PUBLIC_ NTSTATUS ndr_push_full_ptr(struct ndr_push *ndr, const void *p)
 {
        uint32_t ptr = 0;
        if (p) {

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm        2006-11-23 
13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/NDR.pm        2006-11-23 
13:48:01 UTC (rev 19856)
@@ -309,7 +309,7 @@
        return undef unless $e->{POINTERS};
        
        return "ref" if (has_property($e, "ref"));
-       return "ptr" if (has_property($e, "ptr"));
+       return "full" if (has_property($e, "ptr"));
        return "sptr" if (has_property($e, "sptr"));
        return "unique" if (has_property($e, "unique"));
        return "relative" if (has_property($e, "relative"));
@@ -789,7 +789,6 @@
        # pointer
        "ref"                   => ["ELEMENT"],
        "ptr"                   => ["ELEMENT"],
-       "sptr"                  => ["ELEMENT"],
        "unique"                => ["ELEMENT"],
        "ignore"                => ["ELEMENT"],
        "relative"              => ["ELEMENT"],
@@ -885,10 +884,6 @@
 
        ValidProperties($e,"ELEMENT");
 
-       if (has_property($e, "ptr")) {
-               fatal($e, el_name($e) . " : pidl does not support full NDR 
pointers yet\n");
-       }
-
        # Check whether switches are used correctly.
        if (my $switch = has_property($e, "switch_is")) {
                my $e2 = find_sibling($e, $switch);
@@ -946,7 +941,6 @@
 
        if (!$e->{POINTERS} && (
                has_property($e, "ptr") or
-               has_property($e, "sptr") or
                has_property($e, "unique") or
                has_property($e, "relative") or
                has_property($e, "ref"))) {
@@ -1055,11 +1049,8 @@
        ValidProperties($interface,"INTERFACE");
 
        if (has_property($interface, "pointer_default")) {
-               if ($interface->{PROPERTIES}->{pointer_default} eq "ptr") {
-                       nonfatal $interface, "Full pointers are not supported 
yet, falling back to sptr";
-                       $interface->{PROPERTIES}->{pointer_default} = "sptr";
-               } elsif (not grep 
(/$interface->{PROPERTIES}->{pointer_default}/, 
-                                       ("ref", "unique", "ptr", "sptr"))) {
+               if (not grep (/$interface->{PROPERTIES}->{pointer_default}/, 
+                                       ("ref", "unique", "ptr"))) {
                        fatal $interface, "Unknown default pointer type 
`$interface->{PROPERTIES}->{pointer_default}'";
                }
        }

Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm  
2006-11-23 13:12:47 UTC (rev 19855)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm  
2006-11-23 13:48:01 UTC (rev 19856)
@@ -669,8 +669,8 @@
                pidl "NDR_CHECK(ndr_push_relative_ptr1(ndr, $var_name));";
        } elsif ($l->{POINTER_TYPE} eq "unique") {
                pidl "NDR_CHECK(ndr_push_unique_ptr(ndr, $var_name));";
-       } elsif ($l->{POINTER_TYPE} eq "sptr") {
-               pidl "NDR_CHECK(ndr_push_sptr_ptr(ndr, $var_name));";
+       } elsif ($l->{POINTER_TYPE} eq "full") {
+               pidl "NDR_CHECK(ndr_push_full_ptr(ndr, $var_name));";
        } else {
                die("Unhandled pointer type $l->{POINTER_TYPE}");
        }
@@ -1085,7 +1085,7 @@
                return;
        } elsif (($l->{POINTER_TYPE} eq "unique") or 
                 ($l->{POINTER_TYPE} eq "relative") or
-                ($l->{POINTER_TYPE} eq "sptr")) {
+                ($l->{POINTER_TYPE} eq "full")) {
                pidl "NDR_CHECK(ndr_pull_generic_ptr($ndr, &_ptr_$e->{NAME}));";
                pidl "if (_ptr_$e->{NAME}) {";
                indent;

Reply via email to