//
//  CRReflection.h
//  CRKit
//
//  Created by Yaroslav Glushchenko on 7/22/10.
//  Copyright 2010 Corner-A. All rights reserved.
//


//////////////////////////////////////////////////////////////////////
// Reflection
//////////////////////////////////////////////////////////////////////
@interface CRReflection : NSObject
{
	NSMutableDictionary* patched;
}

+ (CRReflection *)reflector;

- (void)printClassData:(Class)aClass;

- (SEL)swizzledSelectorFor:(SEL)originalSelector;
- (NSString *)swizzledNameFor:(NSString *)selectorName;
- (void)swizzleClass:(Class)aClass method:(SEL)originalSelector withMethod:(SEL)alternateSelector;
- (void)swizzleClass:(Class)aClass method:(SEL)originalSelector withMethodImplementation:(IMP)alternateMethod;
- (void)redirectMethod:(SEL)originalSelector inInstance:(id)sourceInstance toInstance:(id)destinationInstance;

@end