Mercurial > projects > dstep
diff dstep/foundation/NSString.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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/foundation/NSString.d Mon Aug 03 15:23:15 2009 +0200 @@ -0,0 +1,1035 @@ +/** + * 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.NSString; + +import dstep.foundation.NSArray; +import dstep.foundation.NSCharacterSet; +import dstep.foundation.NSData; +import dstep.foundation.NSDictionary; +import dstep.foundation.NSError; +import dstep.foundation.NSLocale; +import dstep.foundation.NSObject; +import dstep.foundation.NSRange; +import dstep.foundation.NSURL; +import dstep.limits; +import dstep.objc.bridge.Bridge; +import dstep.objc.objc : id; +import dstep.stdarg; + +import bindings = dstep.foundation.NSString_bindings; + +alias ushort unichar; +alias NSUInteger NSStringCompareOptions; +alias NSUInteger NSStringEncoding; +alias NSUInteger NSStringEncodingConversionOptions; + +const NSString NSParseErrorException; +const NSString NSCharacterConversionException; + +enum +{ + NSCaseInsensitiveSearch = 1, + NSLiteralSearch = 2, + NSBackwardsSearch = 4, + NSAnchoredSearch = 8, + NSNumericSearch = 64, + NSDiacriticInsensitiveSearch = 128, + NSWidthInsensitiveSearch = 256, + NSForcedOrderingSearch = 512 +} + +enum +{ + NSASCIIStringEncoding = 1, + NSNEXTSTEPStringEncoding = 2, + NSJapaneseEUCStringEncoding = 3, + NSUTF8StringEncoding = 4, + NSISOLatin1StringEncoding = 5, + NSSymbolStringEncoding = 6, + NSNonLossyASCIIStringEncoding = 7, + NSShiftJISStringEncoding = 8, + NSISOLatin2StringEncoding = 9, + NSUnicodeStringEncoding = 10, + NSWindowsCP1251StringEncoding = 11, + NSWindowsCP1252StringEncoding = 12, + NSWindowsCP1253StringEncoding = 13, + NSWindowsCP1254StringEncoding = 14, + NSWindowsCP1250StringEncoding = 15, + NSISO2022JPStringEncoding = 21, + NSMacOSRomanStringEncoding = 30, + NSUTF16StringEncoding = NSUnicodeStringEncoding, + NSUTF16BigEndianStringEncoding = 0x90000100, + NSUTF16LittleEndianStringEncoding = 0x94000100, + NSUTF32StringEncoding = 0x8c000100, + NSUTF32BigEndianStringEncoding = 0x98000100, + NSUTF32LittleEndianStringEncoding = 0x9c000100 +} + +enum +{ + NSStringEncodingConversionAllowLossy = 1, + NSStringEncodingConversionExternalRepresentation = 2 +} + +static this () +{ + NSParseErrorException = new NSString(bindings.NSParseErrorException); + NSCharacterConversionException = new NSString(bindings.NSCharacterConversionException); +} + +class NSMutableString : NSString +{ + mixin ObjcWrap; + mixin TNSMutableStringExtensionMethods; + + void replaceCharactersInRange (NSRange range, NSString aString) + { + return invokeObjcSelf!(void, "replaceCharactersInRange:withString:", NSRange, NSString)(range, aString); + } +} + +class NSString : NSObject, INSCopying, INSMutableCopying, INSCoding +{ + mixin ObjcWrap; + mixin TNSExtendedStringPropertyListParsing; + mixin TNSStringExtensionMethods; + mixin TNSStringPathExtensions; + mixin TNSURLUtilities; + mixin TNSStringDeprecated; + + NSUInteger length () + { + return invokeObjcSelf!(NSUInteger, "length"); + } + + ushort characterAtIndex (NSUInteger index) + { + return invokeObjcSelf!(ushort, "characterAtIndex:", NSUInteger)(index); + } + + Object copyWithZone (NSZone* zone) + { + return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone); + } + + Object mutableCopyWithZone (NSZone* zone) + { + return invokeObjcSelf!(Object, "mutableCopyWithZone:", NSZone*)(zone); + } + + void encodeWithCoder (NSCoder aCoder) + { + return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); + } + + Object initWithCoder (NSCoder aDecoder) + { + return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder); + } + + this (NSCoder aDecoder) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder); + + if (result) + objcObject = ret; + + dObject = this; + } +} + +template TNSExtendedStringPropertyListParsing () +{ + Object propertyList () + { + return invokeObjcSelf!(Object, "propertyList"); + } + + NSDictionary propertyListFromStringsFileFormat () + { + return invokeObjcSelf!(NSDictionary, "propertyListFromStringsFileFormat"); + } +} + +template TNSMutableStringExtensionMethods () +{ + void insertString (NSString aString, NSUInteger loc) + { + return invokeObjcSelf!(void, "insertString:atIndex:", NSString, NSUInteger)(aString, loc); + } + + void deleteCharactersInRange (NSRange range) + { + return invokeObjcSelf!(void, "deleteCharactersInRange:", NSRange)(range); + } + + void appendString (NSString aString) + { + return invokeObjcSelf!(void, "appendString:", NSString)(aString); + } + + void appendFormat (NSString appendFormat, ...) + { + return invokeObjcSelf!(void, "appendFormat:", NSString)(appendFormat); + } + + void setString (NSString aString) + { + return invokeObjcSelf!(void, "setString:", NSString)(aString); + } + + Object initWithCapacity (NSUInteger capacity) + { + return invokeObjcSelf!(Object, "initWithCapacity:", NSUInteger)(capacity); + } + + this (NSUInteger capacity) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCapacity:", NSUInteger)(objcObject, capacity); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithCapacity (NSUInteger capacity) + { + return invokeObjcSelfClass!(Object, "stringWithCapacity:", NSUInteger)(capacity); + } + + NSUInteger replaceOccurrencesOfString (NSString target, NSString replacement, uint options, NSRange searchRange) + { + return invokeObjcSelf!(NSUInteger, "replaceOccurrencesOfString:withString:options:range:", NSString, NSString, uint, NSRange)(target, replacement, options, searchRange); + } +} + +template TNSStringExtensionMethods () +{ + void getCharacters (unichar* buffer) + { + return invokeObjcSelf!(void, "getCharacters:", unichar*)(buffer); + } + + void getCharacters (unichar* buffer, NSRange aRange) + { + return invokeObjcSelf!(void, "getCharacters:range:", unichar*, NSRange)(buffer, aRange); + } + + NSString substringFromIndex (NSUInteger from) + { + return invokeObjcSelf!(NSString, "substringFromIndex:", NSUInteger)(from); + } + + NSString substringToIndex (NSUInteger to) + { + return invokeObjcSelf!(NSString, "substringToIndex:", NSUInteger)(to); + } + + NSString substringWithRange (NSRange range) + { + return invokeObjcSelf!(NSString, "substringWithRange:", NSRange)(range); + } + + int compare (NSString string) + { + return invokeObjcSelf!(int, "compare:", NSString)(string); + } + + int compare (NSString string, uint mask) + { + return invokeObjcSelf!(int, "compare:options:", NSString, uint)(string, mask); + } + + int compare (NSString string, uint mask, NSRange compareRange) + { + return invokeObjcSelf!(int, "compare:options:range:", NSString, uint, NSRange)(string, mask, compareRange); + } + + int compare (NSString string, uint mask, NSRange compareRange, Object locale) + { + return invokeObjcSelf!(int, "compare:options:range:locale:", NSString, uint, NSRange, Object)(string, mask, compareRange, locale); + } + + int caseInsensitiveCompare (NSString string) + { + return invokeObjcSelf!(int, "caseInsensitiveCompare:", NSString)(string); + } + + int localizedCompare (NSString string) + { + return invokeObjcSelf!(int, "localizedCompare:", NSString)(string); + } + + int localizedCaseInsensitiveCompare (NSString string) + { + return invokeObjcSelf!(int, "localizedCaseInsensitiveCompare:", NSString)(string); + } + + bool isEqualToString (NSString aString) + { + return invokeObjcSelf!(bool, "isEqualToString:", NSString)(aString); + } + + bool hasPrefix (NSString aString) + { + return invokeObjcSelf!(bool, "hasPrefix:", NSString)(aString); + } + + bool hasSuffix (NSString aString) + { + return invokeObjcSelf!(bool, "hasSuffix:", NSString)(aString); + } + + NSRange rangeOfString (NSString aString) + { + return invokeObjcSelf!(NSRange, "rangeOfString:", NSString)(aString); + } + + NSRange rangeOfString (NSString aString, uint mask) + { + return invokeObjcSelf!(NSRange, "rangeOfString:options:", NSString, uint)(aString, mask); + } + + NSRange rangeOfString (NSString aString, uint mask, NSRange searchRange) + { + return invokeObjcSelf!(NSRange, "rangeOfString:options:range:", NSString, uint, NSRange)(aString, mask, searchRange); + } + + NSRange rangeOfString (NSString aString, uint mask, NSRange searchRange, NSLocale locale) + { + return invokeObjcSelf!(NSRange, "rangeOfString:options:range:locale:", NSString, uint, NSRange, NSLocale)(aString, mask, searchRange, locale); + } + + NSRange rangeOfCharacterFromSet (NSCharacterSet aSet) + { + return invokeObjcSelf!(NSRange, "rangeOfCharacterFromSet:", NSCharacterSet)(aSet); + } + + NSRange rangeOfCharacterFromSet (NSCharacterSet aSet, uint mask) + { + return invokeObjcSelf!(NSRange, "rangeOfCharacterFromSet:options:", NSCharacterSet, uint)(aSet, mask); + } + + NSRange rangeOfCharacterFromSet (NSCharacterSet aSet, uint mask, NSRange searchRange) + { + return invokeObjcSelf!(NSRange, "rangeOfCharacterFromSet:options:range:", NSCharacterSet, uint, NSRange)(aSet, mask, searchRange); + } + + NSRange rangeOfComposedCharacterSequenceAtIndex (NSUInteger index) + { + return invokeObjcSelf!(NSRange, "rangeOfComposedCharacterSequenceAtIndex:", NSUInteger)(index); + } + + NSRange rangeOfComposedCharacterSequencesForRange (NSRange range) + { + return invokeObjcSelf!(NSRange, "rangeOfComposedCharacterSequencesForRange:", NSRange)(range); + } + + NSString stringByAppendingString (NSString aString) + { + return invokeObjcSelf!(NSString, "stringByAppendingString:", NSString)(aString); + } + + NSString stringByAppendingFormat (NSString stringByAppendingFormat, ...) + { + return invokeObjcSelf!(NSString, "stringByAppendingFormat:", NSString)(stringByAppendingFormat); + } + + double doubleValue () + { + return invokeObjcSelf!(double, "doubleValue"); + } + + float floatValue () + { + return invokeObjcSelf!(float, "floatValue"); + } + + int intValue () + { + return invokeObjcSelf!(int, "intValue"); + } + + NSInteger integerValue () + { + return invokeObjcSelf!(NSInteger, "integerValue"); + } + + long longLongValue () + { + return invokeObjcSelf!(long, "longLongValue"); + } + + bool boolValue () + { + return invokeObjcSelf!(bool, "boolValue"); + } + + NSArray componentsSeparatedByString (NSString separator) + { + return invokeObjcSelf!(NSArray, "componentsSeparatedByString:", NSString)(separator); + } + + NSArray componentsSeparatedByCharactersInSet (NSCharacterSet separator) + { + return invokeObjcSelf!(NSArray, "componentsSeparatedByCharactersInSet:", NSCharacterSet)(separator); + } + + NSString commonPrefixWithString (NSString aString, uint mask) + { + return invokeObjcSelf!(NSString, "commonPrefixWithString:options:", NSString, uint)(aString, mask); + } + + NSString uppercaseString () + { + return invokeObjcSelf!(NSString, "uppercaseString"); + } + + NSString lowercaseString () + { + return invokeObjcSelf!(NSString, "lowercaseString"); + } + + NSString capitalizedString () + { + return invokeObjcSelf!(NSString, "capitalizedString"); + } + + NSString stringByTrimmingCharactersInSet (NSCharacterSet set) + { + return invokeObjcSelf!(NSString, "stringByTrimmingCharactersInSet:", NSCharacterSet)(set); + } + + NSString stringByPaddingToLength (NSUInteger newLength, NSString padString, NSUInteger padIndex) + { + return invokeObjcSelf!(NSString, "stringByPaddingToLength:withString:startingAtIndex:", NSUInteger, NSString, NSUInteger)(newLength, padString, padIndex); + } + + void getLineStart (NSUInteger* startPtr, NSUInteger* lineEndPtr, NSUInteger* contentsEndPtr, NSRange range) + { + return invokeObjcSelf!(void, "getLineStart:end:contentsEnd:forRange:", NSUInteger*, NSUInteger*, NSUInteger*, NSRange)(startPtr, lineEndPtr, contentsEndPtr, range); + } + + NSRange lineRangeForRange (NSRange range) + { + return invokeObjcSelf!(NSRange, "lineRangeForRange:", NSRange)(range); + } + + void getParagraphStart (NSUInteger* startPtr, NSUInteger* parEndPtr, NSUInteger* contentsEndPtr, NSRange range) + { + return invokeObjcSelf!(void, "getParagraphStart:end:contentsEnd:forRange:", NSUInteger*, NSUInteger*, NSUInteger*, NSRange)(startPtr, parEndPtr, contentsEndPtr, range); + } + + NSRange paragraphRangeForRange (NSRange range) + { + return invokeObjcSelf!(NSRange, "paragraphRangeForRange:", NSRange)(range); + } + + NSString description () + { + return invokeObjcSelf!(NSString, "description"); + } + + NSUInteger hash () + { + return invokeObjcSelf!(NSUInteger, "hash"); + } + + uint fastestEncoding () + { + return invokeObjcSelf!(uint, "fastestEncoding"); + } + + uint smallestEncoding () + { + return invokeObjcSelf!(uint, "smallestEncoding"); + } + + NSData dataUsingEncoding (uint encoding, bool lossy) + { + return invokeObjcSelf!(NSData, "dataUsingEncoding:allowLossyConversion:", uint, bool)(encoding, lossy); + } + + NSData dataUsingEncoding (uint encoding) + { + return invokeObjcSelf!(NSData, "dataUsingEncoding:", uint)(encoding); + } + + bool canBeConvertedToEncoding (uint encoding) + { + return invokeObjcSelf!(bool, "canBeConvertedToEncoding:", uint)(encoding); + } + + char* cStringUsingEncoding (uint encoding) + { + return invokeObjcSelf!(char*, "cStringUsingEncoding:", uint)(encoding); + } + + bool getCString (char* buffer, NSUInteger maxBufferCount, uint encoding) + { + return invokeObjcSelf!(bool, "getCString:maxLength:encoding:", char*, NSUInteger, uint)(buffer, maxBufferCount, encoding); + } + + bool getBytes (void* buffer, NSUInteger maxBufferCount, NSUInteger* usedBufferCount, uint encoding, uint options, NSRange range, NSRangePointer leftover) + { + return invokeObjcSelf!(bool, "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:", void*, NSUInteger, NSUInteger*, uint, uint, NSRange, NSRangePointer)(buffer, maxBufferCount, usedBufferCount, encoding, options, range, leftover); + } + + NSUInteger maximumLengthOfBytesUsingEncoding (uint enc) + { + return invokeObjcSelf!(NSUInteger, "maximumLengthOfBytesUsingEncoding:", uint)(enc); + } + + NSUInteger lengthOfBytesUsingEncoding (uint enc) + { + return invokeObjcSelf!(NSUInteger, "lengthOfBytesUsingEncoding:", uint)(enc); + } + + NSString decomposedStringWithCanonicalMapping () + { + return invokeObjcSelf!(NSString, "decomposedStringWithCanonicalMapping"); + } + + NSString precomposedStringWithCanonicalMapping () + { + return invokeObjcSelf!(NSString, "precomposedStringWithCanonicalMapping"); + } + + NSString decomposedStringWithCompatibilityMapping () + { + return invokeObjcSelf!(NSString, "decomposedStringWithCompatibilityMapping"); + } + + NSString precomposedStringWithCompatibilityMapping () + { + return invokeObjcSelf!(NSString, "precomposedStringWithCompatibilityMapping"); + } + + NSString stringByFoldingWithOptions (uint options, NSLocale locale) + { + return invokeObjcSelf!(NSString, "stringByFoldingWithOptions:locale:", uint, NSLocale)(options, locale); + } + + NSString stringByReplacingOccurrencesOfString (NSString target, NSString replacement, uint options, NSRange searchRange) + { + return invokeObjcSelf!(NSString, "stringByReplacingOccurrencesOfString:withString:options:range:", NSString, NSString, uint, NSRange)(target, replacement, options, searchRange); + } + + NSString stringByReplacingOccurrencesOfString (NSString target, NSString replacement) + { + return invokeObjcSelf!(NSString, "stringByReplacingOccurrencesOfString:withString:", NSString, NSString)(target, replacement); + } + + NSString stringByReplacingCharactersInRange (NSRange range, NSString replacement) + { + return invokeObjcSelf!(NSString, "stringByReplacingCharactersInRange:withString:", NSRange, NSString)(range, replacement); + } + + char* UTF8String () + { + return invokeObjcSelf!(char*, "UTF8String"); + } + + static uint defaultCStringEncoding () + { + return invokeObjcSelfClass!(uint, "defaultCStringEncoding"); + } + + static NSStringEncoding* availableStringEncodings () + { + return invokeObjcSelfClass!(NSStringEncoding*, "availableStringEncodings"); + } + + static NSString localizedNameOfStringEncoding (uint encoding) + { + return invokeObjcSelfClass!(NSString, "localizedNameOfStringEncoding:", uint)(encoding); + } + + Object init () + { + return invokeObjcSelf!(Object, "init"); + } + + this () + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "init")(objcObject); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithCharactersNoCopy (unichar* characters, NSUInteger length, bool freeBuffer) + { + return invokeObjcSelf!(Object, "initWithCharactersNoCopy:length:freeWhenDone:", unichar*, NSUInteger, bool)(characters, length, freeBuffer); + } + + this (unichar* characters, NSUInteger length, bool freeBuffer) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCharactersNoCopy:length:freeWhenDone:", unichar*, NSUInteger, bool)(objcObject, characters, length, freeBuffer); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithCharacters (unichar* characters, NSUInteger length) + { + return invokeObjcSelf!(Object, "initWithCharacters:length:", unichar*, NSUInteger)(characters, length); + } + + this (unichar* characters, NSUInteger length) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCharacters:length:", unichar*, NSUInteger)(objcObject, characters, length); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithUTF8String (char* nullTerminatedCString) + { + return invokeObjcSelf!(Object, "initWithUTF8String:", char*)(nullTerminatedCString); + } + + this (char* nullTerminatedCString) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithUTF8String:", char*)(objcObject, nullTerminatedCString); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithString (NSString aString) + { + return invokeObjcSelf!(Object, "initWithString:", NSString)(aString); + } + + this (NSString aString) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, aString); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithFormat (NSString initWithFormat, ...) + { + return invokeObjcSelf!(Object, "initWithFormat:", NSString)(initWithFormat); + } + + this (NSString initWithFormat, ...) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithFormat:", NSString)(objcObject, initWithFormat); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithFormat (NSString format, char* argList) + { + return invokeObjcSelf!(Object, "initWithFormat:arguments:", NSString, char*)(format, argList); + } + + this (NSString format, char* argList) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithFormat:arguments:", NSString, char*)(objcObject, format, argList); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithFormat (NSString format, Object locale, ...) + { + return invokeObjcSelf!(Object, "initWithFormat:locale:", NSString, Object)(format, locale); + } + + this (NSString format, Object locale, ...) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithFormat:locale:", NSString, Object)(objcObject, format, locale); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithFormat (NSString format, Object locale, char* argList) + { + return invokeObjcSelf!(Object, "initWithFormat:locale:arguments:", NSString, Object, char*)(format, locale, argList); + } + + this (NSString format, Object locale, char* argList) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithFormat:locale:arguments:", NSString, Object, char*)(objcObject, format, locale, argList); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithData (NSData data, uint encoding) + { + return invokeObjcSelf!(Object, "initWithData:encoding:", NSData, uint)(data, encoding); + } + + this (NSData data, uint encoding) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithData:encoding:", NSData, uint)(objcObject, data, encoding); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithBytes (void* bytes, NSUInteger len, uint encoding) + { + return invokeObjcSelf!(Object, "initWithBytes:length:encoding:", void*, NSUInteger, uint)(bytes, len, encoding); + } + + this (void* bytes, NSUInteger len, uint encoding) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithBytes:length:encoding:", void*, NSUInteger, uint)(objcObject, bytes, len, encoding); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithBytesNoCopy (void* bytes, NSUInteger len, uint encoding, bool freeBuffer) + { + return invokeObjcSelf!(Object, "initWithBytesNoCopy:length:encoding:freeWhenDone:", void*, NSUInteger, uint, bool)(bytes, len, encoding, freeBuffer); + } + + this (void* bytes, NSUInteger len, uint encoding, bool freeBuffer) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithBytesNoCopy:length:encoding:freeWhenDone:", void*, NSUInteger, uint, bool)(objcObject, bytes, len, encoding, freeBuffer); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object string () + { + return invokeObjcSelfClass!(Object, "string"); + } + + static Object stringWithString (NSString string) + { + return invokeObjcSelfClass!(Object, "stringWithString:", NSString)(string); + } + + static Object stringWithCharacters (unichar* characters, NSUInteger length) + { + return invokeObjcSelfClass!(Object, "stringWithCharacters:length:", unichar*, NSUInteger)(characters, length); + } + + static Object stringWithUTF8String (char* nullTerminatedCString) + { + return invokeObjcSelfClass!(Object, "stringWithUTF8String:", char*)(nullTerminatedCString); + } + + static Object stringWithFormat (NSString stringWithFormat, ...) + { + return invokeObjcSelfClass!(Object, "stringWithFormat:", NSString)(stringWithFormat); + } + + static Object localizedStringWithFormat (NSString localizedStringWithFormat, ...) + { + return invokeObjcSelfClass!(Object, "localizedStringWithFormat:", NSString)(localizedStringWithFormat); + } + + Object initWithCString (char* nullTerminatedCString, uint encoding) + { + return invokeObjcSelf!(Object, "initWithCString:encoding:", char*, uint)(nullTerminatedCString, encoding); + } + + this (char* nullTerminatedCString, uint encoding) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCString:encoding:", char*, uint)(objcObject, nullTerminatedCString, encoding); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithCString (char* cString, uint enc) + { + return invokeObjcSelfClass!(Object, "stringWithCString:encoding:", char*, uint)(cString, enc); + } + + Object initWithContentsOfURL (NSURL url, uint enc, NSError** error) + { + return invokeObjcSelf!(Object, "initWithContentsOfURL:encoding:error:", NSURL, uint, NSError**)(url, enc, error); + } + + this (NSURL url, uint enc, NSError** error) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:encoding:error:", NSURL, uint, NSError**)(objcObject, url, enc, error); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithContentsOfFile (NSString path, uint enc, NSError** error) + { + return invokeObjcSelf!(Object, "initWithContentsOfFile:encoding:error:", NSString, uint, NSError**)(path, enc, error); + } + + this (NSString path, uint enc, NSError** error) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfFile:encoding:error:", NSString, uint, NSError**)(objcObject, path, enc, error); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithContentsOfURL (NSURL url, uint enc, NSError** error) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfURL:encoding:error:", NSURL, uint, NSError**)(url, enc, error); + } + + static Object stringWithContentsOfFile (NSString path, uint enc, NSError** error) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfFile:encoding:error:", NSString, uint, NSError**)(path, enc, error); + } + + Object initWithContentsOfURL (NSURL url, NSStringEncoding* enc, NSError** error) + { + return invokeObjcSelf!(Object, "initWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, NSError**)(url, enc, error); + } + + this (NSURL url, NSStringEncoding* enc, NSError** error) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, NSError**)(objcObject, url, enc, error); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithContentsOfFile (NSString path, NSStringEncoding* enc, NSError** error) + { + return invokeObjcSelf!(Object, "initWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, NSError**)(path, enc, error); + } + + this (NSString path, NSStringEncoding* enc, NSError** error) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, NSError**)(objcObject, path, enc, error); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithContentsOfURL (NSURL url, NSStringEncoding* enc, NSError** error) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, NSError**)(url, enc, error); + } + + static Object stringWithContentsOfFile (NSString path, NSStringEncoding* enc, NSError** error) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, NSError**)(path, enc, error); + } + + bool writeToURL (NSURL url, bool useAuxiliaryFile, uint enc, NSError** error) + { + return invokeObjcSelf!(bool, "writeToURL:atomically:encoding:error:", NSURL, bool, uint, NSError**)(url, useAuxiliaryFile, enc, error); + } + + bool writeToFile (NSString path, bool useAuxiliaryFile, uint enc, NSError** error) + { + return invokeObjcSelf!(bool, "writeToFile:atomically:encoding:error:", NSString, bool, uint, NSError**)(path, useAuxiliaryFile, enc, error); + } +} + +template TNSStringDeprecated () +{ + char* cString () + { + return invokeObjcSelf!(char*, "cString"); + } + + char* lossyCString () + { + return invokeObjcSelf!(char*, "lossyCString"); + } + + NSUInteger cStringLength () + { + return invokeObjcSelf!(NSUInteger, "cStringLength"); + } + + void getCString (char* bytes) + { + return invokeObjcSelf!(void, "getCString:", char*)(bytes); + } + + void getCString (char* bytes, NSUInteger maxLength) + { + return invokeObjcSelf!(void, "getCString:maxLength:", char*, NSUInteger)(bytes, maxLength); + } + + void getCString (char* bytes, NSUInteger maxLength, NSRange aRange, NSRangePointer leftoverRange) + { + return invokeObjcSelf!(void, "getCString:maxLength:range:remainingRange:", char*, NSUInteger, NSRange, NSRangePointer)(bytes, maxLength, aRange, leftoverRange); + } + + bool writeToFile (NSString path, bool useAuxiliaryFile) + { + return invokeObjcSelf!(bool, "writeToFile:atomically:", NSString, bool)(path, useAuxiliaryFile); + } + + bool writeToURL (NSURL url, bool atomically) + { + return invokeObjcSelf!(bool, "writeToURL:atomically:", NSURL, bool)(url, atomically); + } + + Object initWithContentsOfFile (NSString path) + { + return invokeObjcSelf!(Object, "initWithContentsOfFile:", NSString)(path); + } + + this (NSString path) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfFile:", NSString)(objcObject, path); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithContentsOfURL (NSURL url) + { + return invokeObjcSelf!(Object, "initWithContentsOfURL:", NSURL)(url); + } + + this (NSURL url) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:", NSURL)(objcObject, url); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithContentsOfFile (NSString path) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfFile:", NSString)(path); + } + + static Object stringWithContentsOfURL (NSURL url) + { + return invokeObjcSelfClass!(Object, "stringWithContentsOfURL:", NSURL)(url); + } + + Object initWithCStringNoCopy (char* bytes, NSUInteger length, bool freeBuffer) + { + return invokeObjcSelf!(Object, "initWithCStringNoCopy:length:freeWhenDone:", char*, NSUInteger, bool)(bytes, length, freeBuffer); + } + + this (char* bytes, NSUInteger length, bool freeBuffer) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCStringNoCopy:length:freeWhenDone:", char*, NSUInteger, bool)(objcObject, bytes, length, freeBuffer); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithCString (char* bytes, NSUInteger length) + { + return invokeObjcSelf!(Object, "initWithCString:length:", char*, NSUInteger)(bytes, length); + } + + this (char* bytes, NSUInteger length) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCString:length:", char*, NSUInteger)(objcObject, bytes, length); + + if (result) + objcObject = ret; + + dObject = this; + } + + Object initWithCString (char* bytes) + { + return invokeObjcSelf!(Object, "initWithCString:", char*)(bytes); + } + + this (char* bytes) + { + objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); + id result = Bridge.invokeObjcMethod!(id, "initWithCString:", char*)(objcObject, bytes); + + if (result) + objcObject = ret; + + dObject = this; + } + + static Object stringWithCString (char* bytes, NSUInteger length) + { + return invokeObjcSelfClass!(Object, "stringWithCString:length:", char*, NSUInteger)(bytes, length); + } + + static Object stringWithCString (char* bytes) + { + return invokeObjcSelfClass!(Object, "stringWithCString:", char*)(bytes); + } +} +