- Cast NDR_* #defines to (unsigned long) instead of (UINT32) like MS
headers.
- Create __RPC_MAC__ and __RPC_WIN64__ conditional #defines.
- Correct NDR_LOCAL_DATA_REPRESENTATION for Mac's.
- New NDR_LOCAL_IS_BIG_ENDIAN conditional #define.
- #define TARGET_IS_NT50_OR_LATER.
diff --git a/include/rpcndr.h b/include/rpcndr.h
index 77600ae..560ac4c 100644
--- a/include/rpcndr.h
+++ b/include/rpcndr.h
@@ -24,18 +24,64 @@
#ifndef __WINE_RPCNDR_H
#define __WINE_RPCNDR_H
+#include "basetsd.h"
#include "rpc.h"
-#define NDR_LITTLE_ENDIAN ((UINT32) 0x00000010)
-#define NDR_BIG_ENDIAN ((UINT32) 0x00000000)
+/* stupid #if can't handle casts... this __stupidity
+ is just a workaround for that limitation */
-/* Character Representation: ASCII
- * Integer Representation: Little Endian
- * FP Representation: IEEE
- */
-#define NDR_LOCAL_DATA_REPRESENTATION ((UINT32) 0x00000010)
-#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#define __NDR_CHAR_REP_MASK 0x000fL
+#define __NDR_INT_REP_MASK 0x00f0L
+#define __NDR_FLOAT_REP_MASK 0xff00L
+#define __NDR_IEEE_FLOAT 0x0000L
+#define __NDR_VAX_FLOAT 0x0100L
+#define __NDR_IBM_FLOAT 0x0300L
+
+#define __NDR_ASCII_CHAR 0x0000L
+#define __NDR_EBCDIC_CHAR 0x0001L
+
+#define __NDR_LITTLE_ENDIAN 0x0010L
+#define __NDR_BIG_ENDIAN 0x0000L
+
+/* Mac's are special */
+#if defined(__RPC_MAC__)
+ #define __NDR_LOCAL_DATA_REPRESENTATION \
+ (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_BIG_ENDIAN)
+#else
+ #define __NDR_LOCAL_DATA_REPRESENTATION \
+ (__NDR_IEEE_FLOAT | __NDR_ASCII_CHAR | __NDR_LITTLE_ENDIAN)
+#endif
+
+#define __NDR_LOCAL_ENDIAN \
+ (__NDR_LOCAL_DATA_REPRESENTATION & __NDR_INT_REP_MASK)
+
+/* for convenience, define NDR_LOCAL_IS_BIG_ENDIAN iff it is */
+#if __NDR_LOCAL_ENDIAN == __NDR_BIG_ENDIAN
+ #define NDR_LOCAL_IS_BIG_ENDIAN
+#elif __NDR_LOCAL_ENDIAN == __NDR_LITTLE_ENDIAN
+ #undef NDR_LOCAL_IS_BIG_ENDIAN
+#else
+ #error alien NDR_LOCAL_ENDIAN - Greg botched the defines again, please report
+#endif
+
+/* finally, do the casts like Microsoft */
+
+#define NDR_CHAR_REP_MASK ((unsigned long) __NDR_CHAR_REP_MASK)
+#define NDR_INT_REP_MASK ((unsigned long) __NDR_INT_REP_MASK)
+#define NDR_FLOAT_REP_MASK ((unsigned long) __NDR_FLOAT_REP_MASK)
+#define NDR_IEEE_FLOAT ((unsigned long) __NDR_IEEE_FLOAT)
+#define NDR_VAX_FLOAT ((unsigned long) __NDR_VAX_FLOAT)
+#define NDR_IBM_FLOAT ((unsigned long) __NDR_IBM_FLOAT)
+#define NDR_ASCII_CHAR ((unsigned long) __NDR_ASCII_CHAR)
+#define NDR_EBCDIC_CHAR ((unsigned long) __NDR_EBCDIC_CHAR)
+#define NDR_LITTLE_ENDIAN ((unsigned long) __NDR_LITTLE_ENDIAN)
+#define NDR_BIG_ENDIAN ((unsigned long) __NDR_BIG_ENDIAN)
+#define NDR_LOCAL_DATA_REPRESENTATION ((unsigned long) __NDR_LOCAL_DATA_REPRESENTATION)
+#define NDR_LOCAL_ENDIAN ((unsigned long) __NDR_LOCAL_ENDIAN)
+
+
+#define TARGET_IS_NT50_OR_LATER 1
#define TARGET_IS_NT40_OR_LATER 1
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1