123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- /*
- * Copyright 2018 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /**
- * GULOriginalIMPConvenienceMacros.h
- *
- * This header contains convenience macros for invoking the original IMP of a swizzled method.
- */
- /**
- * Invokes original IMP when the original selector takes no arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- */
- #define GUL_INVOKE_ORIGINAL_IMP0(__receivingObject, __swizzledSEL, __returnType, __originalIMP) \
- ((__returnType(*)(id, SEL))__originalIMP)(__receivingObject, __swizzledSEL)
- /**
- * Invokes original IMP when the original selector takes 1 argument.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP1(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1)))__originalIMP)(__receivingObject, __swizzledSEL, \
- __arg1)
- /**
- * Invokes original IMP when the original selector takes 2 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP2(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2)
- /**
- * Invokes original IMP when the original selector takes 3 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP3(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), \
- __typeof__(__arg3)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
- __arg2, __arg3)
- /**
- * Invokes original IMP when the original selector takes 4 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP4(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4)))__originalIMP)(__receivingObject, __swizzledSEL, __arg1, \
- __arg2, __arg3, __arg4)
- /**
- * Invokes original IMP when the original selector takes 5 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- * @param __arg5 The fifth argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP5(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4, __arg5) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4), __typeof__(__arg5)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5)
- /**
- * Invokes original IMP when the original selector takes 6 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- * @param __arg5 The fifth argument.
- * @param __arg6 The sixth argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP6(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4, __arg5, __arg6) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6)
- /**
- * Invokes original IMP when the original selector takes 7 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- * @param __arg5 The fifth argument.
- * @param __arg6 The sixth argument.
- * @param __arg7 The seventh argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP7(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \
- __typeof__(__arg7)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7)
- /**
- * Invokes original IMP when the original selector takes 8 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- * @param __arg5 The fifth argument.
- * @param __arg6 The sixth argument.
- * @param __arg7 The seventh argument.
- * @param __arg8 The eighth argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP8(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \
- __typeof__(__arg7), __typeof__(__arg8)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \
- __arg8)
- /**
- * Invokes original IMP when the original selector takes 9 arguments.
- *
- * @param __receivingObject The object on which the IMP is invoked.
- * @param __swizzledSEL The selector used for swizzling.
- * @param __returnType The return type of the original implementation.
- * @param __originalIMP The original IMP.
- * @param __arg1 The first argument.
- * @param __arg2 The second argument.
- * @param __arg3 The third argument.
- * @param __arg4 The fourth argument.
- * @param __arg5 The fifth argument.
- * @param __arg6 The sixth argument.
- * @param __arg7 The seventh argument.
- * @param __arg8 The eighth argument.
- * @param __arg9 The ninth argument.
- */
- #define GUL_INVOKE_ORIGINAL_IMP9(__receivingObject, __swizzledSEL, __returnType, __originalIMP, \
- __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, __arg8, \
- __arg9) \
- ((__returnType(*)(id, SEL, __typeof__(__arg1), __typeof__(__arg2), __typeof__(__arg3), \
- __typeof__(__arg4), __typeof__(__arg5), __typeof__(__arg6), \
- __typeof__(__arg7), __typeof__(__arg8), __typeof__(__arg9)))__originalIMP)( \
- __receivingObject, __swizzledSEL, __arg1, __arg2, __arg3, __arg4, __arg5, __arg6, __arg7, \
- __arg8, __arg9)
|