Robert Shearman : rpcrt4: Use INTERPRETER_OPT_FLAGS in ndrtypes. h instead of flags on an unsigned char.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Apr 20 08:45:54 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 28f494e31acad4c22666321a7acb00e605f6d6c3
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=28f494e31acad4c22666321a7acb00e605f6d6c3

Author: Robert Shearman <rob at codeweavers.com>
Date:   Thu Apr 20 11:44:27 2006 +0100

rpcrt4: Use INTERPRETER_OPT_FLAGS in ndrtypes.h instead of flags on an unsigned char.

---

 dlls/rpcrt4/ndr_stubless.c |   57 ++++++++++++++++++++++----------------------
 include/ndrtypes.h         |   17 +++++++++++++
 include/wine/rpcfc.h       |    7 -----
 3 files changed, 45 insertions(+), 36 deletions(-)

diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index b9d379e..442e4fe 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -198,21 +198,7 @@ typedef struct _NDR_PROC_PARTIAL_OIF_HEA
      * sizing pass */
     unsigned short constant_server_buffer_size;
 
-    /* -Oif flags:
-     * RPC_FC_PROC_OI2F_SRVMUSTSIZE = 0x01 - the server must perform a
-     *   sizing pass.
-     * RPC_FC_PROC_OI2F_CLTMUSTSIZE = 0x02 - the client must perform a
-     *   sizing pass.
-     * RPC_FC_PROC_OI2F_HASRETURN = 0x04 - procedure has a return value.
-     * RPC_FC_PROC_OI2F_HASPIPES = 0x08 - the pipe package should be used.
-     * RPC_FC_PROC_OI2F_HASASYNCUUID = 0x20 - indicates an asynchronous DCOM
-     *   procedure.
-     * RPC_FC_PROC_OI2F_HASEXTS = 0x40 - indicates that Windows 2000
-     *   extensions are in use.
-     * RPC_FC_PROC_OI2F_HASASYNCHND = 0x80 - indicates an asynchronous RPC
-     *   procedure.
-     */
-    unsigned char Oif_flags;
+    INTERPRETER_OPT_FLAGS Oi2Flags;
 
     /* number of params */
     unsigned char number_of_params;
@@ -406,6 +392,19 @@ static void WINAPI dump_RPC_FC_PROC_PF(P
     if (param_attributes.ServerAllocSize) TRACE(" ServerAllocSize = %d", param_attributes.ServerAllocSize * 8);
 }
 
+static void WINAPI dump_INTERPRETER_OPT_FLAGS(INTERPRETER_OPT_FLAGS Oi2Flags)
+{
+    if (Oi2Flags.ServerMustSize) TRACE(" ServerMustSize");
+    if (Oi2Flags.ClientMustSize) TRACE(" ClientMustSize");
+    if (Oi2Flags.HasReturn) TRACE(" HasReturn");
+    if (Oi2Flags.HasPipes) TRACE(" HasPipes");
+    if (Oi2Flags.Unused) TRACE(" Unused");
+    if (Oi2Flags.HasAsyncUuid) TRACE(" HasAsyncUuid");
+    if (Oi2Flags.HasExtensions) TRACE(" HasExtensions");
+    if (Oi2Flags.HasAsyncHandle) TRACE(" HasAsyncHandle");
+    TRACE("\n");
+}
+
 /* FIXME: this will be different on other plaftorms than i386 */
 #define ARG_FROM_OFFSET(args, offset) (*(unsigned char **)args + offset)
 
@@ -431,7 +430,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_ST
     /* counter */
     unsigned short i;
     /* cache of Oif_flags from v2 procedure header */
-    unsigned char Oif_flags = 0;
+    INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
     /* cache of extension flags from NDR_PROC_EXTENSION */
     unsigned char ext_flags = 0;
     /* the type of pass we are currently doing */
@@ -551,15 +550,15 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_ST
         NDR_PROC_PARTIAL_OIF_HEADER * pOIFHeader =
             (NDR_PROC_PARTIAL_OIF_HEADER*)&pFormat[current_offset];
 
-        Oif_flags = pOIFHeader->Oif_flags;
+        Oif_flags = pOIFHeader->Oi2Flags;
         number_of_params = pOIFHeader->number_of_params;
 
         current_offset += sizeof(NDR_PROC_PARTIAL_OIF_HEADER);
     }
 
-    TRACE("Oif_flags = 0x%02x\n", Oif_flags);
+    TRACE("Oif_flags = "); dump_INTERPRETER_OPT_FLAGS(Oif_flags);
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASEXTS)
+    if (Oif_flags.HasExtensions)
     {
         NDR_PROC_EXTENSION * pExtensions =
             (NDR_PROC_EXTENSION *)&pFormat[current_offset];
@@ -596,7 +595,7 @@ #endif
     if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCSSALLOC)
         NdrRpcSmSetClientToOsf(&stubMsg);
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+    if (Oif_flags.HasPipes)
     {
         FIXME("pipes not supported yet\n");
         RpcRaiseException(RPC_X_WRONG_STUB_VERSION); /* FIXME: remove when implemented */
@@ -628,7 +627,7 @@ #endif
             /* allocate the buffer */
             if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
                 NdrProxyGetBuffer(This, &stubMsg);
-            else if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+            else if (Oif_flags.HasPipes)
                 /* NdrGetPipeBuffer(...) */
                 FIXME("pipes not supported yet\n");
             else
@@ -648,7 +647,7 @@ #endif
              * params */
             if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
                 NdrProxySendReceive(This, &stubMsg);
-            else if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+            else if (Oif_flags.HasPipes)
                 /* NdrPipesSendReceive(...) */
                 FIXME("pipes not supported yet\n");
             else
@@ -894,7 +893,7 @@ #endif
         /* NdrCorrelationFree(&stubMsg); */
     }
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+    if (Oif_flags.HasPipes)
     {
         /* NdrPipesDone(...) */
     }
@@ -997,7 +996,7 @@ long WINAPI NdrStubCall2(
     /* counter */
     unsigned short i;
     /* cache of Oif_flags from v2 procedure header */
-    unsigned char Oif_flags = 0;
+    INTERPRETER_OPT_FLAGS Oif_flags = { 0 };
     /* cache of extension flags from NDR_PROC_EXTENSION */
     unsigned char ext_flags = 0;
     /* the type of pass we are currently doing */
@@ -1084,15 +1083,15 @@ long WINAPI NdrStubCall2(
         NDR_PROC_PARTIAL_OIF_HEADER * pOIFHeader =
             (NDR_PROC_PARTIAL_OIF_HEADER*)&pFormat[current_offset];
 
-        Oif_flags = pOIFHeader->Oif_flags;
+        Oif_flags = pOIFHeader->Oi2Flags;
         number_of_params = pOIFHeader->number_of_params;
 
         current_offset += sizeof(NDR_PROC_PARTIAL_OIF_HEADER);
     }
 
-    TRACE("Oif_flags = 0x%02x\n", Oif_flags);
+    TRACE("Oif_flags = "); dump_INTERPRETER_OPT_FLAGS(Oif_flags);
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASEXTS)
+    if (Oif_flags.HasExtensions)
     {
         NDR_PROC_EXTENSION * pExtensions =
             (NDR_PROC_EXTENSION *)&pFormat[current_offset];
@@ -1125,7 +1124,7 @@ #else
           FIXME("Set RPCSS memory allocation routines\n");
 #endif
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+    if (Oif_flags.HasPipes)
     {
         FIXME("pipes not supported yet\n");
         RpcRaiseException(RPC_X_WRONG_STUB_VERSION); /* FIXME: remove when implemented */
@@ -1448,7 +1447,7 @@ #endif
         /* NdrCorrelationFree(&stubMsg); */
     }
 
-    if (Oif_flags & RPC_FC_PROC_OI2F_HASPIPES)
+    if (Oif_flags.HasPipes)
     {
         /* NdrPipesDone(...) */
     }
diff --git a/include/ndrtypes.h b/include/ndrtypes.h
index b20092b..d7796ee 100644
--- a/include/ndrtypes.h
+++ b/include/ndrtypes.h
@@ -54,4 +54,21 @@ typedef struct
      *  call. */
 } PARAM_ATTRIBUTES;
 
+typedef struct
+{
+    unsigned char ServerMustSize : 1; /* 0x01 - the server must perform a
+     *  sizing pass. */
+    unsigned char ClientMustSize : 1; /* 0x02 - the client must perform a
+     *  sizing pass. */
+    unsigned char HasReturn : 1; /* 0x04 - procedure has a return value. */
+    unsigned char HasPipes : 1; /* 0x08 - the pipe package should be used. */
+    unsigned char Unused : 1; /* 0x10 - not used */
+    unsigned char HasAsyncUuid : 1; /* 0x20 - indicates an asynchronous DCOM
+     *  procedure. */
+    unsigned char HasExtensions : 1; /* 0x40 - indicates that Win2000
+     *  extensions are in use. */
+    unsigned char HasAsyncHandle : 1; /* 0x80 - indicates an asynchronous RPC
+     *  procedure. */
+} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
+
 #endif
diff --git a/include/wine/rpcfc.h b/include/wine/rpcfc.h
index 0180a27..5761a01 100644
--- a/include/wine/rpcfc.h
+++ b/include/wine/rpcfc.h
@@ -160,13 +160,6 @@ #define RPC_FC_PROC_OIF_RPCFLAGS        
 #define RPC_FC_PROC_OIF_OBJ_V2          0x20
 #define RPC_FC_PROC_OIF_NEWINIT         0x40
 
-#define RPC_FC_PROC_OI2F_SRVMUSTSIZE    0x01
-#define RPC_FC_PROC_OI2F_CLTMUSTSIZE    0x02
-#define RPC_FC_PROC_OI2F_HASRETURN      0x04
-#define RPC_FC_PROC_OI2F_HASPIPES       0x08
-#define RPC_FC_PROC_OI2F_HASASYNCUUID   0x20
-#define RPC_FC_PROC_OI2F_HASEXTS        0x40
-#define RPC_FC_PROC_OI2F_HASASYNCHND    0x80
 #define RPC_FC_PROC_PF_MUSTSIZE         0x0001
 #define RPC_FC_PROC_PF_MUSTFREE         0x0002
 #define RPC_FC_PROC_PF_PIPE             0x0004




More information about the wine-cvs mailing list