Home | History | Annotate | Download | only in cocoa
      1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_COCOA_OBJC_METHOD_SWIZZLE_H_
      6 #define CHROME_BROWSER_UI_COCOA_OBJC_METHOD_SWIZZLE_H_
      7 #pragma once
      8 
      9 #import <objc/objc-class.h>
     10 
     11 // You should think twice every single time you use anything from this
     12 // namespace.
     13 namespace ObjcEvilDoers {
     14 
     15 // This is similar to class_getInstanceMethod(), except that it
     16 // returns NULL if |aClass| does not directly implement |aSelector|.
     17 Method GetImplementedInstanceMethod(Class aClass, SEL aSelector);
     18 
     19 // Exchanges the implementation of |originalSelector| and
     20 // |alternateSelector| within |aClass|.  Both selectors must be
     21 // implemented directly by |aClass|, not inherited.  The IMP returned
     22 // is for |originalSelector| (for purposes of forwarding).
     23 IMP SwizzleImplementedInstanceMethods(
     24     Class aClass, const SEL originalSelector, const SEL alternateSelector);
     25 
     26 }  // namespace ObjcEvilDoers
     27 
     28 #endif  // CHROME_BROWSER_UI_COCOA_OBJC_METHOD_SWIZZLE_H_
     29