diff dstep/foundation/NSNetServices.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents 89f3c3ef1fd2
children b9de51448c6b
line wrap: on
line diff
--- a/dstep/foundation/NSNetServices.d	Mon Aug 03 15:31:48 2009 +0200
+++ b/dstep/foundation/NSNetServices.d	Sun Jan 03 22:06:11 2010 +0100
@@ -10,21 +10,42 @@
 import dstep.foundation.NSData;
 import dstep.foundation.NSDate;
 import dstep.foundation.NSDictionary;
-import dstep.foundation.NSInputStream;
+import dstep.foundation.NSObjCRuntime;
 import dstep.foundation.NSObject;
-import dstep.foundation.NSOutputStream;
 import dstep.foundation.NSRunLoop;
+import dstep.foundation.NSStream;
 import dstep.foundation.NSString;
 import dstep.objc.bridge.Bridge;
-import dstep.objc.objc : id;
+import dstep.objc.objc;
+
+
 
 import bindings = dstep.foundation.NSNetServices_bindings;
 
 alias NSInteger NSNetServicesError;
 alias NSUInteger NSNetServiceOptions;
 
-const NSString NSNetServicesErrorCode;
-const NSString NSNetServicesErrorDomain;
+private
+{
+	NSString NSNetServicesErrorCode_;
+	NSString NSNetServicesErrorDomain_;
+}
+
+NSString NSNetServicesErrorCode ()
+{
+	if (NSNetServicesErrorCode_)
+		return NSNetServicesErrorCode_;
+		
+	return NSNetServicesErrorCode_ = new NSString(bindings.NSNetServicesErrorCode);
+}
+
+NSString NSNetServicesErrorDomain ()
+{
+	if (NSNetServicesErrorDomain_)
+		return NSNetServicesErrorDomain_;
+		
+	return NSNetServicesErrorDomain_ = new NSString(bindings.NSNetServicesErrorDomain);
+}
 
 enum
 {
@@ -43,15 +64,125 @@
 	NSNetServiceNoAutoRename = 1 << 0
 }
 
-static this ()
-{
-	NSNetServicesErrorCode = new NSString(bindings.NSNetServicesErrorCode);
-	NSNetServicesErrorDomain = new NSString(bindings.NSNetServicesErrorDomain);
-}
+const TNSDeprecated = `
+
+	void searchForAllDomains ()
+	{
+		return invokeObjcSelf!(void, "searchForAllDomains");
+	}
+`;
+
+const TNSNetServiceDelegateMethods = `
+
+	void netServiceWillPublish (NSNetService sender)
+	{
+		return invokeObjcSelf!(void, "netServiceWillPublish:", NSNetService)(sender);
+	}
+	
+	void netServiceDidPublish (NSNetService sender)
+	{
+		return invokeObjcSelf!(void, "netServiceDidPublish:", NSNetService)(sender);
+	}
+	
+	void netService (NSNetService sender, NSDictionary errorDict)
+	{
+		return invokeObjcSelf!(void, "netService:didNotPublish:", NSNetService, NSDictionary)(sender, errorDict);
+	}
+	
+	void netServiceWillResolve (NSNetService sender)
+	{
+		return invokeObjcSelf!(void, "netServiceWillResolve:", NSNetService)(sender);
+	}
+	
+	void netServiceDidResolveAddress (NSNetService sender)
+	{
+		return invokeObjcSelf!(void, "netServiceDidResolveAddress:", NSNetService)(sender);
+	}
+	
+	void netService_didNotPublish (NSNetService sender, NSDictionary errorDict)
+	{
+		return invokeObjcSelf!(void, "netService:didNotPublish:", NSNetService, NSDictionary)(sender, errorDict);
+	}
+	
+	void netServiceDidStop (NSNetService sender)
+	{
+		return invokeObjcSelf!(void, "netServiceDidStop:", NSNetService)(sender);
+	}
+	
+	void netService (NSNetService sender, NSData data)
+	{
+		return invokeObjcSelf!(void, "netService:didUpdateTXTRecordData:", NSNetService, NSData)(sender, data);
+	}
+	
+	//mixin ObjcBindMethod!(netServiceWillPublish, "netServiceWillPublish:");
+	//mixin ObjcBindMethod!(netServiceDidPublish, "netServiceDidPublish:");
+	//mixin ObjcBindMethod!(netService, "netService:didNotPublish:");
+	//mixin ObjcBindMethod!(netServiceWillResolve, "netServiceWillResolve:");
+	//mixin ObjcBindMethod!(netServiceDidResolveAddress, "netServiceDidResolveAddress:");
+	//mixin ObjcBindMethod!(netService_didNotPublish, "netService:didNotPublish:");
+	//mixin ObjcBindMethod!(netServiceDidStop, "netServiceDidStop:");
+	//mixin ObjcBindMethod!(netService, "netService:didUpdateTXTRecordData:");
+`;
+
+const TNSNetServiceBrowserDelegateMethods = `
+
+	void netServiceBrowserWillSearch (NSNetServiceBrowser aNetServiceBrowser)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowserWillSearch:", NSNetServiceBrowser)(aNetServiceBrowser);
+	}
+	
+	void netServiceBrowserDidStopSearch (NSNetServiceBrowser aNetServiceBrowser)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowserDidStopSearch:", NSNetServiceBrowser)(aNetServiceBrowser);
+	}
+	
+	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSDictionary errorDict)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowser:didNotSearch:", NSNetServiceBrowser, NSDictionary)(aNetServiceBrowser, errorDict);
+	}
+	
+	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowser:didFindDomain:moreComing:", NSNetServiceBrowser, NSString, bool)(aNetServiceBrowser, domainString, moreComing);
+	}
+	
+	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowser:didFindService:moreComing:", NSNetServiceBrowser, NSNetService, bool)(aNetServiceBrowser, aNetService, moreComing);
+	}
+	
+	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowser:didRemoveDomain:moreComing:", NSNetServiceBrowser, NSString, bool)(aNetServiceBrowser, domainString, moreComing);
+	}
+	
+	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing)
+	{
+		return invokeObjcSelf!(void, "netServiceBrowser:didRemoveService:moreComing:", NSNetServiceBrowser, NSNetService, bool)(aNetServiceBrowser, aNetService, moreComing);
+	}
+	
+	//mixin ObjcBindMethod!(netServiceBrowserWillSearch, "netServiceBrowserWillSearch:");
+	//mixin ObjcBindMethod!(netServiceBrowserDidStopSearch, "netServiceBrowserDidStopSearch:");
+	//mixin ObjcBindMethod!(netServiceBrowser, "netServiceBrowser:didNotSearch:");
+	//mixin ObjcBindMethod!(netServiceBrowser, "netServiceBrowser:didFindDomain:moreComing:");
+	//mixin ObjcBindMethod!(netServiceBrowser, "netServiceBrowser:didFindService:moreComing:");
+	//mixin ObjcBindMethod!(netServiceBrowser, "netServiceBrowser:didRemoveDomain:moreComing:");
+	//mixin ObjcBindMethod!(netServiceBrowser, "netServiceBrowser:didRemoveService:moreComing:");
+`;
 
 class NSNetService : NSObject
 {
-	mixin ObjcWrap;
+	mixin (ObjcWrap);
+	
+	this ()
+	{
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
+	}
 
 	Object initWithDomain (NSString domain, NSString type, NSString name, int port)
 	{
@@ -60,13 +191,7 @@
 
 	this (NSString domain, NSString type, NSString name, int port)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initWithDomain:type:name:port:", NSString, NSString, NSString, int)(objcObject, domain, type, name, port);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initWithDomain(domain, type, name, port);
 	}
 
 	Object initWithDomain (NSString domain, NSString type, NSString name)
@@ -76,13 +201,7 @@
 
 	this (NSString domain, NSString type, NSString name)
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "initWithDomain:type:name:", NSString, NSString, NSString)(objcObject, domain, type, name);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		typeof(this).alloc.initWithDomain(domain, type, name);
 	}
 
 	Object delegate_ ()
@@ -152,12 +271,12 @@
 
 	static NSDictionary dictionaryFromTXTRecordData (NSData txtData)
 	{
-		return invokeObjcSelfClass!(NSDictionary, "dictionaryFromTXTRecordData:", NSData)(txtData);
+		return invokeObjcSuperClass!(NSDictionary, "dictionaryFromTXTRecordData:", NSData)(txtData);
 	}
 
 	static NSData dataFromTXTRecordDictionary (NSDictionary txtDictionary)
 	{
-		return invokeObjcSelfClass!(NSData, "dataFromTXTRecordDictionary:", NSDictionary)(txtDictionary);
+		return invokeObjcSuperClass!(NSData, "dataFromTXTRecordDictionary:", NSDictionary)(txtDictionary);
 	}
 
 	NSString hostName ()
@@ -170,9 +289,20 @@
 		return invokeObjcSelf!(void, "resolveWithTimeout:", double)(timeout);
 	}
 
-	bool getInputStream (NSInputStream** inputStream, NSOutputStream** outputStream)
+	bool getInputStream (out NSInputStream inputStream, out NSOutputStream outputStream)
 	{
-		return invokeObjcSelf!(bool, "getInputStream:outputStream:", NSInputStream**, NSOutputStream**)(inputStream, outputStream);
+		id input;
+		id output;
+		
+		bool result = invokeObjcSelf!(bool, "getInputStream:outputStream:", id*, id*)(&input, &output);
+		
+		if (input)
+			inputStream = new NSInputStream(input);
+		
+		if (output)
+			outputStream = new NSOutputStream(output);
+		
+		return result;
 	}
 
 	bool setTXTRecordData (NSData recordData)
@@ -198,23 +328,16 @@
 
 class NSNetServiceBrowser : NSObject
 {
-	mixin ObjcWrap;
-	mixin TNSDeprecated;
-
-	Object init ()
-	{
-		return invokeObjcSelf!(Object, "init");
-	}
-
+	mixin (ObjcWrap);
+	
 	this ()
 	{
-		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
-		id result = Bridge.invokeObjcMethod!(id, "init")(objcObject);
-
-		if (result)
-			objcObject = ret;
-
-		dObject = this;
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
 	}
 
 	Object delegate_ ()
@@ -256,36 +379,10 @@
 	{
 		return invokeObjcSelf!(void, "stop");
 	}
-}
-
-template TNSDeprecated ()
-{
+	
+	// TNSDeprecated
 	void searchForAllDomains ()
 	{
 		return invokeObjcSelf!(void, "searchForAllDomains");
 	}
-}
-
-template TNSNetServiceDelegateMethods ()
-{
-	void netServiceWillPublish (NSNetService sender);
-	void netServiceDidPublish (NSNetService sender);
-	void netService (NSNetService sender, NSDictionary errorDict);
-	void netServiceWillResolve (NSNetService sender);
-	void netServiceDidResolveAddress (NSNetService sender);
-	void netService (NSNetService sender, NSDictionary errorDict);
-	void netServiceDidStop (NSNetService sender);
-	void netService (NSNetService sender, NSData data);
-}
-
-template TNSNetServiceBrowserDelegateMethods ()
-{
-	void netServiceBrowserWillSearch (NSNetServiceBrowser aNetServiceBrowser);
-	void netServiceBrowserDidStopSearch (NSNetServiceBrowser aNetServiceBrowser);
-	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSDictionary errorDict);
-	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing);
-	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing);
-	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSString domainString, bool moreComing);
-	void netServiceBrowser (NSNetServiceBrowser aNetServiceBrowser, NSNetService aNetService, bool moreComing);
-}
-
+}
\ No newline at end of file