]> git.saurik.com Git - wxWidgets.git/commitdiff
add useful headers for meta-programming checks (part of patch 1860953)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 13 Jan 2008 01:09:40 +0000 (01:09 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 13 Jan 2008 01:09:40 +0000 (01:09 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

build/bakefiles/files.bkl
include/wx/meta/convertible.h [new file with mode: 0644]
include/wx/meta/int2type.h [new file with mode: 0644]

index 80a58e33e9738a9873ad228db3608893db61c2b1..d70640b0b03c229c6ae06ef2af0f4a6fc307a090 100644 (file)
@@ -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
 </set>
 
 
diff --git a/include/wx/meta/convertible.h b/include/wx/meta/convertible.h
new file mode 100644 (file)
index 0000000..5a826bc
--- /dev/null
@@ -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 <class D, class B>
+struct wxConvertibleTo
+{
+    static char Match(B* pb);
+    static int Match(...);
+
+    enum { value = sizeof(Match(static_cast<D*>(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 (file)
index 0000000..abefe63
--- /dev/null
@@ -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 <int N>
+struct wxInt2Type { enum { value=N }; };
+
+#endif // _WX_INT2TYPE_H_