move wxSTRINGIZE and other preprocessor helpers to wx/cpp.h to fix version.rc compilation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-09-30 14:55:06 +00:00
parent b4a81453b7
commit cdd8d745c4
4 changed files with 70 additions and 52 deletions

View File

@ -370,6 +370,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/config.h
wx/convauto.h
wx/containr.h
wx/cpp.h
wx/datetime.h
wx/datstrm.h
wx/dde.h

48
include/wx/cpp.h Normal file
View File

@ -0,0 +1,48 @@
/*
* Name: wx/cpp.h
* Purpose: Various preprocessor helpers
* Author: Vadim Zeitlin
* Created: 2006-09-30
* RCS-ID: $Id$
* Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
* Licence: wxWindows licence
*/
/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
#ifndef _WX_CPP_H_
#define _WX_CPP_H_
/* wxCONCAT works like preprocessor ## operator but also works with macros */
#define wxCONCAT_HELPER(text, line) text ## line
#define wxCONCAT(text, line) wxCONCAT_HELPER(text, line)
/* wxSTRINGIZE works as the preprocessor # operator but also works with macros */
#define wxSTRINGIZE_HELPER(x) #x
#define wxSTRINGIZE(x) wxSTRINGIZE_HELPER(x)
/*
Helper macros for wxMAKE_UNIQUE_NAME: normally this works by appending the
current line number to the given identifier to reduce the probability of the
conflict (it may still happen if this is used in the headers, hence you
should avoid doing it or provide unique prefixes then) but we have to do it
differently for VC++
*/
#if defined(__VISUALC__) && (__VISUALC__ >= 1300)
/*
__LINE__ handling is completely broken in VC++ when using "Edit and
Continue" (/ZI option) and results in preprocessor errors if we use it
inside the macros. Luckily VC7 has another standard macro which can be
used like this and is even better than __LINE__ because it is globally
unique.
*/
# define wxCONCAT_LINE(text) wxCONCAT(text, __COUNTER__)
#else /* normal compilers */
# define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__)
#endif
/* Create a "unique" name with the given prefix */
#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text)
#endif // _WX_CPP_H_

View File

@ -1,13 +1,13 @@
/**
* Name: wx/defs.h
* Purpose: Declarations/definitions common to all wx source files
* Author: Julian Smart and others
* Modified by: Ryan Norton (Converted to C)
* Created: 01/02/97
* RCS-ID: $Id$
* Copyright: (c) Julian Smart
* Licence: wxWindows licence
*/
/*
* Name: wx/defs.h
* Purpose: Declarations/definitions common to all wx source files
* Author: Julian Smart and others
* Modified by: Ryan Norton (Converted to C)
* Created: 01/02/97
* RCS-ID: $Id$
* Copyright: (c) Julian Smart
* Licence: wxWindows licence
*/
/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
@ -127,19 +127,6 @@
# define wxSUPPRESS_GCC_PRIVATE_DTOR_WARNING(name)
#endif
/* ---------------------------------------------------------------------------- */
/* string manipulation helpers */
/* ---------------------------------------------------------------------------- */
/* helper macros to concatenate two tokens together */
#define wxCONCAT_HELPER(text, line) text ## line
#define wxCONCAT(text, line) wxCONCAT_HELPER(text, line)
/* helper macros to convert a token into string literal */
#define wxSTRINGIZE_HELPER(x) #x
#define wxSTRINGIZE(x) wxSTRINGIZE_HELPER(x)
/* ---------------------------------------------------------------------------- */
/* wxWidgets version and compatibility defines */
/* ---------------------------------------------------------------------------- */
@ -559,24 +546,6 @@ typedef int wxWindowID;
/* size of statically declared array */
#define WXSIZEOF(array) (sizeof(array)/sizeof(array[0]))
/* helper macros to be able to define unique/anonymous objects: this works by */
/* appending the current line number to the given identifier to reduce the */
/* probability of the conflict (it may still happen if this is used in the */
/* headers, hence you should avoid doing it or provide unique prefixes then) */
#if defined(__VISUALC__) && (__VISUALC__ >= 1300)
/*
__LINE__ handling is completely broken in VC++ when using "Edit and
Continue" (/ZI option) and results in preprocessor errors if we use it
inside the macros. Luckily VC7 has another standard macro which can be
used like this and is even better than __LINE__ because it is globally
unique.
*/
# define wxCONCAT_LINE(text) wxCONCAT(text, __COUNTER__)
#else /* normal compilers */
# define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__)
#endif
#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text)
/* symbolic constant used by all Find()-like functions returning positive */
/* integer on success as failure indicator */
#define wxNOT_FOUND (-1)

View File

@ -1,20 +1,20 @@
/**
* Name: wx/version.h
* Purpose: wxWidgets version numbers
* Author: Julian Smart
* Modified by: Ryan Norton (Converted to C)
* Created: 29/01/98
* RCS-ID: $Id$
* Copyright: (c) 1998 Julian Smart
* Licence: wxWindows licence
*/
/*
* Name: wx/version.h
* Purpose: wxWidgets version numbers
* Author: Julian Smart
* Modified by: Ryan Norton (Converted to C)
* Created: 29/01/98
* RCS-ID: $Id$
* Copyright: (c) 1998 Julian Smart
* Licence: wxWindows licence
*/
/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
#ifndef _WX_VERSION_H_
#define _WX_VERSION_H_
#include "wx/defs.h" /* for wxSTRINGIZE */
#include "wx/cpp.h" /* for wxSTRINGIZE */
/* the constants below must be changed with each new version */
/* ---------------------------------------------------------------------------- */