From: Vadim Zeitlin Date: Sun, 13 Jan 2008 01:09:40 +0000 (+0000) Subject: add useful headers for meta-programming checks (part of patch 1860953) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0fb0ecc4528966916edd520aeb2acc1a69aadd3b add useful headers for meta-programming checks (part of patch 1860953) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 80a58e33e9..d70640b0b0 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -554,6 +554,9 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/xtistrm.h wx/zipstrm.h wx/zstream.h + wx/meta/convertible.h + wx/meta/defs.h + wx/meta/int2type.h diff --git a/include/wx/meta/convertible.h b/include/wx/meta/convertible.h new file mode 100644 index 0000000000..5a826bc257 --- /dev/null +++ b/include/wx/meta/convertible.h @@ -0,0 +1,26 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/meta/convertible.h +// Purpose: Test if types are convertible +// Author: Arne Steinarson +// Created: 2008-01-10 +// RCS-ID: $Id$ +// Copyright: (c) 2008 Arne Steinarson +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_CONVERTIBLE_H_ +#define _WX_CONVERTIBLE_H_ + +// Helper to decide if an object of type D is convertible to type B (the test +// succeeds in particular when D derives from B) +template +struct wxConvertibleTo +{ + static char Match(B* pb); + static int Match(...); + + enum { value = sizeof(Match(static_cast(NULL))) == sizeof(char) }; +}; + +#endif // _WX_CONVERTIBLE_H_ + diff --git a/include/wx/meta/int2type.h b/include/wx/meta/int2type.h new file mode 100644 index 0000000000..abefe63926 --- /dev/null +++ b/include/wx/meta/int2type.h @@ -0,0 +1,17 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/meta/int2type.h +// Purpose: Generate a unique type from a constant integer +// Author: Arne Steinarson +// Created: 2008-01-10 +// RCS-ID: $Id$ +// Copyright: (c) 2008 Arne Steinarson +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_INT2TYPE_H_ +#define _WX_INT2TYPE_H_ + +template +struct wxInt2Type { enum { value=N }; }; + +#endif // _WX_INT2TYPE_H_