Mercurial > projects > dstep
view dstep/foundation/NSString.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 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.NSString; import dstep.foundation.NSArray; import dstep.foundation.NSCharacterSet; import dstep.foundation.NSCoder; import dstep.foundation.NSData; import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSLocale; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSPathUtilities; import dstep.foundation.NSRange; import dstep.foundation.NSURL; import dstep.foundation.NSZone; import dstep.internal.String; import dstep.internal.Version; import dstep.objc.bridge.Wrapper; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.foundation.NSString_bindings; alias wchar unichar; alias NSUInteger NSStringCompareOptions; alias NSUInteger NSStringEncoding; alias NSUInteger NSStringEncodingConversionOptions; private { NSString NSParseErrorException_; NSString NSCharacterConversionException_; } NSString NSParseErrorException () { if (NSParseErrorException_) return NSParseErrorException_; return NSParseErrorException_ = new NSString(bindings.NSParseErrorException); } NSString NSCharacterConversionException () { if (NSCharacterConversionException_) return NSCharacterConversionException_; return NSCharacterConversionException_ = new NSString(bindings.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 } const TNSExtendedStringPropertyListParsing = ` Object propertyList () { return invokeObjcSelf!(Object, "propertyList"); } NSDictionary propertyListFromStringsFileFormat () { return invokeObjcSelf!(NSDictionary, "propertyListFromStringsFileFormat"); } `; const 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); } NSString initWithCapacity (NSUInteger capacity) { return invokeObjcSelf!(Object, "initWithCapacity:", NSUInteger)(capacity); } /*this (NSUInteger capacity) { typeof(this).alloc.initWithCapacity(capacity); }*/ static Object stringWithCapacity (NSUInteger capacity) { return invokeObjcSuperClass!(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); } `; const 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 invokeObjcSuperClass!(uint, "defaultCStringEncoding"); } static NSStringEncoding* availableStringEncodings () { return invokeObjcSuperClass!(NSStringEncoding*, "availableStringEncodings"); } static NSString localizedNameOfStringEncoding (uint encoding) { return invokeObjcSuperClass!(NSString, "localizedNameOfStringEncoding:", uint)(encoding); } NSString 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) { typeof(this).alloc.initWithCharactersNoCopy(characters, length, freeBuffer); }*/ NSString initWithCharacters (unichar* characters, NSUInteger length) { return invokeObjcSelf!(Object, "initWithCharacters:length:", unichar*, NSUInteger)(characters, length); } /*this (unichar* characters, NSUInteger length) { typeof(this).alloc.initWithCharacters(characters, length); }*/ NSString initWithUTF8String (char* nullTerminatedCString) { return invokeObjcSelf!(Object, "initWithUTF8String:", char*)(nullTerminatedCString); } /*this (char* nullTerminatedCString) { typeof(this).alloc.initWithUTF8String(nullTerminatedCString); }*/ NSString initWithString (NSString aString) { return invokeObjcSelf!(Object, "initWithString:", NSString)(aString); } /*this (NSString aString) { typeof(this).alloc.initWithString(aString); }*/ NSString initWithFormat (NSString initWithFormat, ...) { return invokeObjcSelf!(Object, "initWithFormat:", NSString)(initWithFormat); } /*this (NSString initWithFormat, ...) { typeof(this).alloc.initWithFormat(initWithFormat); }*/ NSString initWithFormat (NSString format, char* argList) { return invokeObjcSelf!(Object, "initWithFormat:arguments:", NSString, char*)(format, argList); } /*this (NSString format, char* argList) { typeof(this).alloc.initWithFormat(format, argList); }*/ NSString initWithFormat (NSString format, Object locale, ...) { return invokeObjcSelf!(Object, "initWithFormat:locale:", NSString, Object)(format, locale); } /*this (NSString format, Object locale, ...) { typeof(this).alloc.initWithFormat(format, locale); }*/ NSString 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) { typeof(this).alloc.initWithFormat(format, locale, argList); }*/ NSString initWithData (NSData data, uint encoding) { return invokeObjcSelf!(Object, "initWithData:encoding:", NSData, uint)(data, encoding); } /*this (NSData data, uint encoding) { typeof(this).alloc.initWithData(data, encoding); }*/ NSString 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) { typeof(this).alloc.initWithBytes(bytes, len, encoding); }*/ NSString initWithBytesNoCopy (void* bytes, NSUInteger len, NSStringEncoding encoding, bool freeBuffer) { return invokeObjcSelf!(Object, "initWithBytesNoCopy:length:encoding:freeWhenDone:", void*, NSUInteger, NSStringEncoding, bool)(bytes, len, encoding, freeBuffer); } /*this (void* bytes, NSUInteger len, uint encoding, bool freeBuffer) { typeof(this).alloc.initWithBytesNoCopy(bytes, len, encoding, freeBuffer); }*/ static Object string () { return invokeObjcSuperClass!(Object, "string"); } static Object stringWithString (NSString string) { return invokeObjcSuperClass!(Object, "stringWithString:", NSString)(string); } static Object stringWithCharacters (unichar* characters, NSUInteger length) { return invokeObjcSuperClass!(Object, "stringWithCharacters:length:", unichar*, NSUInteger)(characters, length); } static NSString stringWithUTF8String (char* nullTerminatedCString) { return invokeObjcSuperClass!(NSString, "stringWithUTF8String:", char*)(nullTerminatedCString); } static Object stringWithFormat (NSString stringWithFormat, ...) { return invokeObjcSuperClass!(Object, "stringWithFormat:", NSString)(stringWithFormat); } static Object localizedStringWithFormat (NSString localizedStringWithFormat, ...) { return invokeObjcSuperClass!(Object, "localizedStringWithFormat:", NSString)(localizedStringWithFormat); } static Object stringWithCString (char* cString, uint enc) { return invokeObjcSuperClass!(Object, "stringWithCString:encoding:", char*, uint)(cString, enc); } NSString initWithContentsOfURL (NSURL url, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSelf!(Object, "initWithContentsOfURL:encoding:error:", NSURL, NSStringEncoding, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSURL url, NSStringEncoding enc, ref NSError error) { typeof(this).alloc.initWithContentsOfURL(url, enc, error); }*/ NSString initWithContentsOfFile (NSString path, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSelf!(Object, "initWithContentsOfFile:encoding:error:", NSString, NSStringEncoding, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSString path, NSStringEncoding enc, ref NSError error) { typeof(this).alloc.initWithContentsOfFile(path, enc, error); }*/ static Object stringWithContentsOfURL (NSURL url, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSuperClass!(Object, "stringWithContentsOfURL:encoding:error:", NSURL, NSStringEncoding, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } static Object stringWithContentsOfFile (NSString path, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSuperClass!(Object, "stringWithContentsOfFile:encoding:error:", NSString, NSStringEncoding, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } NSString initWithContentsOfURL (NSURL url, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSelf!(Object, "initWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSURL url, NSStringEncoding* enc, ref NSError error) { typeof(this).alloc.initWithContentsOfURL(url, enc, error); }*/ NSString initWithContentsOfFile (NSString path, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSelf!(Object, "initWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSString path, NSStringEncoding* enc, ref NSError error) { typeof(this).alloc.initWithContentsOfFile(path, enc, error); }*/ static Object stringWithContentsOfURL (NSURL url, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSuperClass!(Object, "stringWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } static Object stringWithContentsOfFile (NSString path, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; Object result = invokeObjcSuperClass!(Object, "stringWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } bool writeToURL (NSURL url, bool useAuxiliaryFile, uint enc, ref NSError error) { id err; if (error) err = new objc_object; bool result = invokeObjcSelf!(bool, "writeToURL:atomically:encoding:error:", NSURL, bool, uint, id*)(url, useAuxiliaryFile, enc, &err); if (err) error = new NSError(err); return result; } bool writeToFile (NSString path, bool useAuxiliaryFile, uint enc, ref NSError error) { id err; if (error) err = new objc_object; bool result = invokeObjcSelf!(bool, "writeToFile:atomically:encoding:error:", NSString, bool, uint, id*)(path, useAuxiliaryFile, enc, &err); if (err) error = new NSError(err); return result; } `; const 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); } /*NSString initWithContentsOfFile (NSString path) { return invokeObjcSelf!(Object, "initWithContentsOfFile:", NSString)(path); } this (NSString path) { typeof(this).alloc.initWithContentsOfFile(path); } NSString initWithContentsOfURL (NSURL url) { return invokeObjcSelf!(Object, "initWithContentsOfURL:", NSURL)(url); } this (NSURL url) { typeof(this).alloc.initWithContentsOfURL(url); }*/ static Object stringWithContentsOfFile (NSString path) { return invokeObjcSuperClass!(Object, "stringWithContentsOfFile:", NSString)(path); } static Object stringWithContentsOfURL (NSURL url) { return invokeObjcSuperClass!(Object, "stringWithContentsOfURL:", NSURL)(url); } NSString 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) { typeof(this).alloc.initWithCStringNoCopy(bytes, length, freeBuffer); } NSString initWithCString (char* bytes, NSUInteger length) { return invokeObjcSelf!(Object, "initWithCString:length:", char*, NSUInteger)(bytes, length); } this (char* bytes, NSUInteger length) { typeof(this).alloc.initWithCString(bytes, length); } NSString initWithCString (char* bytes) { return invokeObjcSelf!(Object, "initWithCString:", char*)(bytes); } this (char* bytes) { typeof(this).alloc.initWithCString(bytes); } static Object stringWithCString (char* bytes, NSUInteger length) { return invokeObjcSuperClass!(Object, "stringWithCString:length:", char*, NSUInteger)(bytes, length); } static Object stringWithCString (char* bytes) { return invokeObjcSuperClass!(Object, "stringWithCString:", char*)(bytes); } `; class NSMutableString : NSString { mixin (ObjcClusterWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } void replaceCharactersInRange (NSRange range, NSString aString) { return invokeObjcSelf!(void, "replaceCharactersInRange:withString:", NSRange, NSString)(range, aString); } // 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); } NSMutableString initWithCapacity (NSUInteger capacity) { return invokeObjcSelf!(NSMutableString, "initWithCapacity:", NSUInteger)(capacity); } /*this (NSUInteger capacity) { typeof(this).alloc.initWithCapacity(capacity); }*/ static NSMutableString stringWithCapacity (NSUInteger capacity) { return invokeObjcSuperClass!(NSMutableString, "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); } } class NSString : NSObject, INSCopying, INSMutableCopying, INSCoding { mixin (ObjcClusterWrap); this () { super(typeof(this).alloc.init.objcObject); } typeof(this) init () { return invokeObjcSelf!(typeof(this), "init"); } NSUInteger length () { return invokeObjcSelf!(NSUInteger, "length"); } unichar characterAtIndex (NSUInteger index) { return invokeObjcSelf!(unichar, "characterAtIndex:", NSUInteger)(index); } NSString copyWithZone (NSZone* zone) { return invokeObjcSelf!(NSString, "copyWithZone:", NSZone*)(zone); } NSString mutableCopyWithZone (NSZone* zone) { return invokeObjcSelf!(NSString, "mutableCopyWithZone:", NSZone*)(zone); } void encodeWithCoder (NSCoder aCoder) { return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); } NSString initWithCoder (NSCoder aDecoder) { return invokeObjcSelf!(NSString, "initWithCoder:", NSCoder)(aDecoder); } this (NSCoder aDecoder) { typeof(this).alloc.initWithCoder(aDecoder); } // TNSExtendedStringPropertyListParsing Object propertyList () { return invokeObjcSelf!(Object, "propertyList"); } NSDictionary propertyListFromStringsFileFormat () { return invokeObjcSelf!(NSDictionary, "propertyListFromStringsFileFormat"); } // 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 invokeObjcSuperClass!(uint, "defaultCStringEncoding"); } static NSStringEncoding* availableStringEncodings () { return invokeObjcSuperClass!(NSStringEncoding*, "availableStringEncodings"); } static NSString localizedNameOfStringEncoding (uint encoding) { return invokeObjcSuperClass!(NSString, "localizedNameOfStringEncoding:", uint)(encoding); } NSString initWithCharactersNoCopy (unichar* characters, NSUInteger length, bool freeBuffer) { return invokeObjcSelf!(NSString, "initWithCharactersNoCopy:length:freeWhenDone:", unichar*, NSUInteger, bool)(characters, length, freeBuffer); } /*this (unichar* characters, NSUInteger length, bool freeBuffer) { typeof(this).alloc.initWithCharactersNoCopy(characters, length, freeBuffer); }*/ NSString initWithCharacters (unichar* characters, NSUInteger length) { return invokeObjcSelf!(NSString, "initWithCharacters:length:", unichar*, NSUInteger)(characters, length); } /*this (unichar* characters, NSUInteger length) { typeof(this).alloc.initWithCharacters(characters, length); }*/ NSString initWithUTF8String (char* nullTerminatedCString) { return invokeObjcSelf!(NSString, "initWithUTF8String:", char*)(nullTerminatedCString); } /*this (char* nullTerminatedCString) { typeof(this).alloc.initWithUTF8String(nullTerminatedCString); }*/ NSString initWithString (NSString aString) { return invokeObjcSelf!(NSString, "initWithString:", NSString)(aString); } /*this (NSString aString) { typeof(this).alloc.initWithString(aString); }*/ NSString initWithFormat (NSString initWithFormat, ...) { return invokeObjcSelf!(NSString, "initWithFormat:", NSString)(initWithFormat); } /*this (NSString initWithFormat, ...) { typeof(this).alloc.initWithFormat(initWithFormat); }*/ NSString initWithFormat (NSString format, char* argList) { return invokeObjcSelf!(NSString, "initWithFormat:arguments:", NSString, char*)(format, argList); } /*this (NSString format, char* argList) { typeof(this).alloc.initWithFormat(format, argList); }*/ NSString initWithFormat (NSString format, Object locale, ...) { return invokeObjcSelf!(NSString, "initWithFormat:locale:", NSString, Object)(format, locale); } /*this (NSString format, Object locale, ...) { typeof(this).alloc.initWithFormat(format, locale); }*/ NSString initWithFormat (NSString format, Object locale, char* argList) { return invokeObjcSelf!(NSString, "initWithFormat:locale:arguments:", NSString, Object, char*)(format, locale, argList); } /*this (NSString format, Object locale, char* argList) { typeof(this).alloc.initWithFormat(format, locale, argList); }*/ NSString initWithData (NSData data, uint encoding) { return invokeObjcSelf!(NSString, "initWithData:encoding:", NSData, uint)(data, encoding); } /*this (NSData data, uint encoding) { typeof(this).alloc.initWithData(data, encoding); }*/ NSString initWithBytes (void* bytes, NSUInteger len, uint encoding) { return invokeObjcSelf!(NSString, "initWithBytes:length:encoding:", void*, NSUInteger, uint)(bytes, len, encoding); } /*this (void* bytes, NSUInteger len, uint encoding) { typeof(this).alloc.initWithBytes(bytes, len, encoding); }*/ NSString initWithBytesNoCopy (void* bytes, NSUInteger len, NSStringEncoding encoding, bool freeBuffer) { return invokeObjcSelf!(NSString, "initWithBytesNoCopy:length:encoding:freeWhenDone:", void*, NSUInteger, NSStringEncoding, bool)(bytes, len, encoding, freeBuffer); } /*this (void* bytes, NSUInteger len, uint encoding, bool freeBuffer) { typeof(this).alloc.initWithBytesNoCopy(bytes, len, encoding, freeBuffer); }*/ static NSString string () { return invokeObjcSuperClass!(NSString, "string"); } static NSString stringWithString (NSString string) { return invokeObjcSuperClass!(NSString, "stringWithString:", NSString)(string); } static NSString stringWithCharacters (unichar* characters, NSUInteger length) { return invokeObjcSuperClass!(NSString, "stringWithCharacters:length:", unichar*, NSUInteger)(characters, length); } static NSString stringWithUTF8String (char* nullTerminatedCString) { return invokeObjcSuperClass!(NSString, "stringWithUTF8String:", char*)(nullTerminatedCString); } static NSString stringWithFormat (NSString stringWithFormat, ...) { return invokeObjcSuperClass!(NSString, "stringWithFormat:", NSString)(stringWithFormat); } static NSString localizedStringWithFormat (NSString localizedStringWithFormat, ...) { return invokeObjcSuperClass!(NSString, "localizedStringWithFormat:", NSString)(localizedStringWithFormat); } static NSString stringWithCString (char* cString, uint enc) { return invokeObjcSuperClass!(NSString, "stringWithCString:encoding:", char*, uint)(cString, enc); } NSString initWithContentsOfURL (NSURL url, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSelf!(NSString, "initWithContentsOfURL:encoding:error:", NSURL, NSStringEncoding, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSURL url, NSStringEncoding enc, ref NSError error) { typeof(this).alloc.initWithContentsOfURL(url, enc, error); }*/ NSString initWithContentsOfFile (NSString path, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSelf!(NSString, "initWithContentsOfFile:encoding:error:", NSString, NSStringEncoding, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSString path, NSStringEncoding enc, ref NSError error) { typeof(this).alloc.initWithContentsOfFile(path, enc, error); }*/ static NSString stringWithContentsOfURL (NSURL url, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSuperClass!(NSString, "stringWithContentsOfURL:encoding:error:", NSURL, NSStringEncoding, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } static NSString stringWithContentsOfFile (NSString path, NSStringEncoding enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSuperClass!(NSString, "stringWithContentsOfFile:encoding:error:", NSString, NSStringEncoding, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } NSString initWithContentsOfURL (NSURL url, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSelf!(NSString, "initWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSURL url, NSStringEncoding* enc, ref NSError error) { typeof(this).alloc.initWithContentsOfURL(url, enc, error); }*/ NSString initWithContentsOfFile (NSString path, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSelf!(NSString, "initWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } /*this (NSString path, NSStringEncoding* enc, ref NSError error) { typeof(this).alloc.initWithContentsOfFile(path, enc, error); }*/ static NSString stringWithContentsOfURL (NSURL url, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSuperClass!(NSString, "stringWithContentsOfURL:usedEncoding:error:", NSURL, NSStringEncoding*, id*)(url, enc, &err); if (err) error = new NSError(err); return result; } static NSString stringWithContentsOfFile (NSString path, NSStringEncoding* enc, ref NSError error) { id err; if (error) err = new objc_object; NSString result = invokeObjcSuperClass!(NSString, "stringWithContentsOfFile:usedEncoding:error:", NSString, NSStringEncoding*, id*)(path, enc, &err); if (err) error = new NSError(err); return result; } bool writeToURL (NSURL url, bool useAuxiliaryFile, uint enc, ref NSError error) { id err; if (error) err = new objc_object; bool result = invokeObjcSelf!(bool, "writeToURL:atomically:encoding:error:", NSURL, bool, uint, id*)(url, useAuxiliaryFile, enc, &err); if (err) error = new NSError(err); return result; } bool writeToFile (NSString path, bool useAuxiliaryFile, uint enc, ref NSError error) { id err; if (error) err = new objc_object; bool result = invokeObjcSelf!(bool, "writeToFile:atomically:encoding:error:", NSString, bool, uint, id*)(path, useAuxiliaryFile, enc, &err); if (err) error = new NSError(err); return result; } // TNSStringPathExtensions static NSString pathWithComponents (NSArray components) { return invokeObjcSuperClass!(NSString, "pathWithComponents:", NSArray)(components); } NSArray pathComponents () { return invokeObjcSelf!(NSArray, "pathComponents"); } bool isAbsolutePath () { return invokeObjcSelf!(bool, "isAbsolutePath"); } NSString lastPathComponent () { return invokeObjcSelf!(NSString, "lastPathComponent"); } NSString stringByDeletingLastPathComponent () { return invokeObjcSelf!(NSString, "stringByDeletingLastPathComponent"); } NSString stringByAppendingPathComponent (NSString str) { return invokeObjcSelf!(NSString, "stringByAppendingPathComponent:", NSString)(str); } NSString pathExtension () { return invokeObjcSelf!(NSString, "pathExtension"); } NSString stringByDeletingPathExtension () { return invokeObjcSelf!(NSString, "stringByDeletingPathExtension"); } NSString stringByAppendingPathExtension (NSString str) { return invokeObjcSelf!(NSString, "stringByAppendingPathExtension:", NSString)(str); } NSString stringByAbbreviatingWithTildeInPath () { return invokeObjcSelf!(NSString, "stringByAbbreviatingWithTildeInPath"); } NSString stringByExpandingTildeInPath () { return invokeObjcSelf!(NSString, "stringByExpandingTildeInPath"); } NSString stringByStandardizingPath () { return invokeObjcSelf!(NSString, "stringByStandardizingPath"); } NSString stringByResolvingSymlinksInPath () { return invokeObjcSelf!(NSString, "stringByResolvingSymlinksInPath"); } NSArray stringsByAppendingPaths (NSArray paths) { return invokeObjcSelf!(NSArray, "stringsByAppendingPaths:", NSArray)(paths); } NSUInteger completePathIntoString (NSString** outputName, bool flag, NSArray** outputArray, NSArray filterTypes) { return invokeObjcSelf!(NSUInteger, "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:", NSString**, bool, NSArray**, NSArray)(outputName, flag, outputArray, filterTypes); } char* fileSystemRepresentation () { return invokeObjcSelf!(char*, "fileSystemRepresentation"); } bool getFileSystemRepresentation (char* cname, NSUInteger max) { return invokeObjcSelf!(bool, "getFileSystemRepresentation:maxLength:", char*, NSUInteger)(cname, max); } // TNSURLUtilities NSString stringByAddingPercentEscapesUsingEncoding (uint enc) { return invokeObjcSelf!(NSString, "stringByAddingPercentEscapesUsingEncoding:", uint)(enc); } NSString stringByReplacingPercentEscapesUsingEncoding (uint enc) { return invokeObjcSelf!(NSString, "stringByReplacingPercentEscapesUsingEncoding:", uint)(enc); } // 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); } NSString initWithContentsOfFile (NSString path) { return invokeObjcSelf!(NSString, "initWithContentsOfFile:", NSString)(path); } NSString initWithContentsOfURL (NSURL url) { return invokeObjcSelf!(NSString, "initWithContentsOfURL:", NSURL)(url); } static NSString stringWithContentsOfFile (NSString path) { return invokeObjcSuperClass!(NSString, "stringWithContentsOfFile:", NSString)(path); } static NSString stringWithContentsOfURL (NSURL url) { return invokeObjcSuperClass!(NSString, "stringWithContentsOfURL:", NSURL)(url); } NSString initWithCStringNoCopy (char* bytes, NSUInteger length, bool freeBuffer) { return invokeObjcSelf!(NSString, "initWithCStringNoCopy:length:freeWhenDone:", char*, NSUInteger, bool)(bytes, length, freeBuffer); } /*this (char* bytes, NSUInteger length, bool freeBuffer) { typeof(this).alloc.initWithCStringNoCopy(bytes, length, freeBuffer); }*/ NSString initWithCString (char* bytes, NSUInteger length) { return invokeObjcSelf!(NSString, "initWithCString:length:", char*, NSUInteger)(bytes, length); } /*this (char* bytes, NSUInteger length) { typeof(this).alloc.initWithCString(bytes, length); }*/ NSString initWithCString (char* bytes) { return invokeObjcSelf!(NSString, "initWithCString:", char*)(bytes); } /*this (char* bytes) { typeof(this).alloc.initWithCString(bytes); }*/ static NSString stringWithCString_length (char* bytes, NSUInteger length) { return invokeObjcSuperClass!(NSString, "stringWithCString:length:", char*, NSUInteger)(bytes, length); } static NSString stringWithCString (char* bytes) { return invokeObjcSuperClass!(NSString, "stringWithCString:", char*)(bytes); } // D extensions static NSString opCall (.string str) { return stringWithUTF8String((str ~ '\0').ptr); } equals_t opEquals (Object object) { if (auto str = cast(NSString) object) return isEqual(object); return false; } final equals_t opEquals (.string str) { return str == cStringUsingEncoding(NSUTF8StringEncoding)[0 .. lengthOfBytesUsingEncoding(NSUTF8StringEncoding)]; } NSString opCatAssign (NSString str) { objcObject = stringByAppendingString(str).objcObject; return this; } NSString opCatAssign (.string str) { objcObject = stringByAppendingString(NSString(str)).objcObject; return this; } NSString opCat (NSString str) { return stringByAppendingString(str); } NSString opCat (.string str) { return stringByAppendingString(NSString(str)); } .string toString () { return cStringUsingEncoding(NSUTF8StringEncoding)[0 .. lengthOfBytesUsingEncoding(NSUTF8StringEncoding)]; } wchar opIndex (size_t index) { return characterAtIndex(index); } }