static unsafe public string?[]? StringArrayFromHandle(IntPtr handle) { if (handle == IntPtr.Zero) { return(null); } var c = (int)GetCount(handle); if (c == 0) { return(Array.Empty <string> ()); } var buffer = c <= 256 ? stackalloc IntPtr [c] : new IntPtr [c]; fixed(void *ptr = buffer) CFArrayGetValues(handle, new CFRange(0, c), (IntPtr)ptr); string?[] ret = new string [c]; for (var i = 0; i < c; i++) ret [i] = CFString.FromHandle(buffer [i]); }
public static string[] GetPreferredLocalizations(string[] locArray) { if (locArray == null) { throw new ArgumentNullException("locArray"); } var cfString = new CFString [locArray.Length]; for (int index = 0; index < locArray.Length; index++) { cfString [index] = new CFString(locArray [index]); } using (var cfLocArray = CFArray.FromNativeObjects(cfString)) using (var cfArray = new CFArray(CFBundleCopyPreferredLocalizationsFromArray(cfLocArray.Handle), true)) { var cultureInfo = new string [cfArray.Count]; for (int index = 0; index < cfArray.Count; index++) { cultureInfo [index] = CFString.FromHandle(cfArray.GetValue(index)); } return(cultureInfo); } }
public static string[] GetLocalizationsForPreferences(string[] locArray, string[] prefArray) { if (locArray == null) { throw new ArgumentNullException("locArray"); } if (prefArray == null) { throw new ArgumentNullException("prefArray"); } var cfLocal = new CFString [locArray.Length]; for (int index = 0; index < locArray.Length; index++) { cfLocal [index] = new CFString(locArray [index]); } var cfPref = new CFString [prefArray.Length]; for (int index = 0; index < prefArray.Length; index++) { cfPref [index] = new CFString(prefArray [index]); } using (CFArray cfLocalArray = CFArray.FromNativeObjects(cfLocal), cfPrefArray = CFArray.FromNativeObjects(cfPref)) using (var cfArray = new CFArray(CFBundleCopyLocalizationsForPreferences(cfLocalArray.Handle, cfPrefArray.Handle), true)) { var cultureInfo = new string [cfArray.Count]; for (int index = 0; index < cfArray.Count; index++) { cultureInfo [index] = CFString.FromHandle(cfArray.GetValue(index)); } return(cultureInfo); } }
public string GetLocalizedString(string key, string defaultValue, string tableName) { if (String.IsNullOrEmpty(key)) { throw new ArgumentException("key"); } if (String.IsNullOrEmpty(tableName)) { throw new ArgumentException("tableName"); } // we do allow null and simply use an empty string to avoid the extra check if (defaultValue == null) { defaultValue = string.Empty; } using (CFString cfKey = new CFString(key), cfValue = new CFString(defaultValue), cfTable = new CFString(tableName)) { return(CFString.FromHandle(CFBundleCopyLocalizedString(handle, cfKey.Handle, cfValue.Handle, cfTable.Handle), releaseHandle: true)); } }
public string GetStringValue(string key) { using (var str = new CFString(key)) { return(CFString.FromHandle(CFDictionaryGetValue(Handle, str.Handle))); } }
static internal string?GetFileSystemPath(IntPtr hcfurl) { return(CFString.FromHandle(CFURLCopyFileSystemPath(hcfurl, 0), true)); }
public override string?ToString() { return(CFString.FromHandle(CFURLGetString(Handle))); }