// // Prefix header for all source files of the 'MasterPassword' target in the 'MasterPassword' project // #import #import "Pearl-Prefix.pch" #ifdef __OBJC__ #if TARGET_OS_MAC #import #else #import #endif #import #ifdef CRASHLYTICS #import #endif #if TARGET_OS_MAC #import "MPTypes.h" #import "MPMacConfig.h" #else #import "MPTypes.h" #import "MPiOSConfig.h" #endif #else #import #import #import #import #import #import #define log(level, format, ...) \ do { \ void (*_sendMsg)(id, SEL, CFStringRef, NSInteger, CFStringRef, NSUInteger, CFStringRef) = (void *)objc_msgSend; \ char *_msg = NULL; \ asprintf( &_msg, format, ##__VA_ARGS__ ); \ CFStringRef fileStr = CFStringCreateWithCString( NULL, basename( (char *)__FILE__ ), kCFStringEncodingUTF8 ); \ CFStringRef funcStr = CFStringCreateWithCString( NULL, __FUNCTION__, kCFStringEncodingUTF8 ); \ CFStringRef msgStr = CFStringCreateWithCString( NULL, _msg, kCFStringEncodingUTF8 ); \ _sendMsg( objc_msgSend( (id)objc_getClass( "PearlLogger" ), sel_getUid( "get" ) ), \ sel_getUid( "inFile:atLine:fromFunction:withLevel:text:" ), fileStr, __LINE__, funcStr, level, msgStr ); \ CFRelease( fileStr ); \ CFRelease( funcStr ); \ CFRelease( msgStr ); \ } while (0) #define trc(format, ...) log( 0, format, ##__VA_ARGS__ ); #define dbg(format, ...) log( 1, format, ##__VA_ARGS__ ); #define inf(format, ...) log( 2, format, ##__VA_ARGS__ ); #define wrn(format, ...) log( 3, format, ##__VA_ARGS__ ); #define err(format, ...) log( 4, format, ##__VA_ARGS__ ); #define ftl(format, ...) log( 5, format, ##__VA_ARGS__ ); #endif