--- /dev/null
+/*
+ * 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_
+
-/**
-* 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 */
# 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 */
/* ---------------------------------------------------------------------------- */
/* 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)
-/**
-* 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 */
/* ---------------------------------------------------------------------------- */