public void CFBooleanRefs() { Assert.True(CFBoolean.True != IntPtr.Zero); Assert.True(CFBoolean.False != IntPtr.Zero); Assert.True(CFBoolean.ToBoolean(CFBoolean.True)); Assert.False(CFBoolean.ToBoolean(CFBoolean.False)); Assert.Equal(CFBoolean.True, CFBoolean.ToCFBoolean(true)); Assert.Equal(CFBoolean.False, CFBoolean.ToCFBoolean(false)); }
protected bool?GetBoolValue(NSString key) { if (key == null) { throw new ArgumentNullException("key"); } var value = CFDictionary.GetValue(Dictionary.Handle, key.Handle); if (value == IntPtr.Zero) { return(null); } return(CFBoolean.GetValue(value)); }
protected override bool StorageTryGetValue( string key, Type valueType, TypeCode valueTypeCode, out object value) { using (var cfKey = new CFString(key)) { var valuePtr = CFPreferences.CopyValue( cfKey.Handle, applicationId.Handle, CFPreferences.kCFPreferencesCurrentUser, CFPreferences.kCFPreferencesAnyHost); if (valuePtr == IntPtr.Zero) { value = null; return(false); } var typeId = CoreFoundation.CFGetTypeID(valuePtr); if (typeId == CoreFoundation.CFTypeID.CFBoolean) { value = CFBoolean.ToBoolean(valuePtr); return(true); } if (typeId == CoreFoundation.CFTypeID.CFString) { using (var cfString = new CFString(valuePtr)) value = cfString.ToString(); return(true); } if (typeId == CoreFoundation.CFTypeID.CFNumber) { using (var cfNumber = new CFNumber(valuePtr)) { switch (cfNumber.Type) { case CFNumberType.SInt8: case CFNumberType.Char: value = valueTypeCode == TypeCode.Byte ? cfNumber.ToByte() : (object)cfNumber.ToSByte(); return(true); case CFNumberType.SInt16: case CFNumberType.Short: value = valueTypeCode == TypeCode.UInt16 ? cfNumber.ToUInt16() : (object)cfNumber.ToInt16(); return(true); case CFNumberType.SInt32: case CFNumberType.Int: case CFNumberType.Long: value = valueTypeCode == TypeCode.UInt32 ? cfNumber.ToUInt32() : (object)cfNumber.ToInt32(); return(true); case CFNumberType.SInt64: case CFNumberType.LongLong: case CFNumberType.CFIndex: case CFNumberType.NSInteger: value = valueTypeCode == TypeCode.UInt64 ? cfNumber.ToUInt64() : (object)cfNumber.ToInt64(); return(true); case CFNumberType.Float32: case CFNumberType.Float: value = cfNumber.ToSingle(); return(true); case CFNumberType.Float64: case CFNumberType.Double: case CFNumberType.CGFloat: value = cfNumber.ToDouble(); return(true); } } } if (typeId == CoreFoundation.CFTypeID.CFArray) { try { value = CFArray .FromCFStringArray(valuePtr) ?.ToArray(); return(value != null); } catch { value = null; return(false); } } value = null; return(false); } }
protected override bool StorageSetValue(string key, object value) { CFObject cfValue = null; try { switch (value) { case bool v: SetValue(key, CFBoolean.ToCFBoolean(v)); return(true); case string v: cfValue = new CFString(v); break; case IEnumerable <string> v: var cfArray = new CFMutableArray(); cfArray.AddRange(v); cfValue = cfArray; break; case sbyte v: cfValue = new CFNumber(v); break; case byte v: cfValue = new CFNumber(v); break; case short v: cfValue = new CFNumber(v); break; case ushort v: cfValue = new CFNumber(v); break; case int v: cfValue = new CFNumber(v); break; case uint v: cfValue = new CFNumber(v); break; case long v: cfValue = new CFNumber(v); break; case ulong v: cfValue = new CFNumber(v); break; case float v: cfValue = new CFNumber(v); break; case double v: cfValue = new CFNumber(v); break; default: return(false); } SetValue(key, cfValue.Handle); return(true); } finally { cfValue?.Dispose(); } }
internal override NSMutableDictionary ToDictionary() { var ret = base.ToDictionary(); if (Title != null) { ret.LowlevelSetObject((NSString)Title, kCGPDFContextTitle); } if (Author != null) { ret.LowlevelSetObject((NSString)Author, kCGPDFContextAuthor); } if (Subject != null) { ret.LowlevelSetObject((NSString)Subject, kCGPDFContextSubject); } if (Keywords != null && Keywords.Length > 0) { if (Keywords.Length == 1) { ret.LowlevelSetObject((NSString)Keywords [0], kCGPDFContextKeywords); } else { ret.LowlevelSetObject(NSArray.FromStrings(Keywords), kCGPDFContextKeywords); } } if (Creator != null) { ret.LowlevelSetObject((NSString)Creator, kCGPDFContextCreator); } if (OwnerPassword != null) { ret.LowlevelSetObject((NSString)OwnerPassword, kCGPDFContextOwnerPassword); } if (UserPassword != null) { ret.LowlevelSetObject((NSString)UserPassword, kCGPDFContextUserPassword); } if (EncryptionKeyLength.HasValue) { ret.LowlevelSetObject(NSNumber.FromInt32(EncryptionKeyLength.Value), kCGPDFContextEncryptionKeyLength); } if (AllowsPrinting.HasValue && AllowsPrinting.Value == false) { ret.LowlevelSetObject(CFBoolean.FalseHandle, kCGPDFContextAllowsPrinting); } if (AllowsCopying.HasValue && AllowsCopying.Value == false) { ret.LowlevelSetObject(CFBoolean.FalseHandle, kCGPDFContextAllowsCopying); } if (AccessPermissions.HasValue) { ret.LowlevelSetObject(NSNumber.FromInt32((int)AccessPermissions.Value), kCGPDFContextAccessPermissions); } // only set the keys if they exists in the current OS version if ((kCGPDFContextCreateLinearizedPDF != IntPtr.Zero) && CreateLinearizedPdf.HasValue) { ret.LowlevelSetObject(CFBoolean.ToHandle(CreateLinearizedPdf.Value), kCGPDFContextCreateLinearizedPDF); } // default to kCFBooleanFalse if ((kCGPDFContextCreatePDFA != IntPtr.Zero) && CreatePdfA2u.HasValue && CreatePdfA2u == true) { ret.LowlevelSetObject(CFBoolean.TrueHandle, kCGPDFContextCreatePDFA); } return(ret); }