Mercurial > projects > dstep
view dstep/foundation/NSStream.d @ 14:89f3c3ef1fd2
Added the Foundation framework
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Mon, 03 Aug 2009 15:23:15 +0200 |
parents | |
children | 19885b43130e |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Aug 3, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.foundation.NSStream; import dstep.foundation.NSData; import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSHost; import dstep.foundation.NSInputStream; import dstep.foundation.NSObject; import dstep.foundation.NSOutputStream; import dstep.foundation.NSRunLoop; import dstep.foundation.NSString; import dstep.objc.bridge.Bridge; import dstep.objc.objc : id; import bindings = dstep.foundation.NSStream_bindings; alias NSUInteger NSStreamStatus; alias NSUInteger NSStreamEvent; const NSString NSStreamSocketSecurityLevelKey; const NSString NSStreamSocketSecurityLevelNone; const NSString NSStreamSocketSecurityLevelSSLv2; const NSString NSStreamSocketSecurityLevelSSLv3; const NSString NSStreamSocketSecurityLevelTLSv1; const NSString NSStreamSocketSecurityLevelNegotiatedSSL; const NSString NSStreamSOCKSProxyConfigurationKey; const NSString NSStreamSOCKSProxyHostKey; const NSString NSStreamSOCKSProxyPortKey; const NSString NSStreamSOCKSProxyVersionKey; const NSString NSStreamSOCKSProxyUserKey; const NSString NSStreamSOCKSProxyPasswordKey; const NSString NSStreamSOCKSProxyVersion4; const NSString NSStreamSOCKSProxyVersion5; const NSString NSStreamDataWrittenToMemoryStreamKey; const NSString NSStreamFileCurrentOffsetKey; const NSString NSStreamSocketSSLErrorDomain; const NSString NSStreamSOCKSErrorDomain; enum { NSStreamStatusNotOpen = 0, NSStreamStatusOpening = 1, NSStreamStatusOpen = 2, NSStreamStatusReading = 3, NSStreamStatusWriting = 4, NSStreamStatusAtEnd = 5, NSStreamStatusClosed = 6, NSStreamStatusError = 7 } enum { NSStreamEventNone = 0, NSStreamEventOpenCompleted = 1 << 0, NSStreamEventHasBytesAvailable = 1 << 1, NSStreamEventHasSpaceAvailable = 1 << 2, NSStreamEventErrorOccurred = 1 << 3, NSStreamEventEndEncountered = 1 << 4 } static this () { NSStreamSocketSecurityLevelKey = new NSString(bindings.NSStreamSocketSecurityLevelKey); NSStreamSocketSecurityLevelNone = new NSString(bindings.NSStreamSocketSecurityLevelNone); NSStreamSocketSecurityLevelSSLv2 = new NSString(bindings.NSStreamSocketSecurityLevelSSLv2); NSStreamSocketSecurityLevelSSLv3 = new NSString(bindings.NSStreamSocketSecurityLevelSSLv3); NSStreamSocketSecurityLevelTLSv1 = new NSString(bindings.NSStreamSocketSecurityLevelTLSv1); NSStreamSocketSecurityLevelNegotiatedSSL = new NSString(bindings.NSStreamSocketSecurityLevelNegotiatedSSL); NSStreamSOCKSProxyConfigurationKey = new NSString(bindings.NSStreamSOCKSProxyConfigurationKey); NSStreamSOCKSProxyHostKey = new NSString(bindings.NSStreamSOCKSProxyHostKey); NSStreamSOCKSProxyPortKey = new NSString(bindings.NSStreamSOCKSProxyPortKey); NSStreamSOCKSProxyVersionKey = new NSString(bindings.NSStreamSOCKSProxyVersionKey); NSStreamSOCKSProxyUserKey = new NSString(bindings.NSStreamSOCKSProxyUserKey); NSStreamSOCKSProxyPasswordKey = new NSString(bindings.NSStreamSOCKSProxyPasswordKey); NSStreamSOCKSProxyVersion4 = new NSString(bindings.NSStreamSOCKSProxyVersion4); NSStreamSOCKSProxyVersion5 = new NSString(bindings.NSStreamSOCKSProxyVersion5); NSStreamDataWrittenToMemoryStreamKey = new NSString(bindings.NSStreamDataWrittenToMemoryStreamKey); NSStreamFileCurrentOffsetKey = new NSString(bindings.NSStreamFileCurrentOffsetKey); NSStreamSocketSSLErrorDomain = new NSString(bindings.NSStreamSocketSSLErrorDomain); NSStreamSOCKSErrorDomain = new NSString(bindings.NSStreamSOCKSErrorDomain); } class NSStream : NSObject { mixin ObjcWrap; mixin TNSSocketStreamCreationExtensions; void open () { return invokeObjcSelf!(void, "open"); } void close () { return invokeObjcSelf!(void, "close"); } Object delegate_ () { return invokeObjcSelf!(Object, "delegate"); } void setDelegate (Object delegate_) { return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_); } Object propertyForKey (NSString key) { return invokeObjcSelf!(Object, "propertyForKey:", NSString)(key); } bool setProperty (Object property, NSString key) { return invokeObjcSelf!(bool, "setProperty:forKey:", Object, NSString)(property, key); } void scheduleInRunLoop (NSRunLoop aRunLoop, NSString mode) { return invokeObjcSelf!(void, "scheduleInRunLoop:forMode:", NSRunLoop, NSString)(aRunLoop, mode); } void removeFromRunLoop (NSRunLoop aRunLoop, NSString mode) { return invokeObjcSelf!(void, "removeFromRunLoop:forMode:", NSRunLoop, NSString)(aRunLoop, mode); } uint streamStatus () { return invokeObjcSelf!(uint, "streamStatus"); } NSError streamError () { return invokeObjcSelf!(NSError, "streamError"); } } class NSOutputStream : NSStream { mixin ObjcWrap; mixin TNSOutputStreamExtensions; NSInteger write (char* buffer, NSUInteger len) { return invokeObjcSelf!(NSInteger, "write:maxLength:", char*, NSUInteger)(buffer, len); } bool hasSpaceAvailable () { return invokeObjcSelf!(bool, "hasSpaceAvailable"); } } class NSInputStream : NSStream { mixin ObjcWrap; mixin TNSInputStreamExtensions; NSInteger read (char* buffer, NSUInteger len) { return invokeObjcSelf!(NSInteger, "read:maxLength:", char*, NSUInteger)(buffer, len); } bool getBuffer (uint8_t** buffer, NSUInteger* len) { return invokeObjcSelf!(bool, "getBuffer:length:", uint8_t**, NSUInteger*)(buffer, len); } bool hasBytesAvailable () { return invokeObjcSelf!(bool, "hasBytesAvailable"); } } template TNSStreamDelegateEventExtensions () { void stream (NSStream aStream, uint eventCode); } template TNSOutputStreamExtensions () { Object initToMemory () { return invokeObjcSelf!(Object, "initToMemory"); } this () { objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); id result = Bridge.invokeObjcMethod!(id, "initToMemory")(objcObject); if (result) objcObject = ret; dObject = this; } Object initToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSelf!(Object, "initToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } this (char* buffer, NSUInteger capacity) { objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); id result = Bridge.invokeObjcMethod!(id, "initToBuffer:capacity:", char*, NSUInteger)(objcObject, buffer, capacity); if (result) objcObject = ret; dObject = this; } Object initToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSelf!(Object, "initToFileAtPath:append:", NSString, bool)(path, shouldAppend); } this (NSString path, bool shouldAppend) { objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); id result = Bridge.invokeObjcMethod!(id, "initToFileAtPath:append:", NSString, bool)(objcObject, path, shouldAppend); if (result) objcObject = ret; dObject = this; } static Object outputStreamToMemory () { return invokeObjcSelfClass!(Object, "outputStreamToMemory"); } static Object outputStreamToBuffer (char* buffer, NSUInteger capacity) { return invokeObjcSelfClass!(Object, "outputStreamToBuffer:capacity:", char*, NSUInteger)(buffer, capacity); } static Object outputStreamToFileAtPath (NSString path, bool shouldAppend) { return invokeObjcSelfClass!(Object, "outputStreamToFileAtPath:append:", NSString, bool)(path, shouldAppend); } } template TNSSocketStreamCreationExtensions () { static void getStreamsToHost (NSHost host, NSInteger port, NSInputStream** inputStream, NSOutputStream** outputStream) { return invokeObjcSelfClass!(void, "getStreamsToHost:port:inputStream:outputStream:", NSHost, NSInteger, NSInputStream**, NSOutputStream**)(host, port, inputStream, outputStream); } } template TNSInputStreamExtensions () { Object initWithData (NSData data) { return invokeObjcSelf!(Object, "initWithData:", NSData)(data); } this (NSData data) { objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); id result = Bridge.invokeObjcMethod!(id, "initWithData:", NSData)(objcObject, data); if (result) objcObject = ret; dObject = this; } Object initWithFileAtPath (NSString path) { return invokeObjcSelf!(Object, "initWithFileAtPath:", NSString)(path); } this (NSString path) { objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); id result = Bridge.invokeObjcMethod!(id, "initWithFileAtPath:", NSString)(objcObject, path); if (result) objcObject = ret; dObject = this; } static Object inputStreamWithData (NSData data) { return invokeObjcSelfClass!(Object, "inputStreamWithData:", NSData)(data); } static Object inputStreamWithFileAtPath (NSString path) { return invokeObjcSelfClass!(Object, "inputStreamWithFileAtPath:", NSString)(path); } }