diff dstep/foundation/NSValueTransformer.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 7ff919f595d5
children b9de51448c6b
line wrap: on
line diff
--- a/dstep/foundation/NSValueTransformer.d	Mon Aug 03 15:31:48 2009 +0200
+++ b/dstep/foundation/NSValueTransformer.d	Sun Jan 03 22:06:11 2010 +0100
@@ -10,52 +10,98 @@
 import dstep.foundation.NSObject;
 import dstep.foundation.NSString;
 import dstep.objc.bridge.Bridge;
-import dstep.objc.objc : id;
+import dstep.objc.objc;
+
+
 
 import bindings = dstep.foundation.NSValueTransformer_bindings;
 
-const NSString NSNegateBooleanTransformerName;
-const NSString NSIsNilTransformerName;
-const NSString NSIsNotNilTransformerName;
-const NSString NSUnarchiveFromDataTransformerName;
-const NSString NSKeyedUnarchiveFromDataTransformerName;
+private
+{
+	NSString NSNegateBooleanTransformerName_;
+	NSString NSIsNilTransformerName_;
+	NSString NSIsNotNilTransformerName_;
+	NSString NSUnarchiveFromDataTransformerName_;
+	NSString NSKeyedUnarchiveFromDataTransformerName_;
+}
+
+NSString NSNegateBooleanTransformerName ()
+{
+	if (NSNegateBooleanTransformerName_)
+		return NSNegateBooleanTransformerName_;
+		
+	return NSNegateBooleanTransformerName_ = new NSString(bindings.NSNegateBooleanTransformerName);
+}
 
-static this ()
+NSString NSIsNilTransformerName ()
+{
+	if (NSIsNilTransformerName_)
+		return NSIsNilTransformerName_;
+		
+	return NSIsNilTransformerName_ = new NSString(bindings.NSIsNilTransformerName);
+}
+
+NSString NSIsNotNilTransformerName ()
 {
-	NSNegateBooleanTransformerName = new NSString(bindings.NSNegateBooleanTransformerName);
-	NSIsNilTransformerName = new NSString(bindings.NSIsNilTransformerName);
-	NSIsNotNilTransformerName = new NSString(bindings.NSIsNotNilTransformerName);
-	NSUnarchiveFromDataTransformerName = new NSString(bindings.NSUnarchiveFromDataTransformerName);
-	NSKeyedUnarchiveFromDataTransformerName = new NSString(bindings.NSKeyedUnarchiveFromDataTransformerName);
+	if (NSIsNotNilTransformerName_)
+		return NSIsNotNilTransformerName_;
+		
+	return NSIsNotNilTransformerName_ = new NSString(bindings.NSIsNotNilTransformerName);
+}
+
+NSString NSUnarchiveFromDataTransformerName ()
+{
+	if (NSUnarchiveFromDataTransformerName_)
+		return NSUnarchiveFromDataTransformerName_;
+		
+	return NSUnarchiveFromDataTransformerName_ = new NSString(bindings.NSUnarchiveFromDataTransformerName);
+}
+
+NSString NSKeyedUnarchiveFromDataTransformerName ()
+{
+	if (NSKeyedUnarchiveFromDataTransformerName_)
+		return NSKeyedUnarchiveFromDataTransformerName_;
+		
+	return NSKeyedUnarchiveFromDataTransformerName_ = new NSString(bindings.NSKeyedUnarchiveFromDataTransformerName);
 }
 
 class NSValueTransformer : NSObject
 {
-	mixin ObjcWrap;
-
+	mixin (ObjcWrap);
+	
+	this ()
+	{
+		super(typeof(this).alloc.init.objcObject);
+	}
+	
+	typeof(this) init ()
+	{
+		return invokeObjcSelf!(typeof(this), "init");
+	}
+	
 	static void setValueTransformer (NSValueTransformer transformer, NSString name)
 	{
-		return invokeObjcSelfClass!(void, "setValueTransformer:forName:", NSValueTransformer, NSString)(transformer, name);
+		return invokeObjcSuperClass!(void, "setValueTransformer:forName:", NSValueTransformer, NSString)(transformer, name);
 	}
 
 	static NSValueTransformer valueTransformerForName (NSString name)
 	{
-		return invokeObjcSelfClass!(NSValueTransformer, "valueTransformerForName:", NSString)(name);
+		return invokeObjcSuperClass!(NSValueTransformer, "valueTransformerForName:", NSString)(name);
 	}
 
 	static NSArray valueTransformerNames ()
 	{
-		return invokeObjcSelfClass!(NSArray, "valueTransformerNames");
+		return invokeObjcSuperClass!(NSArray, "valueTransformerNames");
 	}
 
 	static Class transformedValueClass ()
 	{
-		return invokeObjcSelfClass!(Class, "transformedValueClass");
+		return invokeObjcSuperClass!(Class, "transformedValueClass");
 	}
 
 	static bool allowsReverseTransformation ()
 	{
-		return invokeObjcSelfClass!(bool, "allowsReverseTransformation");
+		return invokeObjcSuperClass!(bool, "allowsReverseTransformation");
 	}
 
 	Object transformedValue (Object value)