X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c824f2977a2e8a502b0570c5301caa2a547833a..650ff63d999552a4758328444b22504077db998f:/src/jpeg/jmorecfg.h?ds=sidebyside diff --git a/src/jpeg/jmorecfg.h b/src/jpeg/jmorecfg.h index 5e9510042d..898c2570e9 100644 --- a/src/jpeg/jmorecfg.h +++ b/src/jpeg/jmorecfg.h @@ -157,15 +157,17 @@ typedef short INT16; /* INT32 must hold at least signed 32-bit values. */ -/* Modified JACS 23/4/99. 1200 means VC++ 6 */ -#if !defined(XMD_H) && !(_MSC_VER >= 1200) && !(__BORLANDC__ >= 0x550) /* X11/xmd.h correctly defines INT32 */ -typedef long INT32; -#endif - -/* Added JACS 23/4/99, to get INT32 definition */ -#if (_MSC_VER >= 1200) || (__BORLANDC__ >= 0x550) -#include -#endif +/* + VZ: due to the horrible mess resulting in INT32 being defined in windows.h + for some compilers but not for the other ones, I have globally replace + INT32 with JPEG_INT32 in libjpeg code to avoid the eight level ifdef + which used to be here. The problem is that, of course, now we'll have + conflicts when upgrading to the next libjpeg release -- however + considering their frequency (1 in the last 5 years) it seems that + it is not too high a price to pay for the clean compilation with all + versions of mingw32 and cygwin + */ +typedef long JPEG_INT32; /* Datatype used for image dimensions. The JPEG standard only supports * images up to 64K*64K due to 16-bit fields in SOF markers. Therefore @@ -186,25 +188,29 @@ typedef unsigned int JDIMENSION; * or code profilers that require it. */ -#if defined(__VISAGECPP__) /* need this for /common/imagjpeg.obj but not loclly */ -/* a function called through method pointers: */ -#define METHODDEF(type) static type _Optlink -/* a function used only in its module: */ -#define LOCAL(type) static type _Optlink -/* a function referenced thru EXTERNs: */ -#define GLOBAL(type) type -/* a reference to a GLOBAL function: */ -#define EXTERN(type) extern type _Optlink -#else +#if defined(__VISAGECPP__) +#define JPEG_CALLING_CONV _Optlink +#else /* !Visual Age C++ */ +#define JPEG_CALLING_CONV +#endif + +/* We can't declare a static function as extern "C" as we need to do in C++ + * programs, so suppress static in METHODDEF when using C++. + */ +#if defined(__cplusplus) +#define JPEG_METHOD_LINKAGE +#else /* !__cplusplus */ +#define JPEG_METHOD_LINKAGE static +#endif + /* a function called through method pointers: */ -#define METHODDEF(type) static type +#define METHODDEF(type) JPEG_METHOD_LINKAGE type JPEG_CALLING_CONV /* a function used only in its module: */ -#define LOCAL(type) static type +#define LOCAL(type) static type JPEG_CALLING_CONV /* a function referenced thru EXTERNs: */ #define GLOBAL(type) type /* a reference to a GLOBAL function: */ -#define EXTERN(type) extern type -#endif +#define EXTERN(type) extern type JPEG_CALLING_CONV /* This macro is used to declare a "method", that is, a function pointer. * We want to supply prototype parameters if the compiler can cope.