rename `NativeString` to `CString`
[nit.git] / lib / cocoa / foundation.nit
index bbb27ab..2e50e39 100644 (file)
@@ -35,35 +35,35 @@ extern class NSString in "ObjC" `{ NSString * `}
        new nil in "ObjC" `{ return nil; `}
 
        # Get an UTF8 encoded `char*` copy of `self`
-       fun utf8_string: NativeString in "ObjC" `{ return (char *)[self UTF8String]; `}
+       fun utf8_string: CString in "ObjC" `{ return (char *)[self UTF8String]; `}
 
-       redef fun to_s do return utf8_string.to_s
+       redef fun to_s do return utf8_string.to_s_with_copy
 end
 
-redef class NativeString
+redef class CString
        # Get a `NSString` from `self` with the specified `length`
        fun to_nsstring(length: Int): NSString in "ObjC" `{
                return [[NSString alloc] initWithBytes:self
                        length:length
-                       encoding:NSASCIIStringEncoding];
+                       encoding:NSUTF8StringEncoding];
        `}
 end
 
 redef class Text
        # Get a `NSString` from `self`
-       fun to_nsstring: NSString do return to_cstring.to_nsstring(length)
+       fun to_nsstring: NSString do return to_cstring.to_nsstring(byte_length)
 end
 
 # Wrapper of byte buffers
 extern class NSData in "ObjC" `{ NSData * `}
 
        # Pointer to contained data
-       fun bytes: NativeString in "ObjC" `{ return (char*)self.bytes; `}
+       fun bytes: CString in "ObjC" `{ return (char*)self.bytes; `}
 
        # Number of bytes containted in `self`
        fun length: Int in "ObjC" `{ return self.length; `}
 
-       redef fun to_s do return bytes.to_s_with_length(length)
+       redef fun to_s do return bytes.to_s_with_copy_and_length(length)
 end
 
 # Error condition
@@ -149,3 +149,24 @@ extern class NSIndexPath in "ObjC" `{ NSIndexPath * `}
                return [self indexAtPosition: position];
        `}
 end
+
+# Interface to the defaults system for an app to customize its behavior to match a user's preferences
+extern class NSUserDefaults in "ObjC" `{ NSUserDefaults * `}
+       super NSObject
+
+       # Wraps: `[NSUserDefaults standardUserDefaults]`
+       new standard_user_defaults in "ObjC" `{
+               return [NSUserDefaults standardUserDefaults];
+       `}
+
+       # Wraps: `[NSIndexPath stringForKey:]`
+       fun string_for_key(key: NSString): NSString in "ObjC" `{
+               return [self stringForKey: key];
+       `}
+
+       # Wraps: `[NSIndexPath setObject: forKey:]`
+       fun set_object(value: NSObject, default_name: NSString)
+       in "ObjC" `{
+               [self setObject:value forKey:default_name];
+       `}
+end