Struct icrate::Foundation::NSNumber
source · #[repr(C)]pub struct NSNumber { /* private fields */ }Foundation and Foundation_NSNumber only.Implementations§
impl NSNumber
CKRecordValue
impl NSNumber
NSFetchedResultSupport
source§impl NSNumber
impl NSNumber
Creation methods.
pub fn new_bool(val: bool) -> Id<Self>
pub fn new_i8(val: i8) -> Id<Self>
pub fn new_u8(val: u8) -> Id<Self>
pub fn new_i16(val: i16) -> Id<Self>
pub fn new_u16(val: u16) -> Id<Self>
pub fn new_i32(val: i32) -> Id<Self>
pub fn new_u32(val: u32) -> Id<Self>
pub fn new_i64(val: i64) -> Id<Self>
pub fn new_u64(val: u64) -> Id<Self>
pub fn new_isize(val: isize) -> Id<Self>
pub fn new_usize(val: usize) -> Id<Self>
pub fn new_f32(val: f32) -> Id<Self>
pub fn new_f64(val: f64) -> Id<Self>
pub fn new_cgfloat(val: CGFloat) -> Id<Self>
source§impl NSNumber
impl NSNumber
Getter methods.
pub fn as_bool(&self) -> bool
pub fn as_i8(&self) -> i8
pub fn as_u8(&self) -> u8
pub fn as_i16(&self) -> i16
pub fn as_u16(&self) -> u16
pub fn as_i32(&self) -> i32
pub fn as_u32(&self) -> u32
pub fn as_i64(&self) -> i64
pub fn as_u64(&self) -> u64
pub fn as_isize(&self) -> isize
pub fn as_usize(&self) -> usize
pub fn as_f32(&self) -> f32
pub fn as_f64(&self) -> f64
pub fn as_cgfloat(&self) -> CGFloat
sourcepub fn encoding(&self) -> Encoding
pub fn encoding(&self) -> Encoding
The Objective-C encoding of this NSNumber.
This is guaranteed to return one of:
Encoding::CharEncoding::UCharEncoding::ShortEncoding::UShortEncoding::IntEncoding::UIntEncoding::LongEncoding::ULongEncoding::LongLongEncoding::ULongLongEncoding::FloatEncoding::Double
Examples
Convert an NSNumber to/from an enumeration describing the different
number properties.
use icrate::Foundation::NSNumber;
use icrate::objc2::Encoding;
use icrate::objc2::rc::Id;
// Note: `bool` would convert to either `Signed` or `Unsigned`,
// depending on platform
#[derive(Copy, Clone)]
pub enum Number {
Signed(i64),
Unsigned(u64),
Floating(f64),
}
impl Number {
fn into_nsnumber(self) -> Id<NSNumber> {
match self {
Self::Signed(val) => NSNumber::new_i64(val),
Self::Unsigned(val) => NSNumber::new_u64(val),
Self::Floating(val) => NSNumber::new_f64(val),
}
}
}
impl From<&NSNumber> for Number {
fn from(n: &NSNumber) -> Self {
match n.encoding() {
Encoding::Char
| Encoding::Short
| Encoding::Int
| Encoding::Long
| Encoding::LongLong => Self::Signed(n.as_i64()),
Encoding::UChar
| Encoding::UShort
| Encoding::UInt
| Encoding::ULong
| Encoding::ULongLong => Self::Unsigned(n.as_u64()),
Encoding::Float
| Encoding::Double => Self::Floating(n.as_f64()),
_ => unreachable!(),
}
}
}source§impl NSNumber
impl NSNumber
pub unsafe fn initWithCoder( this: Option<Allocated<Self>>, coder: &NSCoder ) -> Option<Id<Self>>
Foundation_NSCoder only.pub fn initWithChar( this: Option<Allocated<Self>>, value: c_char ) -> Id<NSNumber>
pub fn initWithUnsignedChar( this: Option<Allocated<Self>>, value: c_uchar ) -> Id<NSNumber>
pub fn initWithShort( this: Option<Allocated<Self>>, value: c_short ) -> Id<NSNumber>
pub fn initWithUnsignedShort( this: Option<Allocated<Self>>, value: c_ushort ) -> Id<NSNumber>
pub fn initWithInt(this: Option<Allocated<Self>>, value: c_int) -> Id<NSNumber>
pub fn initWithUnsignedInt( this: Option<Allocated<Self>>, value: c_uint ) -> Id<NSNumber>
pub fn initWithLong( this: Option<Allocated<Self>>, value: c_long ) -> Id<NSNumber>
pub fn initWithUnsignedLong( this: Option<Allocated<Self>>, value: c_ulong ) -> Id<NSNumber>
pub fn initWithLongLong( this: Option<Allocated<Self>>, value: c_longlong ) -> Id<NSNumber>
pub fn initWithUnsignedLongLong( this: Option<Allocated<Self>>, value: c_ulonglong ) -> Id<NSNumber>
pub fn initWithFloat( this: Option<Allocated<Self>>, value: c_float ) -> Id<NSNumber>
pub fn initWithDouble( this: Option<Allocated<Self>>, value: c_double ) -> Id<NSNumber>
pub fn initWithBool(this: Option<Allocated<Self>>, value: bool) -> Id<NSNumber>
pub fn initWithInteger( this: Option<Allocated<Self>>, value: NSInteger ) -> Id<NSNumber>
pub fn initWithUnsignedInteger( this: Option<Allocated<Self>>, value: NSUInteger ) -> Id<NSNumber>
pub fn charValue(&self) -> c_char
pub fn unsignedCharValue(&self) -> c_uchar
pub fn shortValue(&self) -> c_short
pub fn unsignedShortValue(&self) -> c_ushort
pub fn intValue(&self) -> c_int
pub fn unsignedIntValue(&self) -> c_uint
pub fn longValue(&self) -> c_long
pub fn unsignedLongValue(&self) -> c_ulong
pub fn longLongValue(&self) -> c_longlong
pub fn unsignedLongLongValue(&self) -> c_ulonglong
pub fn floatValue(&self) -> c_float
pub fn doubleValue(&self) -> c_double
pub fn boolValue(&self) -> bool
pub fn integerValue(&self) -> NSInteger
pub fn unsignedIntegerValue(&self) -> NSUInteger
pub fn stringValue(&self) -> Id<NSString>
Foundation_NSString only.pub fn compare(&self, other_number: &NSNumber) -> NSComparisonResult
pub fn isEqualToNumber(&self, number: &NSNumber) -> bool
pub unsafe fn descriptionWithLocale( &self, locale: Option<&AnyObject> ) -> Id<NSString>
Foundation_NSString only.source§impl NSNumber
impl NSNumber
NSNumberCreation
pub fn numberWithChar(value: c_char) -> Id<NSNumber>
pub fn numberWithUnsignedChar(value: c_uchar) -> Id<NSNumber>
pub fn numberWithShort(value: c_short) -> Id<NSNumber>
pub fn numberWithUnsignedShort(value: c_ushort) -> Id<NSNumber>
pub fn numberWithInt(value: c_int) -> Id<NSNumber>
pub fn numberWithUnsignedInt(value: c_uint) -> Id<NSNumber>
pub fn numberWithLong(value: c_long) -> Id<NSNumber>
pub fn numberWithUnsignedLong(value: c_ulong) -> Id<NSNumber>
pub fn numberWithLongLong(value: c_longlong) -> Id<NSNumber>
pub fn numberWithUnsignedLongLong(value: c_ulonglong) -> Id<NSNumber>
pub fn numberWithFloat(value: c_float) -> Id<NSNumber>
pub fn numberWithDouble(value: c_double) -> Id<NSNumber>
pub fn numberWithBool(value: bool) -> Id<NSNumber>
pub fn numberWithInteger(value: NSInteger) -> Id<NSNumber>
pub fn numberWithUnsignedInteger(value: NSUInteger) -> Id<NSNumber>
Methods from Deref<Target = NSValue>§
pub unsafe fn CATransform3DValue(&self) -> CATransform3D
CoreAnimation and Foundation_NSValue only.sourcepub unsafe fn get<T: 'static + Copy + Encode>(&self) -> T
Available on crate feature Foundation_NSValue only.
pub unsafe fn get<T: 'static + Copy + Encode>(&self) -> T
Foundation_NSValue only.Retrieve the data contained in the NSValue.
Note that this is broken on GNUStep for some types, see gnustep/libs-base#216.
Safety
The type of T must be what the NSValue actually stores, and any
safety invariants that the value has must be upheld.
Note that it may be enough, although is not always, to check whether
contains_encoding returns true. For example, NonNull<T> have
the same encoding as *const T, but NonNull<T> is clearly not
safe to return from this function even if you’ve checked the encoding
beforehand.
Examples
Store a pointer in NSValue, and retrieve it again afterwards.
use std::ffi::c_void;
use std::ptr;
use icrate::Foundation::NSValue;
let val = NSValue::new::<*const c_void>(ptr::null());
// SAFETY: The value was just created with a pointer
let res = unsafe { val.get::<*const c_void>() };
assert!(res.is_null());pub fn get_range(&self) -> Option<NSRange>
Foundation_NSValue only.pub fn get_point(&self) -> Option<NSPoint>
Foundation_NSValue only.pub fn get_size(&self) -> Option<NSSize>
Foundation_NSValue only.pub fn get_rect(&self) -> Option<NSRect>
Foundation_NSValue only.pub fn encoding(&self) -> Option<&str>
Foundation_NSValue only.pub fn contains_encoding<T: 'static + Copy + Encode>(&self) -> bool
Foundation_NSValue only.pub unsafe fn pointValue(&self) -> NSPoint
Foundation_NSValue only.pub unsafe fn sizeValue(&self) -> NSSize
Foundation_NSValue only.pub unsafe fn rectValue(&self) -> NSRect
Foundation_NSValue only.pub unsafe fn edgeInsetsValue(&self) -> NSEdgeInsets
Foundation_NSValue only.pub unsafe fn rangeValue(&self) -> NSRange
Foundation_NSValue only.pub unsafe fn getValue_size(&self, value: NonNull<c_void>, size: NSUInteger)
Foundation_NSValue only.pub fn objCType(&self) -> NonNull<c_char>
Foundation_NSValue only.pub unsafe fn nonretainedObjectValue(&self) -> Option<Id<AnyObject>>
Foundation_NSValue only.pub unsafe fn pointerValue(&self) -> *mut c_void
Foundation_NSValue only.pub fn isEqualToValue(&self, value: &NSValue) -> bool
Foundation_NSValue only.pub unsafe fn getValue(&self, value: NonNull<c_void>)
Foundation_NSValue only.pub unsafe fn MKCoordinateValue(&self) -> CLLocationCoordinate2D
MapKit and Foundation_NSValue only.pub unsafe fn MKCoordinateSpanValue(&self) -> MKCoordinateSpan
MapKit and Foundation_NSValue only.Methods from Deref<Target = AnyObject>§
sourcepub unsafe fn ivar_ptr<T>(&self, name: &str) -> *mut Twhere
T: Encode,
pub unsafe fn ivar_ptr<T>(&self, name: &str) -> *mut Twhere T: Encode,
Returns a pointer to the instance variable / ivar with the given name.
This is similar to UnsafeCell::get, see that for more information
on what is and isn’t safe to do.
Usually you will have defined the instance variable yourself with
ClassBuilder::add_ivar, the type of the ivar T must match the
type used in that.
Attempting to access or modify private implementation details of a class that you do no control using this is not supported, and may invoke undefined behaviour.
Library implementors are strongly encouraged to expose a safe interface to the ivar.
Panics
May panic if the object has no ivar with the given name. May also
panic if the type encoding of the ivar differs from the type encoding
of T.
This should purely seen as help while debugging and is not guaranteed
(e.g. it may be disabled when debug_assertions are off).
Safety
The object must have an instance variable with the given name, and it
must be of type T. Any invariants that the object have assumed about
the value of the instance variable must not be violated.
No thread syncronization is done on accesses to the variable, so you must ensure that any access to the returned pointer do not cause data races, and that Rust’s mutability rules are not otherwise violated.
sourcepub unsafe fn ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
pub unsafe fn ivar<T>(&self, name: &str) -> &Twhere T: Encode,
Returns a reference to the instance variable with the given name.
See AnyObject::ivar_ptr for more information, including on when
this panics.
Safety
The object must have an instance variable with the given name, and it
must be of type T.
No thread syncronization is done, so you must ensure that no other
thread is concurrently mutating the variable. This requirement can be
considered upheld if all mutation happens through
AnyObject::ivar_mut (since that takes &mut self).
sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: Use AnyObject::ivar instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere T: Encode,
AnyObject::ivar instead.sourcepub unsafe fn ivar_mut<T>(&mut self, name: &str) -> &mut Twhere
T: Encode,
pub unsafe fn ivar_mut<T>(&mut self, name: &str) -> &mut Twhere T: Encode,
Returns a mutable reference to the ivar with the given name.
See AnyObject::ivar_ptr for more information, including on when
this panics.
Safety
The object must have an instance variable with the given name, and it
must be of type T.
This access happens through &mut self, which means we know it to be
the only reference, hence you do not need to do any work to ensure
that data races do not happen.
sourcepub unsafe fn get_mut_ivar<T>(&mut self, name: &str) -> &mut Twhere
T: Encode,
👎Deprecated: Use AnyObject::ivar_mut instead.
pub unsafe fn get_mut_ivar<T>(&mut self, name: &str) -> &mut Twhere T: Encode,
AnyObject::ivar_mut instead.sourcepub unsafe fn set_ivar<T>(&mut self, name: &str, value: T)where
T: Encode,
pub unsafe fn set_ivar<T>(&mut self, name: &str, value: T)where T: Encode,
Sets the value of the ivar with the given name.
This is a shorthand for AnyObject::ivar_mut, see that for more
information.
Safety
Same as AnyObject::ivar_mut.
Trait Implementations§
source§impl AsMut<NSNumber> for NSDecimalNumber
impl AsMut<NSNumber> for NSDecimalNumber
source§impl AsRef<NSNumber> for NSDecimalNumber
impl AsRef<NSNumber> for NSDecimalNumber
source§impl Borrow<NSNumber> for NSDecimalNumber
impl Borrow<NSNumber> for NSDecimalNumber
source§impl BorrowMut<AnyObject> for NSNumber
impl BorrowMut<AnyObject> for NSNumber
source§fn borrow_mut(&mut self) -> &mut AnyObject
fn borrow_mut(&mut self) -> &mut AnyObject
source§impl BorrowMut<NSNumber> for NSDecimalNumber
impl BorrowMut<NSNumber> for NSDecimalNumber
source§fn borrow_mut(&mut self) -> &mut NSNumber
fn borrow_mut(&mut self) -> &mut NSNumber
source§impl BorrowMut<NSObject> for NSNumber
impl BorrowMut<NSObject> for NSNumber
source§fn borrow_mut(&mut self) -> &mut NSObject
fn borrow_mut(&mut self) -> &mut NSObject
source§impl BorrowMut<NSValue> for NSNumber
impl BorrowMut<NSValue> for NSNumber
source§fn borrow_mut(&mut self) -> &mut NSValue
fn borrow_mut(&mut self) -> &mut NSValue
source§impl ClassType for NSNumber
impl ClassType for NSNumber
§type Mutability = InteriorMutable
type Mutability = InteriorMutable
source§const NAME: &'static str = _
const NAME: &'static str = _
source§fn class() -> &'static AnyClass
fn class() -> &'static AnyClass
source§fn as_super_mut(&mut self) -> &mut Self::Super
fn as_super_mut(&mut self) -> &mut Self::Super
source§impl NSCoding for NSNumber
impl NSCoding for NSNumber
source§impl NSCopying for NSNumber
impl NSCopying for NSNumber
source§fn copy(&self) -> Id<<Self::Mutability as Copyhelper<Self>>::CopyOutput>where
Self: Sized + ClassType,
Self::Mutability: Copyhelper<Self>,
fn copy(&self) -> Id<<Self::Mutability as Copyhelper<Self>>::CopyOutput>where Self: Sized + ClassType, Self::Mutability: Copyhelper<Self>,
source§impl NSObjectProtocol for NSNumber
impl NSObjectProtocol for NSNumber
source§impl NSSecureCoding for NSNumber
impl NSSecureCoding for NSNumber
source§impl PartialEq<NSNumber> for NSNumber
impl PartialEq<NSNumber> for NSNumber
Beware: This uses the Objective-C method “isEqualToNumber:”, which has different floating point NaN semantics than Rust!
source§impl PartialOrd<NSNumber> for NSNumber
impl PartialOrd<NSNumber> for NSNumber
Beware: This uses the Objective-C method “compare:”, which has different floating point NaN semantics than Rust!
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read moresource§impl RefEncode for NSNumber
impl RefEncode for NSNumber
source§const ENCODING_REF: Encoding = <NSValue as ::objc2::RefEncode>::ENCODING_REF
const ENCODING_REF: Encoding = <NSValue as ::objc2::RefEncode>::ENCODING_REF
source§impl ToOwned for NSNumber
impl ToOwned for NSNumber
impl CKRecordValue for NSNumber
CloudKit only.impl Message for NSNumber
impl NSFetchRequestResult for NSNumber
CoreData only.