summaryrefslogtreecommitdiffstats
path: root/ui/base
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-11 21:46:45 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-11 21:46:45 +0000
commit6fd34434d5265f8c726ef351f494a623483e66a9 (patch)
tree55e4a0aa3487c16d468f4185ff2377078190929f /ui/base
parentc5122563986223558f2584b964ca413ec39bce71 (diff)
downloadchromium_src-6fd34434d5265f8c726ef351f494a623483e66a9.zip
chromium_src-6fd34434d5265f8c726ef351f494a623483e66a9.tar.gz
chromium_src-6fd34434d5265f8c726ef351f494a623483e66a9.tar.bz2
Devirtualize CHROMEG_CALLBACK
This allows 4 classes to be completely devirtualized. For the moment, CHROMEGTK_CALLBACK is left as default virtual, since it's used throughout a lot of Widget code. BUG=103827 TEST=passes all tests Review URL: http://codereview.chromium.org/8523019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109709 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base')
-rw-r--r--ui/base/clipboard/clipboard_gtk.cc2
-rw-r--r--ui/base/glib/glib_signal.h78
-rw-r--r--ui/base/gtk/gtk_signal.h20
-rw-r--r--ui/base/x/active_window_watcher_x.h2
4 files changed, 85 insertions, 17 deletions
diff --git a/ui/base/clipboard/clipboard_gtk.cc b/ui/base/clipboard/clipboard_gtk.cc
index 19a12bc..e9af2f3 100644
--- a/ui/base/clipboard/clipboard_gtk.cc
+++ b/ui/base/clipboard/clipboard_gtk.cc
@@ -40,7 +40,7 @@ class SelectionChangeObserver {
friend struct DefaultSingletonTraits<SelectionChangeObserver>;
SelectionChangeObserver();
- virtual ~SelectionChangeObserver();
+ ~SelectionChangeObserver();
CHROMEG_CALLBACK_1(SelectionChangeObserver, GdkFilterReturn, OnXEvent,
GdkXEvent*, GdkEvent*);
diff --git a/ui/base/glib/glib_signal.h b/ui/base/glib/glib_signal.h
index 63b9306..b99a69e 100644
--- a/ui/base/glib/glib_signal.h
+++ b/ui/base/glib/glib_signal.h
@@ -26,7 +26,7 @@ typedef void* gpointer;
return reinterpret_cast<CLASS*>(userdata)->METHOD(sender); \
} \
\
- virtual RETURN METHOD(SENDER);
+ RETURN METHOD(SENDER);
#define CHROMEG_CALLBACK_1(CLASS, RETURN, METHOD, SENDER, ARG1) \
static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, \
@@ -34,7 +34,7 @@ typedef void* gpointer;
return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one); \
} \
\
- virtual RETURN METHOD(SENDER, ARG1);
+ RETURN METHOD(SENDER, ARG1);
#define CHROMEG_CALLBACK_2(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2) \
static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
@@ -42,7 +42,7 @@ typedef void* gpointer;
return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one, two); \
} \
\
- virtual RETURN METHOD(SENDER, ARG1, ARG2);
+ RETURN METHOD(SENDER, ARG1, ARG2);
#define CHROMEG_CALLBACK_3(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3) \
static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
@@ -51,7 +51,7 @@ typedef void* gpointer;
METHOD(sender, one, two, three); \
} \
\
- virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3);
+ RETURN METHOD(SENDER, ARG1, ARG2, ARG3);
#define CHROMEG_CALLBACK_4(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \
ARG4) \
@@ -62,7 +62,7 @@ typedef void* gpointer;
METHOD(sender, one, two, three, four); \
} \
\
- virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4);
+ RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4);
#define CHROMEG_CALLBACK_5(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \
ARG4, ARG5) \
@@ -73,7 +73,7 @@ typedef void* gpointer;
METHOD(sender, one, two, three, four, five); \
} \
\
- virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5);
+ RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5);
#define CHROMEG_CALLBACK_6(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6) \
@@ -84,6 +84,72 @@ typedef void* gpointer;
METHOD(sender, one, two, three, four, five, six); \
} \
\
+ RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
+
+#define CHROMEG_VIRTUAL_CALLBACK_0(CLASS, RETURN, METHOD, SENDER) \
+ static RETURN METHOD ## Thunk(SENDER sender, gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)->METHOD(sender); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER);
+
+#define CHROMEG_VIRTUAL_CALLBACK_1(CLASS, RETURN, METHOD, SENDER, ARG1) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, \
+ gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER, ARG1);
+
+#define CHROMEG_VIRTUAL_CALLBACK_2(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
+ gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)->METHOD(sender, one, two); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER, ARG1, ARG2);
+
+#define CHROMEG_VIRTUAL_CALLBACK_3(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, \
+ ARG3) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
+ ARG3 three, gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)-> \
+ METHOD(sender, one, two, three); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3);
+
+#define CHROMEG_VIRTUAL_CALLBACK_4(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, \
+ ARG3, ARG4) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
+ ARG3 three, ARG4 four, \
+ gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)-> \
+ METHOD(sender, one, two, three, four); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4);
+
+#define CHROMEG_VIRTUAL_CALLBACK_5(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, \
+ ARG3, ARG4, ARG5) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
+ ARG3 three, ARG4 four, ARG5 five, \
+ gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)-> \
+ METHOD(sender, one, two, three, four, five); \
+ } \
+ \
+ virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5);
+
+#define CHROMEG_VIRTUAL_CALLBACK_6(CLASS, RETURN, METHOD, SENDER, ARG1, ARG2, \
+ ARG3, ARG4, ARG5, ARG6) \
+ static RETURN METHOD ## Thunk(SENDER sender, ARG1 one, ARG2 two, \
+ ARG3 three, ARG4 four, ARG5 five, \
+ ARG6 six, gpointer userdata) { \
+ return reinterpret_cast<CLASS*>(userdata)-> \
+ METHOD(sender, one, two, three, four, five, six); \
+ } \
+ \
virtual RETURN METHOD(SENDER, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
#endif
diff --git a/ui/base/gtk/gtk_signal.h b/ui/base/gtk/gtk_signal.h
index a6b34cd..5a9a914 100644
--- a/ui/base/gtk/gtk_signal.h
+++ b/ui/base/gtk/gtk_signal.h
@@ -13,28 +13,30 @@ typedef struct _GtkWidget GtkWidget;
// These macros handle the common case where the sender object will be a
// GtkWidget*.
#define CHROMEGTK_CALLBACK_0(CLASS, RETURN, METHOD) \
- CHROMEG_CALLBACK_0(CLASS, RETURN, METHOD, GtkWidget*);
+ CHROMEG_VIRTUAL_CALLBACK_0(CLASS, RETURN, METHOD, GtkWidget*);
#define CHROMEGTK_CALLBACK_1(CLASS, RETURN, METHOD, ARG1) \
- CHROMEG_CALLBACK_1(CLASS, RETURN, METHOD, GtkWidget*, ARG1);
+ CHROMEG_VIRTUAL_CALLBACK_1(CLASS, RETURN, METHOD, GtkWidget*, ARG1);
#define CHROMEGTK_CALLBACK_2(CLASS, RETURN, METHOD, ARG1, ARG2) \
- CHROMEG_CALLBACK_2(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2);
+ CHROMEG_VIRTUAL_CALLBACK_2(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2);
#define CHROMEGTK_CALLBACK_3(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3) \
- CHROMEG_CALLBACK_3(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3);
+ CHROMEG_VIRTUAL_CALLBACK_3(CLASS, RETURN, METHOD, GtkWidget*, ARG1, \
+ ARG2, ARG3);
#define CHROMEGTK_CALLBACK_4(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4) \
- CHROMEG_CALLBACK_4(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, ARG4);
+ CHROMEG_VIRTUAL_CALLBACK_4(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, \
+ ARG3, ARG4);
#define CHROMEGTK_CALLBACK_5(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \
ARG5) \
- CHROMEG_CALLBACK_5(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, \
- ARG4, ARG5);
+ CHROMEG_VIRTUAL_CALLBACK_5(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, \
+ ARG3, ARG4, ARG5);
#define CHROMEGTK_CALLBACK_6(CLASS, RETURN, METHOD, ARG1, ARG2, ARG3, ARG4, \
ARG5, ARG6) \
- CHROMEG_CALLBACK_6(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, ARG3, \
- ARG4, ARG5, ARG6);
+ CHROMEG_VIRTUAL_CALLBACK_6(CLASS, RETURN, METHOD, GtkWidget*, ARG1, ARG2, \
+ ARG3, ARG4, ARG5, ARG6);
#endif // UI_BASE_GTK_GTK_SIGNAL_H_
diff --git a/ui/base/x/active_window_watcher_x.h b/ui/base/x/active_window_watcher_x.h
index 16c87a3..4fa6b65 100644
--- a/ui/base/x/active_window_watcher_x.h
+++ b/ui/base/x/active_window_watcher_x.h
@@ -43,7 +43,7 @@ class UI_EXPORT ActiveWindowWatcherX {
friend struct DefaultSingletonTraits<ActiveWindowWatcherX>;
ActiveWindowWatcherX();
- virtual ~ActiveWindowWatcherX();
+ ~ActiveWindowWatcherX();
void Init();