diff dstep/appkit/NSAttributedString.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
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/appkit/NSAttributedString.d	Sun Jan 03 22:06:11 2010 +0100
@@ -0,0 +1,1395 @@
+/**
+ * Copyright: Copyright (c) 2009 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Sep 24, 2009 
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module dstep.appkit.NSAttributedString;
+
+import dstep.appkit.AppKitDefines;
+import dstep.appkit.NSFileWrapper;
+import dstep.appkit.NSFontManager;
+import dstep.appkit.NSText;
+import dstep.appkit.NSTextList;
+import dstep.appkit.NSTextTable;
+import dstep.foundation.NSAttributedString;
+import dstep.foundation.NSObjCRuntime;
+import dstep.foundation.NSString;
+import dstep.foundation.NSURL;
+import dstep.objc.bridge.Bridge;
+import dstep.objc.objc;
+
+import bindings = dstep.appkit.NSAttributedString_bindings;
+
+extern (C)
+{
+	extern
+	{
+		NSUInteger NSUnderlineByWordMask;
+		NSUInteger NSUnderlineStrikethroughMask;
+	}
+}
+
+private
+{
+	NSString NSFontAttributeName_;
+	NSString NSParagraphStyleAttributeName_;
+	NSString NSForegroundColorAttributeName_;
+	NSString NSUnderlineStyleAttributeName_;
+	NSString NSSuperscriptAttributeName_;
+	NSString NSBackgroundColorAttributeName_;
+	NSString NSAttachmentAttributeName_;
+	NSString NSLigatureAttributeName_;
+	NSString NSBaselineOffsetAttributeName_;
+	NSString NSKernAttributeName_;
+	NSString NSLinkAttributeName_;
+	NSString NSStrokeWidthAttributeName_;
+	NSString NSStrokeColorAttributeName_;
+	NSString NSUnderlineColorAttributeName_;
+	NSString NSStrikethroughStyleAttributeName_;
+	NSString NSStrikethroughColorAttributeName_;
+	NSString NSShadowAttributeName_;
+	NSString NSObliquenessAttributeName_;
+	NSString NSExpansionAttributeName_;
+	NSString NSCursorAttributeName_;
+	NSString NSToolTipAttributeName_;
+	NSString NSCharacterShapeAttributeName_;
+	NSString NSGlyphInfoAttributeName_;
+	NSString NSMarkedClauseSegmentAttributeName_;
+	NSString NSSpellingStateAttributeName_;
+	NSString NSPlainTextDocumentType_;
+	NSString NSRTFTextDocumentType_;
+	NSString NSRTFDTextDocumentType_;
+	NSString NSMacSimpleTextDocumentType_;
+	NSString NSHTMLTextDocumentType_;
+	NSString NSDocFormatTextDocumentType_;
+	NSString NSWordMLTextDocumentType_;
+	NSString NSWebArchiveTextDocumentType_;
+	NSString NSOfficeOpenXMLTextDocumentType_;
+	NSString NSOpenDocumentTextDocumentType_;
+	NSString NSPaperSizeDocumentAttribute_;
+	NSString NSLeftMarginDocumentAttribute_;
+	NSString NSRightMarginDocumentAttribute_;
+	NSString NSTopMarginDocumentAttribute_;
+	NSString NSBottomMarginDocumentAttribute_;
+	NSString NSViewSizeDocumentAttribute_;
+	NSString NSViewZoomDocumentAttribute_;
+	NSString NSViewModeDocumentAttribute_;
+	NSString NSDocumentTypeDocumentAttribute_;
+	NSString NSReadOnlyDocumentAttribute_;
+	NSString NSConvertedDocumentAttribute_;
+	NSString NSCocoaVersionDocumentAttribute_;
+	NSString NSBackgroundColorDocumentAttribute_;
+	NSString NSHyphenationFactorDocumentAttribute_;
+	NSString NSDefaultTabIntervalDocumentAttribute_;
+	NSString NSCharacterEncodingDocumentAttribute_;
+	NSString NSTitleDocumentAttribute_;
+	NSString NSCompanyDocumentAttribute_;
+	NSString NSCopyrightDocumentAttribute_;
+	NSString NSSubjectDocumentAttribute_;
+	NSString NSAuthorDocumentAttribute_;
+	NSString NSKeywordsDocumentAttribute_;
+	NSString NSCommentDocumentAttribute_;
+	NSString NSEditorDocumentAttribute_;
+	NSString NSCreationTimeDocumentAttribute_;
+	NSString NSModificationTimeDocumentAttribute_;
+	NSString NSExcludedElementsDocumentAttribute_;
+	NSString NSTextEncodingNameDocumentAttribute_;
+	NSString NSPrefixSpacesDocumentAttribute_;
+	NSString NSDocumentTypeDocumentOption_;
+	NSString NSDefaultAttributesDocumentOption_;
+	NSString NSCharacterEncodingDocumentOption_;
+	NSString NSTextEncodingNameDocumentOption_;
+	NSString NSBaseURLDocumentOption_;
+	NSString NSTimeoutDocumentOption_;
+	NSString NSWebPreferencesDocumentOption_;
+	NSString NSWebResourceLoadDelegateDocumentOption_;
+	NSString NSTextSizeMultiplierDocumentOption_;
+}
+
+NSString NSFontAttributeName ()
+{
+	if (NSFontAttributeName_)
+		return NSFontAttributeName_;
+
+	return NSFontAttributeName_ = new NSString(bindings.NSFontAttributeName);
+}
+
+NSString NSParagraphStyleAttributeName ()
+{
+	if (NSParagraphStyleAttributeName_)
+		return NSParagraphStyleAttributeName_;
+
+	return NSParagraphStyleAttributeName_ = new NSString(bindings.NSParagraphStyleAttributeName);
+}
+
+NSString NSForegroundColorAttributeName ()
+{
+	if (NSForegroundColorAttributeName_)
+		return NSForegroundColorAttributeName_;
+
+	return NSForegroundColorAttributeName_ = new NSString(bindings.NSForegroundColorAttributeName);
+}
+
+NSString NSUnderlineStyleAttributeName ()
+{
+	if (NSUnderlineStyleAttributeName_)
+		return NSUnderlineStyleAttributeName_;
+
+	return NSUnderlineStyleAttributeName_ = new NSString(bindings.NSUnderlineStyleAttributeName);
+}
+
+NSString NSSuperscriptAttributeName ()
+{
+	if (NSSuperscriptAttributeName_)
+		return NSSuperscriptAttributeName_;
+
+	return NSSuperscriptAttributeName_ = new NSString(bindings.NSSuperscriptAttributeName);
+}
+
+NSString NSBackgroundColorAttributeName ()
+{
+	if (NSBackgroundColorAttributeName_)
+		return NSBackgroundColorAttributeName_;
+
+	return NSBackgroundColorAttributeName_ = new NSString(bindings.NSBackgroundColorAttributeName);
+}
+
+NSString NSAttachmentAttributeName ()
+{
+	if (NSAttachmentAttributeName_)
+		return NSAttachmentAttributeName_;
+
+	return NSAttachmentAttributeName_ = new NSString(bindings.NSAttachmentAttributeName);
+}
+
+NSString NSLigatureAttributeName ()
+{
+	if (NSLigatureAttributeName_)
+		return NSLigatureAttributeName_;
+
+	return NSLigatureAttributeName_ = new NSString(bindings.NSLigatureAttributeName);
+}
+
+NSString NSBaselineOffsetAttributeName ()
+{
+	if (NSBaselineOffsetAttributeName_)
+		return NSBaselineOffsetAttributeName_;
+
+	return NSBaselineOffsetAttributeName_ = new NSString(bindings.NSBaselineOffsetAttributeName);
+}
+
+NSString NSKernAttributeName ()
+{
+	if (NSKernAttributeName_)
+		return NSKernAttributeName_;
+
+	return NSKernAttributeName_ = new NSString(bindings.NSKernAttributeName);
+}
+
+NSString NSLinkAttributeName ()
+{
+	if (NSLinkAttributeName_)
+		return NSLinkAttributeName_;
+
+	return NSLinkAttributeName_ = new NSString(bindings.NSLinkAttributeName);
+}
+
+NSString NSStrokeWidthAttributeName ()
+{
+	if (NSStrokeWidthAttributeName_)
+		return NSStrokeWidthAttributeName_;
+
+	return NSStrokeWidthAttributeName_ = new NSString(bindings.NSStrokeWidthAttributeName);
+}
+
+NSString NSStrokeColorAttributeName ()
+{
+	if (NSStrokeColorAttributeName_)
+		return NSStrokeColorAttributeName_;
+
+	return NSStrokeColorAttributeName_ = new NSString(bindings.NSStrokeColorAttributeName);
+}
+
+NSString NSUnderlineColorAttributeName ()
+{
+	if (NSUnderlineColorAttributeName_)
+		return NSUnderlineColorAttributeName_;
+
+	return NSUnderlineColorAttributeName_ = new NSString(bindings.NSUnderlineColorAttributeName);
+}
+
+NSString NSStrikethroughStyleAttributeName ()
+{
+	if (NSStrikethroughStyleAttributeName_)
+		return NSStrikethroughStyleAttributeName_;
+
+	return NSStrikethroughStyleAttributeName_ = new NSString(bindings.NSStrikethroughStyleAttributeName);
+}
+
+NSString NSStrikethroughColorAttributeName ()
+{
+	if (NSStrikethroughColorAttributeName_)
+		return NSStrikethroughColorAttributeName_;
+
+	return NSStrikethroughColorAttributeName_ = new NSString(bindings.NSStrikethroughColorAttributeName);
+}
+
+NSString NSShadowAttributeName ()
+{
+	if (NSShadowAttributeName_)
+		return NSShadowAttributeName_;
+
+	return NSShadowAttributeName_ = new NSString(bindings.NSShadowAttributeName);
+}
+
+NSString NSObliquenessAttributeName ()
+{
+	if (NSObliquenessAttributeName_)
+		return NSObliquenessAttributeName_;
+
+	return NSObliquenessAttributeName_ = new NSString(bindings.NSObliquenessAttributeName);
+}
+
+NSString NSExpansionAttributeName ()
+{
+	if (NSExpansionAttributeName_)
+		return NSExpansionAttributeName_;
+
+	return NSExpansionAttributeName_ = new NSString(bindings.NSExpansionAttributeName);
+}
+
+NSString NSCursorAttributeName ()
+{
+	if (NSCursorAttributeName_)
+		return NSCursorAttributeName_;
+
+	return NSCursorAttributeName_ = new NSString(bindings.NSCursorAttributeName);
+}
+
+NSString NSToolTipAttributeName ()
+{
+	if (NSToolTipAttributeName_)
+		return NSToolTipAttributeName_;
+
+	return NSToolTipAttributeName_ = new NSString(bindings.NSToolTipAttributeName);
+}
+
+NSString NSCharacterShapeAttributeName ()
+{
+	if (NSCharacterShapeAttributeName_)
+		return NSCharacterShapeAttributeName_;
+
+	return NSCharacterShapeAttributeName_ = new NSString(bindings.NSCharacterShapeAttributeName);
+}
+
+NSString NSGlyphInfoAttributeName ()
+{
+	if (NSGlyphInfoAttributeName_)
+		return NSGlyphInfoAttributeName_;
+
+	return NSGlyphInfoAttributeName_ = new NSString(bindings.NSGlyphInfoAttributeName);
+}
+
+NSString NSMarkedClauseSegmentAttributeName ()
+{
+	if (NSMarkedClauseSegmentAttributeName_)
+		return NSMarkedClauseSegmentAttributeName_;
+
+	return NSMarkedClauseSegmentAttributeName_ = new NSString(bindings.NSMarkedClauseSegmentAttributeName);
+}
+
+NSString NSSpellingStateAttributeName ()
+{
+	if (NSSpellingStateAttributeName_)
+		return NSSpellingStateAttributeName_;
+
+	return NSSpellingStateAttributeName_ = new NSString(bindings.NSSpellingStateAttributeName);
+}
+
+NSString NSPlainTextDocumentType ()
+{
+	if (NSPlainTextDocumentType_)
+		return NSPlainTextDocumentType_;
+
+	return NSPlainTextDocumentType_ = new NSString(bindings.NSPlainTextDocumentType);
+}
+
+NSString NSRTFTextDocumentType ()
+{
+	if (NSRTFTextDocumentType_)
+		return NSRTFTextDocumentType_;
+
+	return NSRTFTextDocumentType_ = new NSString(bindings.NSRTFTextDocumentType);
+}
+
+NSString NSRTFDTextDocumentType ()
+{
+	if (NSRTFDTextDocumentType_)
+		return NSRTFDTextDocumentType_;
+
+	return NSRTFDTextDocumentType_ = new NSString(bindings.NSRTFDTextDocumentType);
+}
+
+NSString NSMacSimpleTextDocumentType ()
+{
+	if (NSMacSimpleTextDocumentType_)
+		return NSMacSimpleTextDocumentType_;
+
+	return NSMacSimpleTextDocumentType_ = new NSString(bindings.NSMacSimpleTextDocumentType);
+}
+
+NSString NSHTMLTextDocumentType ()
+{
+	if (NSHTMLTextDocumentType_)
+		return NSHTMLTextDocumentType_;
+
+	return NSHTMLTextDocumentType_ = new NSString(bindings.NSHTMLTextDocumentType);
+}
+
+NSString NSDocFormatTextDocumentType ()
+{
+	if (NSDocFormatTextDocumentType_)
+		return NSDocFormatTextDocumentType_;
+
+	return NSDocFormatTextDocumentType_ = new NSString(bindings.NSDocFormatTextDocumentType);
+}
+
+NSString NSWordMLTextDocumentType ()
+{
+	if (NSWordMLTextDocumentType_)
+		return NSWordMLTextDocumentType_;
+
+	return NSWordMLTextDocumentType_ = new NSString(bindings.NSWordMLTextDocumentType);
+}
+
+NSString NSWebArchiveTextDocumentType ()
+{
+	if (NSWebArchiveTextDocumentType_)
+		return NSWebArchiveTextDocumentType_;
+
+	return NSWebArchiveTextDocumentType_ = new NSString(bindings.NSWebArchiveTextDocumentType);
+}
+
+NSString NSOfficeOpenXMLTextDocumentType ()
+{
+	if (NSOfficeOpenXMLTextDocumentType_)
+		return NSOfficeOpenXMLTextDocumentType_;
+
+	return NSOfficeOpenXMLTextDocumentType_ = new NSString(bindings.NSOfficeOpenXMLTextDocumentType);
+}
+
+NSString NSOpenDocumentTextDocumentType ()
+{
+	if (NSOpenDocumentTextDocumentType_)
+		return NSOpenDocumentTextDocumentType_;
+
+	return NSOpenDocumentTextDocumentType_ = new NSString(bindings.NSOpenDocumentTextDocumentType);
+}
+
+NSString NSPaperSizeDocumentAttribute ()
+{
+	if (NSPaperSizeDocumentAttribute_)
+		return NSPaperSizeDocumentAttribute_;
+
+	return NSPaperSizeDocumentAttribute_ = new NSString(bindings.NSPaperSizeDocumentAttribute);
+}
+
+NSString NSLeftMarginDocumentAttribute ()
+{
+	if (NSLeftMarginDocumentAttribute_)
+		return NSLeftMarginDocumentAttribute_;
+
+	return NSLeftMarginDocumentAttribute_ = new NSString(bindings.NSLeftMarginDocumentAttribute);
+}
+
+NSString NSRightMarginDocumentAttribute ()
+{
+	if (NSRightMarginDocumentAttribute_)
+		return NSRightMarginDocumentAttribute_;
+
+	return NSRightMarginDocumentAttribute_ = new NSString(bindings.NSRightMarginDocumentAttribute);
+}
+
+NSString NSTopMarginDocumentAttribute ()
+{
+	if (NSTopMarginDocumentAttribute_)
+		return NSTopMarginDocumentAttribute_;
+
+	return NSTopMarginDocumentAttribute_ = new NSString(bindings.NSTopMarginDocumentAttribute);
+}
+
+NSString NSBottomMarginDocumentAttribute ()
+{
+	if (NSBottomMarginDocumentAttribute_)
+		return NSBottomMarginDocumentAttribute_;
+
+	return NSBottomMarginDocumentAttribute_ = new NSString(bindings.NSBottomMarginDocumentAttribute);
+}
+
+NSString NSViewSizeDocumentAttribute ()
+{
+	if (NSViewSizeDocumentAttribute_)
+		return NSViewSizeDocumentAttribute_;
+
+	return NSViewSizeDocumentAttribute_ = new NSString(bindings.NSViewSizeDocumentAttribute);
+}
+
+NSString NSViewZoomDocumentAttribute ()
+{
+	if (NSViewZoomDocumentAttribute_)
+		return NSViewZoomDocumentAttribute_;
+
+	return NSViewZoomDocumentAttribute_ = new NSString(bindings.NSViewZoomDocumentAttribute);
+}
+
+NSString NSViewModeDocumentAttribute ()
+{
+	if (NSViewModeDocumentAttribute_)
+		return NSViewModeDocumentAttribute_;
+
+	return NSViewModeDocumentAttribute_ = new NSString(bindings.NSViewModeDocumentAttribute);
+}
+
+NSString NSDocumentTypeDocumentAttribute ()
+{
+	if (NSDocumentTypeDocumentAttribute_)
+		return NSDocumentTypeDocumentAttribute_;
+
+	return NSDocumentTypeDocumentAttribute_ = new NSString(bindings.NSDocumentTypeDocumentAttribute);
+}
+
+NSString NSReadOnlyDocumentAttribute ()
+{
+	if (NSReadOnlyDocumentAttribute_)
+		return NSReadOnlyDocumentAttribute_;
+
+	return NSReadOnlyDocumentAttribute_ = new NSString(bindings.NSReadOnlyDocumentAttribute);
+}
+
+NSString NSConvertedDocumentAttribute ()
+{
+	if (NSConvertedDocumentAttribute_)
+		return NSConvertedDocumentAttribute_;
+
+	return NSConvertedDocumentAttribute_ = new NSString(bindings.NSConvertedDocumentAttribute);
+}
+
+NSString NSCocoaVersionDocumentAttribute ()
+{
+	if (NSCocoaVersionDocumentAttribute_)
+		return NSCocoaVersionDocumentAttribute_;
+
+	return NSCocoaVersionDocumentAttribute_ = new NSString(bindings.NSCocoaVersionDocumentAttribute);
+}
+
+NSString NSBackgroundColorDocumentAttribute ()
+{
+	if (NSBackgroundColorDocumentAttribute_)
+		return NSBackgroundColorDocumentAttribute_;
+
+	return NSBackgroundColorDocumentAttribute_ = new NSString(bindings.NSBackgroundColorDocumentAttribute);
+}
+
+NSString NSHyphenationFactorDocumentAttribute ()
+{
+	if (NSHyphenationFactorDocumentAttribute_)
+		return NSHyphenationFactorDocumentAttribute_;
+
+	return NSHyphenationFactorDocumentAttribute_ = new NSString(bindings.NSHyphenationFactorDocumentAttribute);
+}
+
+NSString NSDefaultTabIntervalDocumentAttribute ()
+{
+	if (NSDefaultTabIntervalDocumentAttribute_)
+		return NSDefaultTabIntervalDocumentAttribute_;
+
+	return NSDefaultTabIntervalDocumentAttribute_ = new NSString(bindings.NSDefaultTabIntervalDocumentAttribute);
+}
+
+NSString NSCharacterEncodingDocumentAttribute ()
+{
+	if (NSCharacterEncodingDocumentAttribute_)
+		return NSCharacterEncodingDocumentAttribute_;
+
+	return NSCharacterEncodingDocumentAttribute_ = new NSString(bindings.NSCharacterEncodingDocumentAttribute);
+}
+
+NSString NSTitleDocumentAttribute ()
+{
+	if (NSTitleDocumentAttribute_)
+		return NSTitleDocumentAttribute_;
+
+	return NSTitleDocumentAttribute_ = new NSString(bindings.NSTitleDocumentAttribute);
+}
+
+NSString NSCompanyDocumentAttribute ()
+{
+	if (NSCompanyDocumentAttribute_)
+		return NSCompanyDocumentAttribute_;
+
+	return NSCompanyDocumentAttribute_ = new NSString(bindings.NSCompanyDocumentAttribute);
+}
+
+NSString NSCopyrightDocumentAttribute ()
+{
+	if (NSCopyrightDocumentAttribute_)
+		return NSCopyrightDocumentAttribute_;
+
+	return NSCopyrightDocumentAttribute_ = new NSString(bindings.NSCopyrightDocumentAttribute);
+}
+
+NSString NSSubjectDocumentAttribute ()
+{
+	if (NSSubjectDocumentAttribute_)
+		return NSSubjectDocumentAttribute_;
+
+	return NSSubjectDocumentAttribute_ = new NSString(bindings.NSSubjectDocumentAttribute);
+}
+
+NSString NSAuthorDocumentAttribute ()
+{
+	if (NSAuthorDocumentAttribute_)
+		return NSAuthorDocumentAttribute_;
+
+	return NSAuthorDocumentAttribute_ = new NSString(bindings.NSAuthorDocumentAttribute);
+}
+
+NSString NSKeywordsDocumentAttribute ()
+{
+	if (NSKeywordsDocumentAttribute_)
+		return NSKeywordsDocumentAttribute_;
+
+	return NSKeywordsDocumentAttribute_ = new NSString(bindings.NSKeywordsDocumentAttribute);
+}
+
+NSString NSCommentDocumentAttribute ()
+{
+	if (NSCommentDocumentAttribute_)
+		return NSCommentDocumentAttribute_;
+
+	return NSCommentDocumentAttribute_ = new NSString(bindings.NSCommentDocumentAttribute);
+}
+
+NSString NSEditorDocumentAttribute ()
+{
+	if (NSEditorDocumentAttribute_)
+		return NSEditorDocumentAttribute_;
+
+	return NSEditorDocumentAttribute_ = new NSString(bindings.NSEditorDocumentAttribute);
+}
+
+NSString NSCreationTimeDocumentAttribute ()
+{
+	if (NSCreationTimeDocumentAttribute_)
+		return NSCreationTimeDocumentAttribute_;
+
+	return NSCreationTimeDocumentAttribute_ = new NSString(bindings.NSCreationTimeDocumentAttribute);
+}
+
+NSString NSModificationTimeDocumentAttribute ()
+{
+	if (NSModificationTimeDocumentAttribute_)
+		return NSModificationTimeDocumentAttribute_;
+
+	return NSModificationTimeDocumentAttribute_ = new NSString(bindings.NSModificationTimeDocumentAttribute);
+}
+
+NSString NSExcludedElementsDocumentAttribute ()
+{
+	if (NSExcludedElementsDocumentAttribute_)
+		return NSExcludedElementsDocumentAttribute_;
+
+	return NSExcludedElementsDocumentAttribute_ = new NSString(bindings.NSExcludedElementsDocumentAttribute);
+}
+
+NSString NSTextEncodingNameDocumentAttribute ()
+{
+	if (NSTextEncodingNameDocumentAttribute_)
+		return NSTextEncodingNameDocumentAttribute_;
+
+	return NSTextEncodingNameDocumentAttribute_ = new NSString(bindings.NSTextEncodingNameDocumentAttribute);
+}
+
+NSString NSPrefixSpacesDocumentAttribute ()
+{
+	if (NSPrefixSpacesDocumentAttribute_)
+		return NSPrefixSpacesDocumentAttribute_;
+
+	return NSPrefixSpacesDocumentAttribute_ = new NSString(bindings.NSPrefixSpacesDocumentAttribute);
+}
+
+NSString NSDocumentTypeDocumentOption ()
+{
+	if (NSDocumentTypeDocumentOption_)
+		return NSDocumentTypeDocumentOption_;
+
+	return NSDocumentTypeDocumentOption_ = new NSString(bindings.NSDocumentTypeDocumentOption);
+}
+
+NSString NSDefaultAttributesDocumentOption ()
+{
+	if (NSDefaultAttributesDocumentOption_)
+		return NSDefaultAttributesDocumentOption_;
+
+	return NSDefaultAttributesDocumentOption_ = new NSString(bindings.NSDefaultAttributesDocumentOption);
+}
+
+NSString NSCharacterEncodingDocumentOption ()
+{
+	if (NSCharacterEncodingDocumentOption_)
+		return NSCharacterEncodingDocumentOption_;
+
+	return NSCharacterEncodingDocumentOption_ = new NSString(bindings.NSCharacterEncodingDocumentOption);
+}
+
+NSString NSTextEncodingNameDocumentOption ()
+{
+	if (NSTextEncodingNameDocumentOption_)
+		return NSTextEncodingNameDocumentOption_;
+
+	return NSTextEncodingNameDocumentOption_ = new NSString(bindings.NSTextEncodingNameDocumentOption);
+}
+
+NSString NSBaseURLDocumentOption ()
+{
+	if (NSBaseURLDocumentOption_)
+		return NSBaseURLDocumentOption_;
+
+	return NSBaseURLDocumentOption_ = new NSString(bindings.NSBaseURLDocumentOption);
+}
+
+NSString NSTimeoutDocumentOption ()
+{
+	if (NSTimeoutDocumentOption_)
+		return NSTimeoutDocumentOption_;
+
+	return NSTimeoutDocumentOption_ = new NSString(bindings.NSTimeoutDocumentOption);
+}
+
+NSString NSWebPreferencesDocumentOption ()
+{
+	if (NSWebPreferencesDocumentOption_)
+		return NSWebPreferencesDocumentOption_;
+
+	return NSWebPreferencesDocumentOption_ = new NSString(bindings.NSWebPreferencesDocumentOption);
+}
+
+NSString NSWebResourceLoadDelegateDocumentOption ()
+{
+	if (NSWebResourceLoadDelegateDocumentOption_)
+		return NSWebResourceLoadDelegateDocumentOption_;
+
+	return NSWebResourceLoadDelegateDocumentOption_ = new NSString(bindings.NSWebResourceLoadDelegateDocumentOption);
+}
+
+NSString NSTextSizeMultiplierDocumentOption ()
+{
+	if (NSTextSizeMultiplierDocumentOption_)
+		return NSTextSizeMultiplierDocumentOption_;
+
+	return NSTextSizeMultiplierDocumentOption_ = new NSString(bindings.NSTextSizeMultiplierDocumentOption);
+}
+
+enum
+{
+	NSUnderlineStyleNone = 0x00,
+	NSUnderlineStyleSingle = 0x01,
+	NSUnderlineStyleThick = 0x02,
+	NSUnderlineStyleDouble = 0x09
+}
+
+enum
+{
+	NSUnderlinePatternSolid = 0x0000,
+	NSUnderlinePatternDot = 0x0100,
+	NSUnderlinePatternDash = 0x0200,
+	NSUnderlinePatternDashDot = 0x0300,
+	NSUnderlinePatternDashDotDot = 0x0400
+}
+
+enum
+{
+	NSSpellingStateSpellingFlag = (1 << 0),
+	NSSpellingStateGrammarFlag = (1 << 1)
+}
+
+enum
+{
+	NSNoUnderlineStyle = 0,
+	NSSingleUnderlineStyle
+}
+
+const TNSMutableAttributedStringKitAdditions = `
+
+	bool readFromURL (NSURL url, NSDictionary opts, ref NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+		id __arg3;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		if (error)
+			__arg3 = error.objcObject;
+
+		bool result = invokeObjcSelf!(bool, "readFromURL:options:documentAttributes:error:", NSURL, NSDictionary, id*, id*)(url, opts, &__arg2, &__arg3);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+		if (__arg3)
+			error = new NSError(__arg3);
+
+		return result;
+	}
+
+	bool readFromData (NSData data, NSDictionary opts, ref NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+		id __arg3;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		if (error)
+			__arg3 = error.objcObject;
+
+		bool result = invokeObjcSelf!(bool, "readFromData:options:documentAttributes:error:", NSData, NSDictionary, id*, id*)(data, opts, &__arg2, &__arg3);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+		if (__arg3)
+			error = new NSError(__arg3);
+
+		return result;
+	}
+
+	bool readFromURL (NSURL url, NSDictionary options, ref NSDictionary dict)
+	{
+		id __arg2;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		bool result = invokeObjcSelf!(bool, "readFromURL:options:documentAttributes:", NSURL, NSDictionary, id*)(url, options, &__arg2);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+
+		return result;
+	}
+
+	bool readFromData (NSData data, NSDictionary options, ref NSDictionary dict)
+	{
+		id __arg2;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		bool result = invokeObjcSelf!(bool, "readFromData:options:documentAttributes:", NSData, NSDictionary, id*)(data, options, &__arg2);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+
+		return result;
+	}
+
+	void superscriptRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "superscriptRange:", NSRange)(range);
+	}
+
+	void subscriptRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "subscriptRange:", NSRange)(range);
+	}
+
+	void unscriptRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "unscriptRange:", NSRange)(range);
+	}
+
+	void applyFontTraits (uint traitMask, NSRange range)
+	{
+		return invokeObjcSelf!(void, "applyFontTraits:range:", uint, NSRange)(traitMask, range);
+	}
+
+	void setAlignment (uint alignment, NSRange range)
+	{
+		return invokeObjcSelf!(void, "setAlignment:range:", uint, NSRange)(alignment, range);
+	}
+
+	void setBaseWritingDirection (int writingDirection, NSRange range)
+	{
+		return invokeObjcSelf!(void, "setBaseWritingDirection:range:", int, NSRange)(writingDirection, range);
+	}
+
+	void fixAttributesInRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "fixAttributesInRange:", NSRange)(range);
+	}
+
+	void fixFontAttributeInRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "fixFontAttributeInRange:", NSRange)(range);
+	}
+
+	void fixParagraphStyleAttributeInRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "fixParagraphStyleAttributeInRange:", NSRange)(range);
+	}
+
+	void fixAttachmentAttributeInRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "fixAttachmentAttributeInRange:", NSRange)(range);
+	}
+
+	////mixin ObjcBindMethod!(readFromURL, bool, "readFromURL:options:documentAttributes:error:", NSURL, NSDictionary, ref NSDictionary, ref NSError);
+	////mixin ObjcBindMethod!(readFromData, bool, "readFromData:options:documentAttributes:error:", NSData, NSDictionary, ref NSDictionary, ref NSError);
+	////mixin ObjcBindMethod!(readFromURL, bool, "readFromURL:options:documentAttributes:", NSURL, NSDictionary, ref NSDictionary, ref NSError);	
+	////mixin ObjcBindMethod!(readFromData, bool, "readFromData:options:documentAttributes:", NSData, NSDictionary, ref NSDictionary, ref NSError);
+	//mixin ObjcBindMethod!(superscriptRange, "superscriptRange:");
+	//mixin ObjcBindMethod!(subscriptRange, "subscriptRange:");
+	//mixin ObjcBindMethod!(unscriptRange, "unscriptRange:");
+	//mixin ObjcBindMethod!(applyFontTraits, "applyFontTraits:range:");
+	//mixin ObjcBindMethod!(setAlignment, "setAlignment:range:");
+	//mixin ObjcBindMethod!(setBaseWritingDirection, "setBaseWritingDirection:range:");
+	//mixin ObjcBindMethod!(fixAttributesInRange, "fixAttributesInRange:");
+	//mixin ObjcBindMethod!(fixFontAttributeInRange, "fixFontAttributeInRange:");
+	//mixin ObjcBindMethod!(fixParagraphStyleAttributeInRange, "fixParagraphStyleAttributeInRange:");
+	//mixin ObjcBindMethod!(fixAttachmentAttributeInRange, "fixAttachmentAttributeInRange:");
+
+`;
+
+const TNSExtendedAttributedString = `
+
+	//import dstep.appkit.NSAttributedString;
+				
+	Object attribute (NSString attrName, NSUInteger location, NSRangePointer range)
+	{
+		return invokeObjcSelf!(Object, "attribute:atIndex:effectiveRange:", NSString, NSUInteger, NSRangePointer)(attrName, location, range);
+	}
+
+	NSAttributedString attributedSubstringFromRange (NSRange range)
+	{
+		return invokeObjcSelf!(NSAttributedString, "attributedSubstringFromRange:", NSRange)(range);
+	}
+
+	NSDictionary attributesAtIndex (NSUInteger location, NSRangePointer range, NSRange rangeLimit)
+	{
+		return invokeObjcSelf!(NSDictionary, "attributesAtIndex:longestEffectiveRange:inRange:", NSUInteger, NSRangePointer, NSRange)(location, range, rangeLimit);
+	}
+
+	Object attribute (NSString attrName, NSUInteger location, NSRangePointer range, NSRange rangeLimit)
+	{
+		return invokeObjcSelf!(Object, "attribute:atIndex:longestEffectiveRange:inRange:", NSString, NSUInteger, NSRangePointer, NSRange)(attrName, location, range, rangeLimit);
+	}
+
+	bool isEqualToAttributedString (NSAttributedString other)
+	{
+		return invokeObjcSelf!(bool, "isEqualToAttributedString:", NSAttributedString)(other);
+	}
+
+	//mixin ObjcBindMethod!(attribute, "attribute:atIndex:effectiveRange:");
+	//mixin ObjcBindMethod!(attributedSubstringFromRange, "attributedSubstringFromRange:");
+	//mixin ObjcBindMethod!(attributesAtIndex, "attributesAtIndex:longestEffectiveRange:inRange:");
+	//mixin ObjcBindMethod!(attribute, "attribute:atIndex:longestEffectiveRange:inRange:");
+	//mixin ObjcBindMethod!(isEqualToAttributedString, "isEqualToAttributedString:");
+	//mixin ObjcBindMethod!(initWithString, "initWithString:");
+	//mixin ObjcBindMethod!(initWithString, "initWithString:attributes:");
+	//mixin ObjcBindMethod!(initWithAttributedString, "initWithAttributedString:");
+
+`;
+
+const TNSDeprecatedKitAdditions = `
+
+	static NSArray textFileTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textFileTypes");
+	}
+
+	static NSArray textPasteboardTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textPasteboardTypes");
+	}
+
+	static NSArray textUnfilteredFileTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textUnfilteredFileTypes");
+	}
+
+	static NSArray textUnfilteredPasteboardTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textUnfilteredPasteboardTypes");
+	}
+
+	//mixin ObjcBindClassMethod!(textFileTypes, "textFileTypes");
+	//mixin ObjcBindClassMethod!(textPasteboardTypes, "textPasteboardTypes");
+	//mixin ObjcBindClassMethod!(textUnfilteredFileTypes, "textUnfilteredFileTypes");
+	//mixin ObjcBindClassMethod!(textUnfilteredPasteboardTypes, "textUnfilteredPasteboardTypes");
+
+`;
+
+const TNSAttributedStringKitAdditions = `
+
+	/*import dstep.appkit.NSFileWrapper;
+	import dstep.appkit.NSTextList;
+	import dstep.appkit.NSTextTable;*/
+				
+	NSDictionary fontAttributesInRange (NSRange range)
+	{
+		return invokeObjcSelf!(NSDictionary, "fontAttributesInRange:", NSRange)(range);
+	}
+
+	NSDictionary rulerAttributesInRange (NSRange range)
+	{
+		return invokeObjcSelf!(NSDictionary, "rulerAttributesInRange:", NSRange)(range);
+	}
+
+	bool containsAttachments ()
+	{
+		return invokeObjcSelf!(bool, "containsAttachments");
+	}
+
+	NSUInteger lineBreakBeforeIndex (NSUInteger location, NSRange aRange)
+	{
+		return invokeObjcSelf!(NSUInteger, "lineBreakBeforeIndex:withinRange:", NSUInteger, NSRange)(location, aRange);
+	}
+
+	NSUInteger lineBreakByHyphenatingBeforeIndex (NSUInteger location, NSRange aRange)
+	{
+		return invokeObjcSelf!(NSUInteger, "lineBreakByHyphenatingBeforeIndex:withinRange:", NSUInteger, NSRange)(location, aRange);
+	}
+
+	NSRange doubleClickAtIndex (NSUInteger location)
+	{
+		return invokeObjcSelf!(NSRange, "doubleClickAtIndex:", NSUInteger)(location);
+	}
+
+	NSUInteger nextWordFromIndex (NSUInteger location, bool isForward)
+	{
+		return invokeObjcSelf!(NSUInteger, "nextWordFromIndex:forward:", NSUInteger, bool)(location, isForward);
+	}
+
+	NSURL URLAtIndex (NSUInteger location, NSRangePointer effectiveRange)
+	{
+		return invokeObjcSelf!(NSURL, "URLAtIndex:effectiveRange:", NSUInteger, NSRangePointer)(location, effectiveRange);
+	}
+
+	static NSArray textTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textTypes");
+	}
+
+	static NSArray textUnfilteredTypes ()
+	{
+		return invokeObjcSelfClass!(NSArray, "textUnfilteredTypes");
+	}
+
+	NSRange rangeOfTextBlock (NSTextBlock block, NSUInteger location)
+	{
+		return invokeObjcSelf!(NSRange, "rangeOfTextBlock:atIndex:", NSTextBlock, NSUInteger)(block, location);
+	}
+
+	NSRange rangeOfTextTable (NSTextTable table, NSUInteger location)
+	{
+		return invokeObjcSelf!(NSRange, "rangeOfTextTable:atIndex:", NSTextTable, NSUInteger)(table, location);
+	}
+
+	NSRange rangeOfTextList (NSTextList list, NSUInteger location)
+	{
+		return invokeObjcSelf!(NSRange, "rangeOfTextList:atIndex:", NSTextList, NSUInteger)(list, location);
+	}
+
+	NSInteger itemNumberInTextList (NSTextList list, NSUInteger location)
+	{
+		return invokeObjcSelf!(NSInteger, "itemNumberInTextList:atIndex:", NSTextList, NSUInteger)(list, location);
+	}
+
+	typeof(this) initWithURL (NSURL url, NSDictionary options, ref NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+		id __arg3;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		if (error)
+			__arg3 = error.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithURL:options:documentAttributes:error:", NSURL, NSDictionary, id*, id*)(url, options, &__arg2, &__arg3);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+		if (__arg3)
+			error = new NSError(__arg3);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSURL url, NSDictionary options, ref NSDictionary dict, ref NSError error)
+	{
+		super(typeof(this).alloc.initWithURL(url, options, dict, error).objcObject);
+	}
+
+	typeof(this) initWithData (NSData data, NSDictionary options, ref NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+		id __arg3;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		if (error)
+			__arg3 = error.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithData:options:documentAttributes:error:", NSData, NSDictionary, id*, id*)(data, options, &__arg2, &__arg3);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+		if (__arg3)
+			error = new NSError(__arg3);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, NSDictionary options, ref NSDictionary dict, ref NSError error)
+	{
+		super(typeof(this).alloc.initWithData(data, options, dict, error).objcObject);
+	}
+
+	typeof(this) initWithPath (NSString path, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithPath:documentAttributes:", NSString, id*)(path, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSString path, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithPath(path, dict).objcObject);
+	}
+
+	typeof(this) initWithURL (NSURL url, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithURL:documentAttributes:", NSURL, id*)(url, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSURL url, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithURL(url, dict).objcObject);
+	}
+
+	typeof(this) initWithRTF (NSData data, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithRTF:documentAttributes:", NSData, id*)(data, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithRTF(data, dict).objcObject);
+	}
+
+	typeof(this) initWithRTFD (NSData data, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithRTFD:documentAttributes:", NSData, id*)(data, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithRTFD(data, dict).objcObject);
+	}
+
+	typeof(this) initWithHTML (NSData data, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithHTML:documentAttributes:", NSData, id*)(data, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithHTML(data, dict).objcObject);
+	}
+
+	typeof(this) initWithHTML (NSData data, NSURL base, ref NSDictionary dict)
+	{
+		id __arg2;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithHTML:baseURL:documentAttributes:", NSData, NSURL, id*)(data, base, &__arg2);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, NSURL base, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithHTML(data, base, dict).objcObject);
+	}
+
+	typeof(this) initWithDocFormat (NSData data, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithDocFormat:documentAttributes:", NSData, id*)(data, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithDocFormat(data, dict).objcObject);
+	}
+
+	typeof(this) initWithHTML (NSData data, NSDictionary options, ref NSDictionary dict)
+	{
+		id __arg2;
+
+		if (dict)
+			__arg2 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithHTML:options:documentAttributes:", NSData, NSDictionary, id*)(data, options, &__arg2);
+
+		if (__arg2)
+			dict = new NSDictionary(__arg2);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSData data, NSDictionary options, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithHTML(data, options, dict).objcObject);
+	}
+
+	typeof(this) initWithRTFDFileWrapper (NSFileWrapper wrapper, ref NSDictionary dict)
+	{
+		id __arg1;
+
+		if (dict)
+			__arg1 = dict.objcObject;
+
+		id result = invokeObjcSelf!(id, "initWithRTFDFileWrapper:documentAttributes:", NSFileWrapper, id*)(wrapper, &__arg1);
+
+		if (__arg1)
+			dict = new NSDictionary(__arg1);
+
+		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
+	}
+
+	this (NSFileWrapper wrapper, ref NSDictionary dict)
+	{
+		super(typeof(this).alloc.initWithRTFDFileWrapper(wrapper, dict).objcObject);
+	}
+
+	NSData dataFromRange (NSRange range, NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+
+		if (error)
+			__arg2 = error.objcObject;
+
+		NSData result = invokeObjcSelf!(NSData, "dataFromRange:documentAttributes:error:", NSRange, NSDictionary, id*)(range, dict, &__arg2);
+
+		if (__arg2)
+			error = new NSError(__arg2);
+
+		return result;
+	}
+
+	NSFileWrapper fileWrapperFromRange (NSRange range, NSDictionary dict, ref NSError error)
+	{
+		id __arg2;
+
+		if (error)
+			__arg2 = error.objcObject;
+
+		NSFileWrapper result = invokeObjcSelf!(NSFileWrapper, "fileWrapperFromRange:documentAttributes:error:", NSRange, NSDictionary, id*)(range, dict, &__arg2);
+
+		if (__arg2)
+			error = new NSError(__arg2);
+
+		return result;
+	}
+
+	NSData RTFFromRange (NSRange range, NSDictionary dict)
+	{
+		return invokeObjcSelf!(NSData, "RTFFromRange:documentAttributes:", NSRange, NSDictionary)(range, dict);
+	}
+
+	NSData RTFDFromRange (NSRange range, NSDictionary dict)
+	{
+		return invokeObjcSelf!(NSData, "RTFDFromRange:documentAttributes:", NSRange, NSDictionary)(range, dict);
+	}
+
+	NSFileWrapper RTFDFileWrapperFromRange (NSRange range, NSDictionary dict)
+	{
+		return invokeObjcSelf!(NSFileWrapper, "RTFDFileWrapperFromRange:documentAttributes:", NSRange, NSDictionary)(range, dict);
+	}
+
+	NSData docFormatFromRange (NSRange range, NSDictionary dict)
+	{
+		return invokeObjcSelf!(NSData, "docFormatFromRange:documentAttributes:", NSRange, NSDictionary)(range, dict);
+	}
+
+	//mixin ObjcBindMethod!(fontAttributesInRange, "fontAttributesInRange:");
+	//mixin ObjcBindMethod!(rulerAttributesInRange, "rulerAttributesInRange:");
+	//mixin ObjcBindMethod!(containsAttachments, "containsAttachments");
+	//mixin ObjcBindMethod!(lineBreakBeforeIndex, "lineBreakBeforeIndex:withinRange:");
+	//mixin ObjcBindMethod!(lineBreakByHyphenatingBeforeIndex, "lineBreakByHyphenatingBeforeIndex:withinRange:");
+	//mixin ObjcBindMethod!(doubleClickAtIndex, "doubleClickAtIndex:");
+	//mixin ObjcBindMethod!(nextWordFromIndex, "nextWordFromIndex:forward:");
+	//mixin ObjcBindMethod!(URLAtIndex, "URLAtIndex:effectiveRange:");
+	//mixin ObjcBindClassMethod!(textTypes, "textTypes");
+	//mixin ObjcBindClassMethod!(textUnfilteredTypes, "textUnfilteredTypes");
+	//mixin ObjcBindMethod!(rangeOfTextBlock, "rangeOfTextBlock:atIndex:");
+	//mixin ObjcBindMethod!(rangeOfTextTable, "rangeOfTextTable:atIndex:");
+	//mixin ObjcBindMethod!(rangeOfTextList, "rangeOfTextList:atIndex:");
+	//mixin ObjcBindMethod!(itemNumberInTextList, "itemNumberInTextList:atIndex:");
+	/*//mixin ObjcBindMethod!(initWithURL, "initWithURL:options:documentAttributes:error:");
+	//mixin ObjcBindMethod!(initWithData, "initWithData:options:documentAttributes:error:");
+	//mixin ObjcBindMethod!(initWithPath, "initWithPath:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithURL, "initWithURL:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithRTF, "initWithRTF:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithRTFD, "initWithRTFD:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithHTML, "initWithHTML:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithHTML, "initWithHTML:baseURL:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithDocFormat, "initWithDocFormat:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithHTML, "initWithHTML:options:documentAttributes:");
+	//mixin ObjcBindMethod!(initWithRTFDFileWrapper, "initWithRTFDFileWrapper:documentAttributes:");*/
+	/*//mixin ObjcBindMethod!(dataFromRange, "dataFromRange:documentAttributes:error:");
+	//mixin ObjcBindMethod!(fileWrapperFromRange, "fileWrapperFromRange:documentAttributes:error:");*/
+	//mixin ObjcBindMethod!(RTFFromRange, "RTFFromRange:documentAttributes:");
+	//mixin ObjcBindMethod!(RTFDFromRange, "RTFDFromRange:documentAttributes:");
+	//mixin ObjcBindMethod!(RTFDFileWrapperFromRange, "RTFDFileWrapperFromRange:documentAttributes:");
+	//mixin ObjcBindMethod!(docFormatFromRange, "docFormatFromRange:documentAttributes:");
+
+`;
+
+const TNSExtendedMutableAttributedString = `
+
+	/*NSMutableString mutableString ()
+	{
+		return invokeObjcSelf!(NSMutableString, "mutableString");
+	}*/
+
+	void addAttribute (NSString name, Object value, NSRange range)
+	{
+		return invokeObjcSelf!(void, "addAttribute:value:range:", NSString, Object, NSRange)(name, value, range);
+	}
+
+	void addAttributes (NSDictionary attrs, NSRange range)
+	{
+		return invokeObjcSelf!(void, "addAttributes:range:", NSDictionary, NSRange)(attrs, range);
+	}
+
+	void removeAttribute (NSString name, NSRange range)
+	{
+		return invokeObjcSelf!(void, "removeAttribute:range:", NSString, NSRange)(name, range);
+	}
+
+	void replaceCharactersInRange (NSRange range, NSAttributedString attrString)
+	{
+		return invokeObjcSelf!(void, "replaceCharactersInRange:withAttributedString:", NSRange, NSAttributedString)(range, attrString);
+	}
+
+	void insertAttributedString (NSAttributedString attrString, NSUInteger loc)
+	{
+		return invokeObjcSelf!(void, "insertAttributedString:atIndex:", NSAttributedString, NSUInteger)(attrString, loc);
+	}
+
+	void appendAttributedString (NSAttributedString attrString)
+	{
+		return invokeObjcSelf!(void, "appendAttributedString:", NSAttributedString)(attrString);
+	}
+
+	void deleteCharactersInRange (NSRange range)
+	{
+		return invokeObjcSelf!(void, "deleteCharactersInRange:", NSRange)(range);
+	}
+
+	void setAttributedString (NSAttributedString attrString)
+	{
+		return invokeObjcSelf!(void, "setAttributedString:", NSAttributedString)(attrString);
+	}
+
+	/*void beginEditing ()
+	{
+		return invokeObjcSelf!(void, "beginEditing");
+	}
+
+	void endEditing ()
+	{
+		return invokeObjcSelf!(void, "endEditing");
+	}*/
+
+	////mixin ObjcBindMethod!(mutableString, "mutableString");
+	//mixin ObjcBindMethod!(addAttribute, "addAttribute:value:range:");
+	//mixin ObjcBindMethod!(addAttributes, "addAttributes:range:");
+	//mixin ObjcBindMethod!(removeAttribute, "removeAttribute:range:");
+	//mixin ObjcBindMethod!(replaceCharactersInRange, "replaceCharactersInRange:withAttributedString:");
+	//mixin ObjcBindMethod!(insertAttributedString, "insertAttributedString:atIndex:");
+	//mixin ObjcBindMethod!(appendAttributedString, "appendAttributedString:");
+	//mixin ObjcBindMethod!(deleteCharactersInRange, "deleteCharactersInRange:");
+	//mixin ObjcBindMethod!(setAttributedString, "setAttributedString:");
+	/*//mixin ObjcBindMethod!(beginEditing, "beginEditing");
+	//mixin ObjcBindMethod!(endEditing, "endEditing");*/
+
+`;
+