// lets use this higher value for now for better gui debugging
#define TextStorageLowerSizeLimit 120000
+@interface HBOutputPanelController () <HBOutputRedirectListening>
+@end
+
@implementation HBOutputPanelController
/**
#import <Cocoa/Cocoa.h>
+
+@protocol HBOutputRedirectListening <NSObject>
+
+- (void)stdoutRedirect:(NSString *)text;
+- (void)stderrRedirect:(NSString *)text;
+
+@end
+
/**
* This class is used to redirect @c stdout and @c stderr outputs. It is never
* created directly; @c stdoutRedirect and @c stderrRedirect class methods
/// Pointer to old write function for the stream.
int (*oldWriteFunc)(void *, const char *, int);
-
- NSLock *lock;
}
+ (id)stdoutRedirect;
+ (id)stderrRedirect;
-- (void)addListener:(id)aListener;
-- (void)removeListener:(id)aListener;
+- (void)addListener:(id <HBOutputRedirectListening>)aListener;
+- (void)removeListener:(id <HBOutputRedirectListening>)aListener;
@end
* Adds specified object as listener for this output. Method @c stdoutRedirect:
* or @c stderrRedirect: of the listener is called to redirect the output.
*/
-- (void)addListener:(id)aListener
+- (void)addListener:(id <HBOutputRedirectListening>)aListener
{
NSAssert2([aListener respondsToSelector:forwardingSelector], @"Object %@ doesn't respond to selector \"%@\"", aListener, NSStringFromSelector(forwardingSelector));
/**
* Stops forwarding for this output to the specified listener object.
*/
-- (void)removeListener:(id)aListener
+- (void)removeListener:(id <HBOutputRedirectListening>)aListener
{
if ([listeners containsObject:aListener])
{
forwardingSelector = aSelector;
stream = aStream;
oldWriteFunc = NULL;
- lock = [[NSLock alloc] init];
}
return self;
}