diff dwt/internal/cocoa/NSString.d @ 0:380af2bdd8e5

Upload of whole dwt tree
author Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
date Sat, 09 Aug 2008 17:00:02 +0200
parents
children 8b48be5454ce
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/cocoa/NSString.d	Sat Aug 09 17:00:02 2008 +0200
@@ -0,0 +1,941 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ * Port to the D Programming language:
+ *     Jacob Carlborg <jacob.carlborg@gmail.com>
+ *******************************************************************************/
+module dwt.internal.cocoa.NSString;
+
+import tango.core.Vararg : va_list;
+import tango.stdc.stringz : toStringz;
+
+import dwt.dwthelper.utils;
+import dwt.internal.cocoa.id;
+import dwt.internal.cocoa.NSArray;
+import dwt.internal.cocoa.NSCharacterSet;
+import dwt.internal.cocoa.NSComparisonResult;
+import dwt.internal.cocoa.NSData;
+import dwt.internal.cocoa.NSDictionary;
+import dwt.internal.cocoa.NSInteger;
+import dwt.internal.cocoa.NSLocale;
+import dwt.internal.cocoa.NSObject;
+import dwt.internal.cocoa.NSRange;
+import dwt.internal.cocoa.NSURL;
+import dwt.internal.cocoa.OS;
+import objc = dwt.internal.objc.runtime;
+
+enum NSStringEncoding : NSUInteger
+{
+    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,
+    NSUTF16BigEndianStringEncoding = 0x90000100,
+    NSUTF16LittleEndianStringEncoding = 0x94000100,
+    NSUTF32StringEncoding = 0x8c000100,
+    NSUTF32BigEndianStringEncoding = 0x98000100,
+    NSUTF32LittleEndianStringEncoding = 0x9c000100,
+    NSProprietaryStringEncoding = 65536
+}
+
+alias NSStringEncoding.NSASCIIStringEncoding NSASCIIStringEncoding;
+alias NSStringEncoding.NSNEXTSTEPStringEncoding NSNEXTSTEPStringEncoding;
+alias NSStringEncoding.NSJapaneseEUCStringEncoding NSJapaneseEUCStringEncoding;
+alias NSStringEncoding.NSUTF8StringEncoding NSUTF8StringEncoding;
+alias NSStringEncoding.NSISOLatin1StringEncoding NSISOLatin1StringEncoding;
+alias NSStringEncoding.NSSymbolStringEncoding NSSymbolStringEncoding;
+alias NSStringEncoding.NSNonLossyASCIIStringEncoding NSNonLossyASCIIStringEncoding;
+alias NSStringEncoding.NSShiftJISStringEncoding NSShiftJISStringEncoding;
+alias NSStringEncoding.NSISOLatin2StringEncoding NSISOLatin2StringEncoding;
+alias NSStringEncoding.NSUnicodeStringEncoding NSUnicodeStringEncoding;
+alias NSStringEncoding.NSWindowsCP1251StringEncoding NSWindowsCP1251StringEncoding;
+alias NSStringEncoding.NSWindowsCP1252StringEncoding NSWindowsCP1252StringEncoding;
+alias NSStringEncoding.NSWindowsCP1253StringEncoding NSWindowsCP1253StringEncoding;
+alias NSStringEncoding.NSWindowsCP1254StringEncoding NSWindowsCP1254StringEncoding;
+alias NSStringEncoding.NSWindowsCP1250StringEncoding NSWindowsCP1250StringEncoding;
+alias NSStringEncoding.NSISO2022JPStringEncoding NSISO2022JPStringEncoding;
+alias NSStringEncoding.NSMacOSRomanStringEncoding NSMacOSRomanStringEncoding;
+alias NSStringEncoding.NSUTF16BigEndianStringEncoding NSUTF16BigEndianStringEncoding;
+alias NSStringEncoding.NSUTF16LittleEndianStringEncoding NSUTF16LittleEndianStringEncoding;
+alias NSStringEncoding.NSUTF32StringEncoding NSUTF32StringEncoding;
+alias NSStringEncoding.NSUTF32BigEndianStringEncoding NSUTF32BigEndianStringEncoding;
+alias NSStringEncoding.NSUTF32LittleEndianStringEncoding NSUTF32LittleEndianStringEncoding;
+alias NSStringEncoding.NSProprietaryStringEncoding NSProprietaryStringEncoding;
+
+enum NSStringCompareOptions : NSUInteger
+{
+    NSCaseInsensitiveSearch = 1,
+    NSLiteralSearch = 2,
+    NSBackwardsSearch = 4,
+    NSAnchoredSearch = 8,
+    NSNumericSearch = 64,
+    NSDiacriticInsensitiveSearch = 128,
+    NSWidthInsensitiveSearch = 256,
+    NSForcedOrderingSearch = 512
+}
+
+alias NSStringCompareOptions.NSCaseInsensitiveSearch NSCaseInsensitiveSearch;
+alias NSStringCompareOptions.NSLiteralSearch NSLiteralSearch;
+alias NSStringCompareOptions.NSBackwardsSearch NSBackwardsSearch;
+alias NSStringCompareOptions.NSAnchoredSearch NSAnchoredSearch;
+alias NSStringCompareOptions.NSNumericSearch NSNumericSearch;
+alias NSStringCompareOptions.NSDiacriticInsensitiveSearch NSDiacriticInsensitiveSearch;
+alias NSStringCompareOptions.NSWidthInsensitiveSearch NSWidthInsensitiveSearch;
+alias NSStringCompareOptions.NSForcedOrderingSearch NSForcedOrderingSearch;
+
+enum NSStringEncodingConversionOptions : NSUInteger
+{
+    NSStringEncodingConversionAllowLossy = 1,
+    NSStringEncodingConversionExternalRepresentation = 2
+}
+
+alias NSStringEncodingConversionOptions.NSStringEncodingConversionAllowLossy NSStringEncodingConversionAllowLossy;
+alias NSStringEncodingConversionOptions.NSStringEncodingConversionExternalRepresentation NSStringEncodingConversionExternalRepresentation;
+
+public class NSString : NSObject
+{
+
+    public this ()
+    {
+        super();
+    }
+
+    public this (objc.id id)
+    {
+        super(id);
+    }
+
+    public /*const*/char* UTF8String ()
+    {
+        return cast(/*const*/char*) OS.objc_msgSend(this.id, OS.sel_UTF8String);
+    }
+
+    public static NSStringEncoding availableStringEncodings ()
+    {
+        return cast(NSStringEncoding) OS.objc_msgSend(OS.class_NSString, OS.sel_availableStringEncodings);
+    }
+
+    public bool boolValue ()
+    {
+        return OS.objc_msgSend(this.id, OS.sel_boolValue) !is null;
+    }
+
+    public /*const char* */byte* cString ()
+    {
+        return cast(/*const char* */byte*) OS.objc_msgSend(this.id, OS.sel_cString);
+    }
+
+    public NSUInteger cStringLength ()
+    {
+        return OS.objc_msgSend(this.id, OS.sel_cStringLength);
+    }
+
+    public /*const char* */byte* cStringUsingEncoding (NSStringEncoding encoding)
+    {
+        return cast(/*const char* */byte*) OS.objc_msgSend(this.id, OS.sel_cStringUsingEncoding_1, encoding);
+    }
+
+    public bool canBeConvertedToEncoding (NSStringEncoding encoding)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_canBeConvertedToEncoding_1, encoding) !is null;
+    }
+
+    public NSString capitalizedString ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_capitalizedString);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSComparisonResult caseInsensitiveCompare (NSString string)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_caseInsensitiveCompare_1, string !is null ? string.id : null);
+    }
+
+    public wchar characterAtIndex (NSUInteger index)
+    {
+        return cast(wchar) OS.objc_msgSend(this.id, OS.sel_characterAtIndex_1, index);
+    }
+
+    public NSString commonPrefixWithString (NSString aString, NSStringCompareOptions mask)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_commonPrefixWithString_1options_1, aString !is null ? aString.id : null, mask);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSComparisonResult compare_ (NSString string)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_compare_1, string !is null ? string.id : null);
+    }
+
+    public NSComparisonResult compare_options_ (NSString string, NSStringCompareOptions mask)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_compare_1options_1, string !is null ? string.id : null, mask);
+    }
+
+    public NSComparisonResult compare_options_range_ (NSString string, NSStringCompareOptions mask, NSRange compareRange)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_compare_1options_1range_1, string !is null ? string.id : null, mask,
+                compareRange);
+    }
+
+    public NSComparisonResult compare_options_range_locale_ (NSString string, NSStringCompareOptions mask, NSRange compareRange, id locale)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_compare_1options_1range_1locale_1, string !is null ? string.id : null, mask,
+                compareRange, locale !is null ? locale.id : null);
+    }
+
+    public NSUInteger completePathIntoString (/*NSString** */objc.id** outputName, bool flag, /*NSArray** */objc.id** outputArray,
+            NSArray filterTypes)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_completePathIntoString_1caseSensitive_1matchesIntoArray_1filterTypes_1, outputName, flag, outputArray,
+                filterTypes !is null ? filterTypes.id : null);
+    }
+
+    public NSArray componentsSeparatedByCharactersInSet (NSCharacterSet separator)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_componentsSeparatedByCharactersInSet_1, separator !is null ? separator.id : null);
+        return result !is null ? new NSArray(result) : null;
+    }
+
+    public NSArray componentsSeparatedByString (NSString separator)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_componentsSeparatedByString_1, separator !is null ? separator.id : null);
+        return result !is null ? new NSArray(result) : null;
+    }
+
+    public NSData dataUsingEncoding_ (NSStringEncoding encoding)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_dataUsingEncoding_1, encoding);
+        return result !is null ? new NSData(result) : null;
+    }
+
+    public NSData dataUsingEncoding_allowLossyConversion_ (NSStringEncoding encoding, bool lossy)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_dataUsingEncoding_1allowLossyConversion_1, encoding, lossy);
+        return result !is null ? new NSData(result) : null;
+    }
+
+    public NSString decomposedStringWithCanonicalMapping ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_decomposedStringWithCanonicalMapping);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString decomposedStringWithCompatibilityMapping ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_decomposedStringWithCompatibilityMapping);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public static NSStringEncoding defaultCStringEncoding ()
+    {
+        return cast(NSStringEncoding) OS.objc_msgSend(OS.class_NSString, OS.sel_defaultCStringEncoding);
+    }
+
+    public NSString description ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_description);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public double doubleValue ()
+    {
+        return OS.objc_msgSend_fpret(this.id, OS.sel_doubleValue);
+    }
+
+    public NSStringEncoding fastestEncoding ()
+    {
+        return cast(NSStringEncoding) OS.objc_msgSend(this.id, OS.sel_fastestEncoding);
+    }
+
+    public /*const char* */byte* fileSystemRepresentation ()
+    {
+        return cast(/*const char* */byte*) OS.objc_msgSend(this.id, OS.sel_fileSystemRepresentation);
+    }
+
+    public float floatValue ()
+    {
+        return cast(float) OS.objc_msgSend_fpret(this.id, OS.sel_floatValue);
+    }
+
+    public bool getBytes (void* buffer, NSUInteger maxBufferCount, NSUInteger* usedBufferCount, NSStringEncoding encoding, NSStringEncodingConversionOptions options,
+            NSRange range, NSRangePointer leftover)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_getBytes_1maxLength_1usedLength_1encoding_1options_1range_1remainingRange_1, buffer, maxBufferCount,
+                usedBufferCount, encoding, options, range, leftover) !is null;
+    }
+
+    public void getCString_ (/*char* */byte* bytes)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getCString_1, bytes);
+    }
+
+    public void getCString_maxLength_ (/*char* */byte* bytes, NSUInteger maxLength)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getCString_1maxLength_1, bytes, maxLength);
+    }
+
+    public bool getCString_maxLength_encoding_ (/*char* */byte* buffer, NSUInteger maxBufferCount, NSStringEncoding encoding)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_getCString_1maxLength_1encoding_1, buffer, maxBufferCount, encoding) !is null;
+    }
+
+    public void getCString_maxLength_range_remainingRange_ (/*char* */byte* bytes, NSUInteger maxLength, NSRange aRange, NSRangePointer leftoverRange)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getCString_1maxLength_1range_1remainingRange_1, bytes, maxLength, aRange, leftoverRange);
+    }
+
+    public void getCharacters_ (wchar* buffer)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getCharacters_1, buffer);
+    }
+
+    public void getCharacters_range_ (wchar* buffer, NSRange aRange)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getCharacters_1range_1, buffer, aRange);
+    }
+
+    public bool getFileSystemRepresentation (/*char* */byte* cname, NSUInteger max)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_getFileSystemRepresentation_1maxLength_1, cname, max) !is null;
+    }
+
+    public void getLineStart (NSUInteger* startPtr, NSUInteger* lineEndPtr, NSUInteger* contentsEndPtr, NSRange range)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getLineStart_1end_1contentsEnd_1forRange_1, startPtr, lineEndPtr, contentsEndPtr, range);
+    }
+
+    public void getParagraphStart (NSUInteger* startPtr, NSUInteger* parEndPtr, NSUInteger* contentsEndPtr, NSRange range)
+    {
+        OS.objc_msgSend(this.id, OS.sel_getParagraphStart_1end_1contentsEnd_1forRange_1, startPtr, parEndPtr, contentsEndPtr, range);
+    }
+
+    public bool hasPrefix (NSString aString)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_hasPrefix_1, aString !is null ? aString.id : null) !is null;
+    }
+
+    public bool hasSuffix (NSString aString)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_hasSuffix_1, aString !is null ? aString.id : null) !is null;
+    }
+
+    public NSUInteger hash ()
+    {
+        return cast(NSUInteger) OS.objc_msgSend(this.id, OS.sel_hash);
+    }
+
+    public NSString initWithBytes (/*const*/void* bytes, NSUInteger len, NSStringEncoding encoding)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithBytes_1length_1encoding_1, bytes, len, encoding);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithBytesNoCopy (/*const*/void* bytes, NSUInteger len, NSStringEncoding encoding, bool freeBuffer)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithBytesNoCopy_1length_1encoding_1freeWhenDone_1, bytes, len, encoding, freeBuffer);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCString_ (/*const char* */byte* bytes)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCString_1, bytes);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCString_encoding_ (/*const char* */byte* nullTerminatedCString, NSStringEncoding encoding)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCString_1encoding_1, nullTerminatedCString, encoding);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCString_length_ (/*const char* */byte* bytes, NSUInteger length)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCString_1length_1, bytes, length);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCStringNoCopy (/*const char* */byte* bytes, NSUInteger length, bool freeBuffer)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCStringNoCopy_1length_1freeWhenDone_1, bytes, length, freeBuffer);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCharacters (/*const*/wchar* characters, NSUInteger length)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCharacters_1length_1, characters, length);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithCharactersNoCopy (/*const*/wchar* characters, NSUInteger length, bool freeBuffer)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithCharactersNoCopy_1length_1freeWhenDone_1, characters, length, freeBuffer);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfFile_ (NSString path)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfFile_1, path !is null ? path.id : null);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfFile_encoding_error_ (NSString path, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfFile_1encoding_1error_1, path !is null ? path.id : null, enc, error);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfFile_usedEncoding_error_ (NSString path, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfFile_1usedEncoding_1error_1, path !is null ? path.id : null, enc, error);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfURL_ (NSURL url)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfURL_1, url !is null ? url.id : null);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfURL_encoding_error_ (NSURL url, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfURL_1encoding_1error_1, url !is null ? url.id : null, enc, error);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithContentsOfURL_usedEncoding_error_ (NSURL url, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithContentsOfURL_1usedEncoding_1error_1, url !is null ? url.id : null, enc, error);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithData (NSData data, NSStringEncoding encoding)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithData_1encoding_1, data !is null ? data.id : null, encoding);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithFormat_ (NSString initWithFormat)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithFormat_1, initWithFormat !is null ? initWithFormat.id : null);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithFormat_arguments_ (NSString format, va_list argList)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithFormat_1arguments_1, format !is null ? format.id : null, argList);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithFormat_locale_ (NSString format, id locale)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithFormat_1locale_1, format !is null ? format.id : null,
+                locale !is null ? locale.id : null);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithFormat_locale_arguments_ (NSString format, id locale, va_list argList)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithFormat_1locale_1arguments_1, format !is null ? format.id : null,
+                locale !is null ? locale.id : null, argList);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithString (NSString aString)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithString_1, aString !is null ? aString.id : null);
+        return result !is null ? this : null;
+    }
+
+    public NSString initWithUTF8String (/*const*/char* nullTerminatedCString)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_initWithUTF8String_1, nullTerminatedCString);
+        return result !is null ? this : null;
+    }
+
+    public int intValue ()
+    {
+        return cast(int) OS.objc_msgSend(this.id, OS.sel_intValue);
+    }
+
+    public NSInteger integerValue ()
+    {
+        return cast(NSInteger) OS.objc_msgSend(this.id, OS.sel_integerValue);
+    }
+
+    public bool isAbsolutePath ()
+    {
+        return OS.objc_msgSend(this.id, OS.sel_isAbsolutePath) !is null;
+    }
+
+    public bool isEqualToString (NSString aString)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_isEqualToString_1, aString !is null ? aString.id : null) !is null;
+    }
+
+    public NSString lastPathComponent ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_lastPathComponent);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSUInteger length ()
+    {
+        return cast(NSUInteger) OS.objc_msgSend(this.id, OS.sel_length);
+    }
+
+    public NSUInteger lengthOfBytesUsingEncoding (NSStringEncoding enc)
+    {
+        return cast(NSUInteger) OS.objc_msgSend(this.id, OS.sel_lengthOfBytesUsingEncoding_1, enc);
+    }
+
+    public NSRange lineRangeForRange (NSRange range)
+    {
+        NSRange result;
+        OS.objc_msgSend_struct(result, this.id, OS.sel_lineRangeForRange_1, range);
+        return result;
+    }
+
+    public NSComparisonResult localizedCaseInsensitiveCompare (NSString string)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_localizedCaseInsensitiveCompare_1, string !is null ? string.id : null);
+    }
+
+    public NSComparisonResult localizedCompare (NSString string)
+    {
+        return cast(NSComparisonResult) OS.objc_msgSend(this.id, OS.sel_localizedCompare_1, string !is null ? string.id : null);
+    }
+
+    public static NSString localizedNameOfStringEncoding (NSStringEncoding encoding)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_localizedNameOfStringEncoding_1, encoding);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static id localizedStringWithFormat (NSString localizedStringWithFormat)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_localizedStringWithFormat_1,
+                localizedStringWithFormat !is null ? localizedStringWithFormat.id : null);
+        return result !is null ? new id(result) : null;
+    }
+
+    public long longLongValue ()
+    {
+        return cast(long) OS.objc_msgSend(this.id, OS.sel_longLongValue);
+    }
+
+    public /*const char* */byte* lossyCString ()
+    {
+        return cast(/*const char* */byte*) OS.objc_msgSend(this.id, OS.sel_lossyCString);
+    }
+
+    public NSString lowercaseString ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_lowercaseString);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSUInteger maximumLengthOfBytesUsingEncoding (NSStringEncoding enc)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_maximumLengthOfBytesUsingEncoding_1, enc);
+    }
+
+    public NSRange paragraphRangeForRange (NSRange range)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_paragraphRangeForRange_1, range);
+        return result;
+    }
+
+    public NSArray pathComponents ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_pathComponents);
+        return result !is null ? new NSArray(result) : null;
+    }
+
+    public NSString pathExtension ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_pathExtension);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public static NSString pathWithComponents (NSArray components)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_pathWithComponents_1, components !is null ? components.id : null);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public NSString precomposedStringWithCanonicalMapping ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_precomposedStringWithCanonicalMapping);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString precomposedStringWithCompatibilityMapping ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_precomposedStringWithCompatibilityMapping);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public id propertyList ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_propertyList);
+        return result !is null ? new id(result) : null;
+    }
+
+    public NSDictionary propertyListFromStringsFileFormat ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_propertyListFromStringsFileFormat);
+        return result !is null ? new NSDictionary(result) : null;
+    }
+
+    public NSRange rangeOfCharacterFromSet_ (NSCharacterSet aSet)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfCharacterFromSet_1, aSet !is null ? aSet.id : null);
+        return result;
+    }
+
+    public NSRange rangeOfCharacterFromSet_options_ (NSCharacterSet aSet, NSStringCompareOptions mask)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfCharacterFromSet_1options_1, aSet !is null ? aSet.id : null, mask);
+        return result;
+    }
+
+    public NSRange rangeOfCharacterFromSet_options_range_ (NSCharacterSet aSet, NSStringCompareOptions mask, NSRange searchRange)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfCharacterFromSet_1options_1range_1, aSet !is null ? aSet.id : null, mask, searchRange);
+        return result;
+    }
+
+    public NSRange rangeOfComposedCharacterSequenceAtIndex (NSUInteger index)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfComposedCharacterSequenceAtIndex_1, index);
+        return result;
+    }
+
+    public NSRange rangeOfComposedCharacterSequencesForRange (NSRange range)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfComposedCharacterSequencesForRange_1, range);
+        return result;
+    }
+
+    public NSRange rangeOfString_ (NSString aString)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfString_1, aString !is null ? aString.id : null);
+        return result;
+    }
+
+    public NSRange rangeOfString_options_ (NSString aString, NSStringCompareOptions mask)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfString_1options_1, aString !is null ? aString.id : null, mask);
+        return result;
+    }
+
+    public NSRange rangeOfString_options_range_ (NSString aString, NSStringCompareOptions mask, NSRange searchRange)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfString_1options_1range_1, aString !is null ? aString.id : null, mask, searchRange);
+        return result;
+    }
+
+    public NSRange rangeOfString_options_range_locale_ (NSString aString, NSStringCompareOptions mask, NSRange searchRange, NSLocale locale)
+    {
+        NSRange result;
+        OS.objc_msgSend_stret(result, this.id, OS.sel_rangeOfString_1options_1range_1locale_1, aString !is null ? aString.id : null, mask,
+                searchRange, locale !is null ? locale.id : null);
+        return result;
+    }
+
+    public NSStringEncoding smallestEncoding ()
+    {
+        return OS.objc_msgSend(this.id, OS.sel_smallestEncoding);
+    }
+
+    public static NSString string ()
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_string);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public NSString stringByAbbreviatingWithTildeInPath ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAbbreviatingWithTildeInPath);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByAddingPercentEscapesUsingEncoding (NSStringEncoding enc)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAddingPercentEscapesUsingEncoding_1, enc);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByAppendingFormat (NSString stringByAppendingFormat)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAppendingFormat_1,
+                stringByAppendingFormat !is null ? stringByAppendingFormat.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByAppendingPathComponent (NSString str)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAppendingPathComponent_1, str !is null ? str.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByAppendingPathExtension (NSString str)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAppendingPathExtension_1, str !is null ? str.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByAppendingString (NSString aString)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByAppendingString_1, aString !is null ? aString.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByDeletingLastPathComponent ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByDeletingLastPathComponent);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByDeletingPathExtension ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByDeletingPathExtension);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByExpandingTildeInPath ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByExpandingTildeInPath);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByFoldingWithOptions (NSStringCompareOptions options, NSLocale locale)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByFoldingWithOptions_1locale_1, options, locale !is null ? locale.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByPaddingToLength (NSUInteger newLength, NSString padString, NSUInteger padIndex)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByPaddingToLength_1withString_1startingAtIndex_1, newLength,
+                padString !is null ? padString.id : null, padIndex);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByReplacingCharactersInRange (NSRange range, NSString replacement)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByReplacingCharactersInRange_1withString_1, range,
+                replacement !is null ? replacement.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByReplacingOccurrencesOfString_withString_ (NSString target, NSString replacement)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByReplacingOccurrencesOfString_1withString_1, target !is null ? target.id : null,
+                replacement !is null ? replacement.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByReplacingOccurrencesOfString_withString_options_range_ (NSString target, NSString replacement, NSStringCompareOptions options,
+            NSRange searchRange)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByReplacingOccurrencesOfString_1withString_1options_1range_1,
+                target !is null ? target.id : null, replacement !is null ? replacement.id : null, options, searchRange);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByReplacingPercentEscapesUsingEncoding (NSStringEncoding enc)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByReplacingPercentEscapesUsingEncoding_1, enc);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByResolvingSymlinksInPath ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByResolvingSymlinksInPath);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByStandardizingPath ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByStandardizingPath);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString stringByTrimmingCharactersInSet (NSCharacterSet set)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringByTrimmingCharactersInSet_1, set !is null ? set.id : null);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public static id static_stringWithCString_ (/*const char* */byte* bytes)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithCString_1, bytes);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static id static_stringWithCString_encoding_ (/*const char* */byte* cString, NSStringEncoding enc)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithCString_1encoding_1, cString, enc);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static NSString static_stringWithCString_length_ (/*const char* */byte* bytes, NSUInteger length)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithCString_1length_1, bytes, length);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static NSString stringWithCharacters (/*const*/wchar* characters, NSUInteger length)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithCharacters_1length_1, characters, length);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static NSString stringWith (String str)
+    {
+        char[] chars = str.dup;
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithCharacters_1length_1, chars.toStringz(), chars.length);
+        return result !is null ? new NSString(result) : null;
+    }
+
+    public static id static_stringWithContentsOfFile_ (NSString path)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfFile_1, path !is null ? path.id : null);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id static_stringWithContentsOfFile_encoding_error_ (NSString path, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfFile_1encoding_1error_1, path !is null ? path.id : null, enc,
+                error);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id static_stringWithContentsOfFile_usedEncoding_error_ (NSString path, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfFile_1usedEncoding_1error_1, path !is null ? path.id : null,
+                enc, error);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id static_stringWithContentsOfURL_ (NSURL url)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfURL_1, url !is null ? url.id : null);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id static_stringWithContentsOfURL_encoding_error_ (NSURL url, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfURL_1encoding_1error_1, url !is null ? url.id : null, enc,
+                error);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id static_stringWithContentsOfURL_usedEncoding_error_ (NSURL url, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithContentsOfURL_1usedEncoding_1error_1, url !is null ? url.id : null, enc,
+                error);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id stringWithFormat (NSString stringWithFormat)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithFormat_1, stringWithFormat !is null ? stringWithFormat.id : null);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id stringWithString (NSString string)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithString_1, string !is null ? string.id : null);
+        return result !is null ? new id(result) : null;
+    }
+
+    public static id stringWithUTF8String (/*const*/char* nullTerminatedCString)
+    {
+        objc.id result = OS.objc_msgSend(OS.class_NSString, OS.sel_stringWithUTF8String_1, nullTerminatedCString);
+        return result !is null ? new id(result) : null;
+    }
+
+    public NSArray stringsByAppendingPaths (NSArray paths)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_stringsByAppendingPaths_1, paths !is null ? paths.id : null);
+        return result !is null ? new NSArray(result) : null;
+    }
+
+    public NSString substringFromIndex (NSUInteger from)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_substringFromIndex_1, from);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString substringToIndex (NSUInteger to)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_substringToIndex_1, to);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString substringWithRange (NSRange range)
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_substringWithRange_1, range);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public NSString uppercaseString ()
+    {
+        objc.id result = OS.objc_msgSend(this.id, OS.sel_uppercaseString);
+        return result is this.id ? this : (result !is null ? new NSString(result) : null);
+    }
+
+    public bool writeToFile_atomically_ (NSString path, bool useAuxiliaryFile)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_writeToFile_1atomically_1, path !is null ? path.id : null, useAuxiliaryFile) !is null;
+    }
+
+    public bool writeToFile_atomically_encoding_error_ (NSString path, bool useAuxiliaryFile, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_writeToFile_1atomically_1encoding_1error_1, path !is null ? path.id : null, useAuxiliaryFile, enc,
+                error) !is null;
+    }
+
+    public bool writeToURL_atomically_ (NSURL url, bool atomically)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_writeToURL_1atomically_1, url !is null ? url.id : null, atomically) !is null;
+    }
+
+    public bool writeToURL_atomically_encoding_error_ (NSURL url, bool useAuxiliaryFile, NSStringEncoding enc, /*NSError** */objc.id** error)
+    {
+        return OS.objc_msgSend(this.id, OS.sel_writeToURL_1atomically_1encoding_1error_1, url !is null ? url.id : null, useAuxiliaryFile, enc, error) !is null;
+    }
+
+}