Mercurial > projects > dstep
diff dstep/foundation/NSScanner.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 diff
--- a/dstep/foundation/NSScanner.d Mon Aug 03 15:31:48 2009 +0200 +++ b/dstep/foundation/NSScanner.d Sun Jan 03 22:06:11 2010 +0100 @@ -7,17 +7,178 @@ module dstep.foundation.NSScanner; import dstep.foundation.NSCharacterSet; +import dstep.foundation.NSDecimal; +import dstep.foundation.NSDecimalNumber; import dstep.foundation.NSDictionary; +import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSString; +import dstep.foundation.NSZone; +import dstep.internal.Version; import dstep.objc.bridge.Bridge; -import dstep.objc.objc : id; +import dstep.objc.objc; + +const TNSExtendedScanner = ` + + NSCharacterSet charactersToBeSkipped () + { + return invokeObjcSelf!(NSCharacterSet, "charactersToBeSkipped"); + } + + bool caseSensitive () + { + return invokeObjcSelf!(bool, "caseSensitive"); + } + + Object locale () + { + return invokeObjcSelf!(Object, "locale"); + } + + bool scanInt (int* value) + { + return invokeObjcSelf!(bool, "scanInt:", int*)(value); + } + + bool scanInteger (NSInteger* value) + { + return invokeObjcSelf!(bool, "scanInteger:", NSInteger*)(value); + } + + bool scanHexLongLong (ulong* result) + { + return invokeObjcSelf!(bool, "scanHexLongLong:", ulong*)(result); + } + + bool scanHexFloat (float* result) + { + return invokeObjcSelf!(bool, "scanHexFloat:", float*)(result); + } + + bool scanHexDouble (double* result) + { + return invokeObjcSelf!(bool, "scanHexDouble:", double*)(result); + } + + bool scanHexInt (uint* value) + { + return invokeObjcSelf!(bool, "scanHexInt:", uint*)(value); + } + + bool scanLongLong (long* value) + { + return invokeObjcSelf!(bool, "scanLongLong:", long*)(value); + } + + bool scanFloat (float* value) + { + return invokeObjcSelf!(bool, "scanFloat:", float*)(value); + } + + bool scanDouble (double* value) + { + return invokeObjcSelf!(bool, "scanDouble:", double*)(value); + } + + bool scanString (NSString string, ref NSString value) + { + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanString:intoString:", NSString, id*)(string, &val); + + if (val) + value = new NSString(val); + + return result; + } + + bool scanCharactersFromSet (NSCharacterSet set, ref NSString value) + { + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val); + + if (val) + value = new NSString(val); + + return result; + } + + bool scanUpToString (NSString string, ref NSString value) + { + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanUpToString:intoString:", NSString, id*)(string, &val); + + if (val) + value = new NSString(val); + + return result; + } + + bool scanUpToCharactersFromSet (NSCharacterSet set, ref NSString value) + { + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanUpToCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val); + + if (val) + value = new NSString(val); + + return result; + } + + bool isAtEnd () + { + return invokeObjcSelf!(bool, "isAtEnd"); + } + + Object initWithString (NSString string) + { + return invokeObjcSelf!(Object, "initWithString:", NSString)(string); + } + + this (NSString string) + { + typeof(this).alloc.initWithString(string); + } + + static Object scannerWithString (NSString string) + { + return invokeObjcSuperClass!(Object, "scannerWithString:", NSString)(string); + } + + static Object localizedScannerWithString (NSString string) + { + return invokeObjcSuperClass!(Object, "localizedScannerWithString:", NSString)(string); + } +`; class NSScanner : NSObject, INSCopying { - mixin ObjcWrap; - mixin TNSDecimalNumberScanning; - mixin TNSExtendedScanner; + mixin (ObjcWrap); + + this () + { + super(typeof(this).alloc.init.objcObject); + } + + typeof(this) init () + { + return invokeObjcSelf!(typeof(this), "init"); + } NSString string () { @@ -53,119 +214,156 @@ { return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone); } -} - -template TNSExtendedScanner () -{ + + // TNSDecimalNumberScanning + bool scanDecimal (NSDecimal* dcm) + { + return invokeObjcSelf!(bool, "scanDecimal:", NSDecimal*)(dcm); + } + + // TNSExtendedScanner NSCharacterSet charactersToBeSkipped () { return invokeObjcSelf!(NSCharacterSet, "charactersToBeSkipped"); } - + bool caseSensitive () { return invokeObjcSelf!(bool, "caseSensitive"); } - + Object locale () { return invokeObjcSelf!(Object, "locale"); } - + bool scanInt (int* value) { return invokeObjcSelf!(bool, "scanInt:", int*)(value); } - + bool scanInteger (NSInteger* value) { return invokeObjcSelf!(bool, "scanInteger:", NSInteger*)(value); } - - bool scanHexLongLong (unsigned long long* result) + + bool scanHexLongLong (ulong* result) { - return invokeObjcSelf!(bool, "scanHexLongLong:", unsigned long long*)(result); + return invokeObjcSelf!(bool, "scanHexLongLong:", ulong*)(result); } - + bool scanHexFloat (float* result) { return invokeObjcSelf!(bool, "scanHexFloat:", float*)(result); } - + bool scanHexDouble (double* result) { return invokeObjcSelf!(bool, "scanHexDouble:", double*)(result); } - - bool scanHexInt (unsigned* value) + + bool scanHexInt (uint* value) { - return invokeObjcSelf!(bool, "scanHexInt:", unsigned*)(value); + return invokeObjcSelf!(bool, "scanHexInt:", uint*)(value); } - - bool scanLongLong (long long* value) + + bool scanLongLong (long* value) { - return invokeObjcSelf!(bool, "scanLongLong:", long long*)(value); + return invokeObjcSelf!(bool, "scanLongLong:", long*)(value); } - + bool scanFloat (float* value) { return invokeObjcSelf!(bool, "scanFloat:", float*)(value); } - + bool scanDouble (double* value) { return invokeObjcSelf!(bool, "scanDouble:", double*)(value); } - - bool scanString (NSString string, NSString** value) + + bool scanString (NSString string, ref NSString value) { - return invokeObjcSelf!(bool, "scanString:intoString:", NSString, NSString**)(string, value); + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanString:intoString:", NSString, id*)(string, &val); + + if (val) + value = new NSString(val); + + return result; } - - bool scanCharactersFromSet (NSCharacterSet set, NSString** value) + + bool scanCharactersFromSet (NSCharacterSet set, ref NSString value) { - return invokeObjcSelf!(bool, "scanCharactersFromSet:intoString:", NSCharacterSet, NSString**)(set, value); + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val); + + if (val) + value = new NSString(val); + + return result; } - - bool scanUpToString (NSString string, NSString** value) + + bool scanUpToString (NSString string, ref NSString value) { - return invokeObjcSelf!(bool, "scanUpToString:intoString:", NSString, NSString**)(string, value); + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanUpToString:intoString:", NSString, id*)(string, &val); + + if (val) + value = new NSString(val); + + return result; } - - bool scanUpToCharactersFromSet (NSCharacterSet set, NSString** value) + + bool scanUpToCharactersFromSet (NSCharacterSet set, ref NSString value) { - return invokeObjcSelf!(bool, "scanUpToCharactersFromSet:intoString:", NSCharacterSet, NSString**)(set, value); + id val; + + if (value) + val = new objc_object; + + bool result = invokeObjcSelf!(bool, "scanUpToCharactersFromSet:intoString:", NSCharacterSet, id*)(set, &val); + + if (val) + value = new NSString(val); + + return result; } - + bool isAtEnd () { return invokeObjcSelf!(bool, "isAtEnd"); } - + Object initWithString (NSString string) { return invokeObjcSelf!(Object, "initWithString:", NSString)(string); } - + this (NSString string) { - objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); - id result = Bridge.invokeObjcMethod!(id, "initWithString:", NSString)(objcObject, string); - - if (result) - objcObject = ret; - - dObject = this; + typeof(this).alloc.initWithString(string); } - + static Object scannerWithString (NSString string) { - return invokeObjcSelfClass!(Object, "scannerWithString:", NSString)(string); + return invokeObjcSuperClass!(Object, "scannerWithString:", NSString)(string); } - + static Object localizedScannerWithString (NSString string) { - return invokeObjcSelfClass!(Object, "localizedScannerWithString:", NSString)(string); + return invokeObjcSuperClass!(Object, "localizedScannerWithString:", NSString)(string); } -} - +} \ No newline at end of file