Congradulations - windef.h

Boaz Harrosh boaz at hishome.net
Wed Dec 31 03:38:05 CST 2003


Dimitrie O. Paun wrote:

>Please embed if you can, it makes it so much easier to
>comment on the code.
>  
>
And let the mozzila spell-check code comments :)

>A few comments:
>  -- please don't use C++ comments (//...), 
>     use C comments instead (/* ... */)
>  
>
Done

>  -- these things are defined by winegcc as well, we should
>     protect them with #ifndef, otherwise we'll get a lot of
>     warnings when building with winegcc
>  
>
they were/are protected, but I think it should be removed from winegcc 
because they don't do the Job.
If you accept my proposal of ms-extensions.h collecting all these, and 
cleaning up wine headers, than winegcc could do:
"-include ms-extensions.h" to take care of all extensions in one command 
line switch. (It can also give people using winegcc the freedom of what 
is defined).
  What is your opinion of an ms-extensions.h file? you didn't say.

>  -- these things should not be available while building Wine,
>     we should use the __ONLY_IN_WINELIB() like so:
>	#  define __declspec(x)   __ONLY_IN_WINELIB(__declspec_##x)
>
>  
>
Please don't do: # define __declspec(x) __ONLY_IN_WINELIB(__declspec_##x)
it will break things. See if my fix is good enough if not we can do an #else

<patch>

? windef.diff
? wine.kdevelop
Index: include/windef.h
===================================================================
RCS file: /home/wine/wine/include/windef.h,v
retrieving revision 1.89
diff -u -r1.89 windef.h
--- include/windef.h    24 Sep 2003 05:26:00 -0000    1.89
+++ include/windef.h    31 Dec 2003 09:15:15 -0000
@@ -113,14 +113,44 @@
 #define FAR         __ONLY_IN_WINELIB()
 #endif
 
+
 #ifndef _MSC_VER
-# ifndef _declspec
-#  define _declspec(x)    __ONLY_IN_WINELIB()
+
+/* works well. Some times the exact placing varies with in the statement */
+#define __declspec_selectany __attribute__((weak))
+/* ignored by GCC and is warned (supported by MinGW) */
+#define __declspec_dllexport __attribute__((dllexport))
+/* ignored by GCC and is warned (supported by MinGW) */
+#define __declspec_dllimport __attribute__((dllimport))
+/* works */
+#define __declspec_noreturn  __attribute__ ((noreturn))
+/* works */
+#define __declspec_nothrow   __attribute__ ((nothrow))
+/* works ?? */
+#define __declspec_naked     __attribute__ ((naked))
+
+/* GCC is more restrictive about placing. look for TLS in gcc & msdn 
documentation */
+#define __declspec_thread    __thread
+/* no parallel defined to nothing */
+#define __declspec_novtable
+/* Gcc only supports code ?? */
+#define __declspec_allocate(segname) __attribute__ (( section(segname) ))
+
+/* property is supported through the file pretty_com.h */
+/* property( get=get_func_name|, put=put_func_name ) */
+
+/* _declspec( uuid() )  and __uuidof are supported with code changes */
+/* see uuidof.h */
+#define __declspec_uuid(ComObjectGUID) error_SEE__uuidof_h__for_use_of_uuid
+
+# if !defined(_declspec) && !defined (__WINESRC__)
+#  define  _declspec(x)   __declspec_##x
 # endif
-# ifndef __declspec
-#  define __declspec(x)   __ONLY_IN_WINELIB()
+# if !defined(_declspec) && !defined (__WINESRC__)
+#  define __declspec(x)   __declspec_##x
 # endif
-#endif
+
+#endif //_MSC_VER
 
 #define CALLBACK    __stdcall
 #define WINAPI      __stdcall

</patch>


Free Life
Boaz




More information about the wine-devel mailing list