| // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| // Extra code inserted into lib/src/objective_c_bindings_generated.dart by | |
| // tool/generate_code.dart. If a class with the same name is found in the | |
| // generated code, the methods etc are merged. If there is no matching class, | |
| // the class is added at the end of the generated code. | |
| // Note: tool/generate_code.dart uses simple regexes to parse the class | |
| // declarations, so it's important that they remain unformatted, even if that | |
| // means going over the 80 char width limit. The class bodies may be formatted. | |
| extension type NSString._(objc.ObjCObject object$) { | |
| NSString(String str) : this.as(_stringToNSString$(str)); | |
| static NSString _stringToNSString$(String str) { | |
| final cstr = str.toNativeUtf16(); | |
| final nsstr = alloc().initWithCharacters(cstr.cast(), length: str.length); | |
| pkg_ffi.calloc.free(cstr); | |
| return nsstr; | |
| } | |
| } | |
| extension type NSArray._(objc.ObjCObject object$) { | |
| /// Creates a [NSArray] of the given length with [fill] at each position. | |
| /// | |
| /// The [length] must be a non-negative integer. | |
| static NSArray filled(int length, objc.ObjCObject fill) => | |
| NSMutableArray.filled(length, fill); | |
| /// Creates a [NSArray] from [elements]. | |
| static NSArray of(Iterable<objc.ObjCObject> elements) => | |
| NSMutableArray.of(elements); | |
| } | |
| extension type NSMutableArray._(objc.ObjCObject object$) { | |
| /// Creates a [NSMutableArray] of the given length with [fill] at each | |
| /// position. | |
| /// | |
| /// The [length] must be a non-negative integer. | |
| static NSMutableArray filled(int length, objc.ObjCObject fill) { | |
| final a = alloc().initWithCapacity(length); | |
| for (var i = 0; i < length; ++i) a.addObject(fill); | |
| return a; | |
| } | |
| /// Creates a [NSMutableArray] from [elements]. | |
| static NSMutableArray of(Iterable<objc.ObjCObject> elements) { | |
| final a = alloc().initWithCapacity(elements.length); | |
| for (final e in elements) a.addObject(e); | |
| return a; | |
| } | |
| } | |
| extension type NSDictionary._(objc.ObjCObject object$) { | |
| /// Creates a [NSDictionary] from [other]. | |
| static NSDictionary of(Map<NSCopying, objc.ObjCObject> other) => | |
| NSMutableDictionary.of(other); | |
| /// Creates a [NSDictionary] from [entries]. | |
| static NSDictionary fromEntries( | |
| Iterable<MapEntry<NSCopying, objc.ObjCObject>> entries, | |
| ) => NSMutableDictionary.fromEntries(entries); | |
| } | |
| extension type NSMutableDictionary._(objc.ObjCObject object$) { | |
| /// Creates a [NSMutableDictionary] from [other]. | |
| static NSMutableDictionary of(Map<NSCopying, objc.ObjCObject> other) => | |
| NSMutableDictionary.fromEntries(other.entries); | |
| /// Creates a [NSMutableDictionary] from [entries]. | |
| static NSMutableDictionary fromEntries( | |
| Iterable<MapEntry<NSCopying, objc.ObjCObject>> entries, | |
| ) { | |
| final dict = alloc().initWithCapacity(entries.length); | |
| for (final MapEntry(:key, :value) in entries) { | |
| dict.setObject( | |
| value, | |
| forKey: NSCopying.as(key), | |
| ); | |
| } | |
| return dict; | |
| } | |
| } | |
| extension type NSSet._(objc.ObjCObject object$) { | |
| /// Creates a [NSSet] from [elements]. | |
| static NSSet of(Iterable<objc.ObjCObject> elements) => | |
| NSMutableSet.of(elements); | |
| } | |
| extension type NSMutableSet._(objc.ObjCObject object$) { | |
| /// Creates a [NSMutableSet] from [elements]. | |
| static NSMutableSet of(Iterable<objc.ObjCObject> elements) { | |
| final set = alloc().initWithCapacity(elements.length); | |
| for (final e in elements) set.addObject(e); | |
| return set; | |
| } | |
| } |