Title: [147641] trunk/Source/WTF
Revision
147641
Author
[email protected]
Date
2013-04-04 10:30:12 -0700 (Thu, 04 Apr 2013)

Log Message

ObjcRuntimeExtras.h should use variadic templates
https://bugs.webkit.org/show_bug.cgi?id=113941

Reviewed by Andreas Kling.

Reimplement wtfObjcMsgSend and wtfCallIMP as variadic function templates.

* wtf/ObjcRuntimeExtras.h:
(wtfObjcMsgSend):
(wtfCallIMP):

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (147640 => 147641)


--- trunk/Source/WTF/ChangeLog	2013-04-04 16:40:41 UTC (rev 147640)
+++ trunk/Source/WTF/ChangeLog	2013-04-04 17:30:12 UTC (rev 147641)
@@ -1,3 +1,16 @@
+2013-04-04  Anders Carlsson  <[email protected]>
+
+        ObjcRuntimeExtras.h should use variadic templates
+        https://bugs.webkit.org/show_bug.cgi?id=113941
+
+        Reviewed by Andreas Kling.
+
+        Reimplement wtfObjcMsgSend and wtfCallIMP as variadic function templates.
+
+        * wtf/ObjcRuntimeExtras.h:
+        (wtfObjcMsgSend):
+        (wtfCallIMP):
+
 2013-04-04  Andras Becsi  <[email protected]>
 
         Fix the build with GCC 4.8

Modified: trunk/Source/WTF/wtf/ObjcRuntimeExtras.h (147640 => 147641)


--- trunk/Source/WTF/wtf/ObjcRuntimeExtras.h	2013-04-04 16:40:41 UTC (rev 147640)
+++ trunk/Source/WTF/wtf/ObjcRuntimeExtras.h	2013-04-04 17:30:12 UTC (rev 147641)
@@ -27,82 +27,16 @@
 
 #include <objc/message.h>
 
-template<typename RetType>
-RetType wtfObjcMsgSend(id target, SEL selector)
+template<typename RetType, typename... ArgTypes>
+RetType wtfObjcMsgSend(id target, SEL selector, ArgTypes... args)
 {
-    return reinterpret_cast<RetType (*)(id, SEL)>(objc_msgSend)(target, selector);
+    return reinterpret_cast<RetType (*)(id, SEL, ArgTypes...)>(objc_msgSend)(target, selector, args...);
 }
 
-template<typename RetType, typename Arg1Type>
-RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1)
+template<typename RetType, typename... ArgTypes>
+RetType wtfCallIMP(IMP implementation, id target, SEL selector, ArgTypes... args)
 {
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type)>(objc_msgSend)(target, selector, arg1);
+    return reinterpret_cast<RetType (*)(id, SEL, ArgTypes...)>(implementation)(target, selector, args...);
 }
 
-template<typename RetType, typename Arg1Type, typename Arg2Type>
-RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type)>(objc_msgSend)(target, selector, arg1, arg2);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type>
-RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type)>(objc_msgSend)(target, selector, arg1, arg2, arg3);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type>
-RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type, Arg4Type)>(objc_msgSend)(target, selector, arg1, arg2, arg3, arg4);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type>
-RetType wtfObjcMsgSend(id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type)>(objc_msgSend)(target, selector, arg1, arg2, arg3, arg4, arg5);
-}
-
-template<typename RetType>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector)
-{
-    return reinterpret_cast<RetType (*)(id, SEL)>(implementation)(target, selector);
-}
-
-template<typename RetType, typename Arg1Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type)>(implementation)(target, selector, arg1);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1, Arg2Type arg2)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type)>(implementation)(target, selector, arg1, arg2);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type)>(implementation)(target, selector, arg1, arg2, arg3);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type, Arg4Type)>(implementation)(target, selector, arg1, arg2, arg3, arg4);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type)>(implementation)(target, selector, arg1, arg2, arg3, arg4, arg5);
-}
-
-template<typename RetType, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type, typename Arg6Type>
-RetType wtfCallIMP(IMP implementation, id target, SEL selector, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5, Arg6Type arg6)
-{
-    return reinterpret_cast<RetType (*)(id, SEL, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type)>(implementation)(target, selector, arg1, arg2, arg3, arg4, arg5, arg6);
-}
-
-#endif
+#endif // WTF_ObjcRuntimeExtras_h
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to