Thrift-1340: Add support of ARC to Objective-C
Client: Objective-c
Patch: Hirano Satoshi
Adds -objc-arc flag to compiler and if used removes the retain/release/autorelease from generated code
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1210732 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cocoa/src/transport/THTTPClient.m b/lib/cocoa/src/transport/THTTPClient.m
index 1eaa859..5617d45 100644
--- a/lib/cocoa/src/transport/THTTPClient.m
+++ b/lib/cocoa/src/transport/THTTPClient.m
@@ -19,6 +19,7 @@
#import "THTTPClient.h"
#import "TTransportException.h"
+#import "TObjective-C.h"
@implementation THTTPClient
@@ -26,7 +27,7 @@
- (void) setupRequest
{
if (mRequest != nil) {
- [mRequest release];
+ [mRequest release_stub];
}
// set up our request object that we'll use for each request
@@ -67,9 +68,9 @@
mTimeout = timeout;
if (userAgent) {
- mUserAgent = [userAgent retain];
+ mUserAgent = [userAgent retain_stub];
}
- mURL = [aURL retain];
+ mURL = [aURL retain_stub];
[self setupRequest];
@@ -82,8 +83,8 @@
- (void) setURL: (NSURL *) aURL
{
- [aURL retain];
- [mURL release];
+ [aURL retain_stub];
+ [mURL release_stub];
mURL = aURL;
[self setupRequest];
@@ -92,12 +93,12 @@
- (void) dealloc
{
- [mURL release];
- [mUserAgent release];
- [mRequest release];
- [mRequestData release];
- [mResponseData release];
- [super dealloc];
+ [mURL release_stub];
+ [mUserAgent release_stub];
+ [mRequest release_stub];
+ [mRequestData release_stub];
+ [mResponseData release_stub];
+ [super dealloc_stub];
}
@@ -151,8 +152,8 @@
}
// phew!
- [mResponseData release];
- mResponseData = [responseData retain];
+ [mResponseData release_stub];
+ mResponseData = [responseData retain_stub];
mResponseDataOffset = 0;
}
diff --git a/lib/cocoa/src/transport/TMemoryBuffer.m b/lib/cocoa/src/transport/TMemoryBuffer.m
index 869010a..c3801c7 100644
--- a/lib/cocoa/src/transport/TMemoryBuffer.m
+++ b/lib/cocoa/src/transport/TMemoryBuffer.m
@@ -19,6 +19,7 @@
#import "TMemoryBuffer.h"
#import "TTransportException.h"
+#import "TObjective-C.h"
#define GARBAGE_BUFFER_SIZE 4096 // 4KiB
@@ -61,11 +62,11 @@
}
- (NSData *)getBuffer {
- return [[mBuffer copy] autorelease];
+ return [[mBuffer copy] autorelease_stub];
}
- (void)dealloc {
- [mBuffer release];
- [super dealloc];
+ [mBuffer release_stub];
+ [super dealloc_stub];
}
@end
diff --git a/lib/cocoa/src/transport/TNSFileHandleTransport.m b/lib/cocoa/src/transport/TNSFileHandleTransport.m
index b218218..0ff200b 100644
--- a/lib/cocoa/src/transport/TNSFileHandleTransport.m
+++ b/lib/cocoa/src/transport/TNSFileHandleTransport.m
@@ -20,6 +20,7 @@
#import "TNSFileHandleTransport.h"
#import "TTransportException.h"
+#import "TObjective-C.h"
@implementation TNSFileHandleTransport
@@ -36,17 +37,17 @@
{
self = [super init];
- mInputFileHandle = [inputFileHandle retain];
- mOutputFileHandle = [outputFileHandle retain];
+ mInputFileHandle = [inputFileHandle retain_stub];
+ mOutputFileHandle = [outputFileHandle retain_stub];
return self;
}
- (void) dealloc {
- [mInputFileHandle release];
- [mOutputFileHandle release];
- [super dealloc];
+ [mInputFileHandle release_stub];
+ [mOutputFileHandle release_stub];
+ [super dealloc_stub];
}
@@ -66,9 +67,10 @@
}
-- (void) write: (uint8_t *) data offset: (unsigned int) offset length: (unsigned int) length
+- (void) write: (const uint8_t *) data offset: (unsigned int) offset length: (unsigned int) length
{
- NSData * dataObject = [[NSData alloc] initWithBytesNoCopy: data+offset
+ void *pos = (void *) data + offset;
+ NSData * dataObject = [[NSData alloc] initWithBytesNoCopy: pos // data+offset
length: length
freeWhenDone: NO];
@@ -79,7 +81,7 @@
reason: [NSString stringWithFormat: @"%s: Unable to write data: %@", __PRETTY_FUNCTION__, e]];
}
- [dataObject release];
+ [dataObject release_stub];
}
diff --git a/lib/cocoa/src/transport/TNSStreamTransport.m b/lib/cocoa/src/transport/TNSStreamTransport.m
index 1d4cfee..265e0ba 100644
--- a/lib/cocoa/src/transport/TNSStreamTransport.m
+++ b/lib/cocoa/src/transport/TNSStreamTransport.m
@@ -19,6 +19,7 @@
#import "TNSStreamTransport.h"
#import "TTransportException.h"
+#import "TObjective-C.h"
@implementation TNSStreamTransport
@@ -26,9 +27,9 @@
- (id) initWithInputStream: (NSInputStream *) input
outputStream: (NSOutputStream *) output
{
- [super init];
- mInput = [input retain];
- mOutput = [output retain];
+ self = [super init];
+ mInput = [input retain_stub];
+ mOutput = [output retain_stub];
return self;
}
@@ -44,9 +45,9 @@
- (void) dealloc
{
- [mInput release];
- [mOutput release];
- [super dealloc];
+ [mInput release_stub];
+ [mOutput release_stub];
+ [super dealloc_stub];
}
@@ -65,7 +66,7 @@
}
-- (void) write: (uint8_t *) data offset: (unsigned int) offset length: (unsigned int) length
+- (void) write: (const uint8_t *) data offset: (unsigned int) offset length: (unsigned int) length
{
int got = 0;
int result = 0;
diff --git a/lib/cocoa/src/transport/TSocketClient.h b/lib/cocoa/src/transport/TSocketClient.h
index 0ea957d..372850f 100644
--- a/lib/cocoa/src/transport/TSocketClient.h
+++ b/lib/cocoa/src/transport/TSocketClient.h
@@ -20,7 +20,11 @@
#import <Foundation/Foundation.h>
#import "TNSStreamTransport.h"
-@interface TSocketClient : TNSStreamTransport {
+@interface TSocketClient : TNSStreamTransport
+#if TARGET_OS_IPHONE || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
+<NSStreamDelegate>
+#endif
+{
}
- (id) initWithHostname: (NSString *) hostname
diff --git a/lib/cocoa/src/transport/TSocketClient.m b/lib/cocoa/src/transport/TSocketClient.m
index 74d4af9..256ecf3 100644
--- a/lib/cocoa/src/transport/TSocketClient.m
+++ b/lib/cocoa/src/transport/TSocketClient.m
@@ -17,6 +17,7 @@
* under the License.
*/
#import "TSocketClient.h"
+#import "TObjective-C.h"
#if !TARGET_OS_IPHONE
#import <CoreServices/CoreServices.h>
@@ -33,22 +34,24 @@
NSOutputStream * outputStream = NULL;
CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
- CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)hostname, port, &readStream, &writeStream);
+ CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (bridge_stub CFStringRef)hostname, port, &readStream, &writeStream);
if (readStream && writeStream) {
CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
- inputStream = (NSInputStream *)readStream;
- [inputStream retain];
+ inputStream = (bridge_stub NSInputStream *)readStream;
+ [inputStream retain_stub];
[inputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
- outputStream = (NSOutputStream *)writeStream;
- [outputStream retain];
+ outputStream = (bridge_stub NSOutputStream *)writeStream;
+ [outputStream retain_stub];
[outputStream setDelegate:self];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream open];
+ CFRelease(readStream);
+ CFRelease(writeStream);
}
self = [super initWithInputStream: inputStream outputStream: outputStream];
diff --git a/lib/cocoa/src/transport/TTransportException.m b/lib/cocoa/src/transport/TTransportException.m
index aa67149..43cdfbd 100644
--- a/lib/cocoa/src/transport/TTransportException.m
+++ b/lib/cocoa/src/transport/TTransportException.m
@@ -18,6 +18,7 @@
*/
#import "TTransportException.h"
+#import "TObjective-C.h"
@implementation TTransportException