fixes for METHODDEF definition

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14032 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-02-06 14:40:34 +00:00
parent 746c25ccaf
commit d7c429142d
2 changed files with 47 additions and 32 deletions

View File

@@ -53,15 +53,26 @@ extern "C"
#include <setjmp.h>
#ifdef __SALFORDC__
#ifdef FAR
#undef FAR
#endif
#endif
// we can't use METHODDEF here as it includes static yet the functions must be
// extern "C" and these can't be used together!
#undef METHODDEF
#define METHODDEF(type) extern "C" type wxC_CALLING_CONV
// ----------------------------------------------------------------------------
// types
// ----------------------------------------------------------------------------
// the standard definition of METHODDEF(type) from jmorecfg.h is "static type"
// which means that we can't declare the method functions as extern "C" - the
// compiler (rightfully) complains about the multiple storage classes in
// declaration
//
// so we only add extern "C" when using our own, modified, jmorecfg.h - and use
// whatever we have in the system headers if this is what we use hoping that it
// should be ok (can't do anything else)
#ifdef JPEG_METHOD_LINKAGE
#define CPP_METHODDEF(type) extern "C" METHODDEF(type)
#else // not using our jmorecfg.h header
#define CPP_METHODDEF(type) METHODDEF(type)
#endif
//-----------------------------------------------------------------------------
// wxJPEGHandler
@@ -84,11 +95,11 @@ typedef struct {
typedef my_source_mgr * my_src_ptr;
METHODDEF(void) my_init_source ( j_decompress_ptr WXUNUSED(cinfo) )
CPP_METHODDEF(void) my_init_source ( j_decompress_ptr WXUNUSED(cinfo) )
{
}
METHODDEF(boolean) my_fill_input_buffer ( j_decompress_ptr cinfo )
CPP_METHODDEF(boolean) my_fill_input_buffer ( j_decompress_ptr cinfo )
{
my_src_ptr src = (my_src_ptr) cinfo->src;
@@ -105,7 +116,7 @@ METHODDEF(boolean) my_fill_input_buffer ( j_decompress_ptr cinfo )
return TRUE;
}
METHODDEF(void) my_skip_input_data ( j_decompress_ptr cinfo, long num_bytes )
CPP_METHODDEF(void) my_skip_input_data ( j_decompress_ptr cinfo, long num_bytes )
{
if (num_bytes > 0)
{
@@ -121,7 +132,7 @@ METHODDEF(void) my_skip_input_data ( j_decompress_ptr cinfo, long num_bytes )
}
}
METHODDEF(void) my_term_source ( j_decompress_ptr cinfo )
CPP_METHODDEF(void) my_term_source ( j_decompress_ptr cinfo )
{
my_src_ptr src = (my_src_ptr) cinfo->src;
@@ -145,7 +156,7 @@ typedef struct my_error_mgr * my_error_ptr;
* Here's the routine that will replace the standard error_exit method:
*/
METHODDEF(void) my_error_exit (j_common_ptr cinfo)
CPP_METHODDEF(void) my_error_exit (j_common_ptr cinfo)
{
/* cinfo->err really points to a my_error_mgr struct, so coerce pointer */
my_error_ptr myerr = (my_error_ptr) cinfo->err;
@@ -254,7 +265,7 @@ typedef my_destination_mgr * my_dest_ptr;
#define OUTPUT_BUF_SIZE 4096 /* choose an efficiently fwrite'able size */
METHODDEF(void) init_destination (j_compress_ptr cinfo)
CPP_METHODDEF(void) init_destination (j_compress_ptr cinfo)
{
my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
@@ -266,7 +277,7 @@ METHODDEF(void) init_destination (j_compress_ptr cinfo)
dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
}
METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo)
CPP_METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo)
{
my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
@@ -276,7 +287,7 @@ METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo)
return TRUE;
}
METHODDEF(void) term_destination (j_compress_ptr cinfo)
CPP_METHODDEF(void) term_destination (j_compress_ptr cinfo)
{
my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;

View File

@@ -208,26 +208,30 @@ 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
/* a function called through method pointers: */
#define METHODDEF(type) static type
/* a function used only in its module: */
#define LOCAL(type) static type
/* a function referenced thru EXTERNs: */
#define GLOBAL(type) type
/* a reference to a GLOBAL function: */
#define EXTERN(type) extern type
#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) JPEG_METHOD_LINKAGE type JPEG_CALLING_CONV
/* a function used only in its module: */
#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 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.
* Note that the arglist parameter must be parenthesized!