use objc2::__framework_prelude::*;
use crate::*;
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSDecimalNumberExactnessException: &'static NSExceptionName;
}
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSDecimalNumberOverflowException: &'static NSExceptionName;
}
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSDecimalNumberUnderflowException: &'static NSExceptionName;
}
extern "C" {
#[cfg(all(feature = "NSObjCRuntime", feature = "NSString"))]
pub static NSDecimalNumberDivideByZeroException: &'static NSExceptionName;
}
extern_protocol!(
pub unsafe trait NSDecimalNumberBehaviors {
#[cfg(feature = "NSDecimal")]
#[method(roundingMode)]
unsafe fn roundingMode(&self) -> NSRoundingMode;
#[method(scale)]
unsafe fn scale(&self) -> c_short;
#[cfg(all(feature = "NSDecimal", feature = "NSValue"))]
#[method_id(@__retain_semantics Other exceptionDuringOperation:error:leftOperand:rightOperand:)]
unsafe fn exceptionDuringOperation_error_leftOperand_rightOperand(
&self,
operation: Sel,
error: NSCalculationError,
left_operand: &NSDecimalNumber,
right_operand: Option<&NSDecimalNumber>,
) -> Option<Retained<NSDecimalNumber>>;
}
unsafe impl ProtocolType for dyn NSDecimalNumberBehaviors {}
);
extern_class!(
#[derive(Debug, PartialEq, Hash)]
#[cfg(feature = "NSValue")]
pub struct NSDecimalNumber;
#[cfg(feature = "NSValue")]
unsafe impl ClassType for NSDecimalNumber {
#[inherits(NSValue, NSObject)]
type Super = NSNumber;
type Mutability = Immutable;
}
);
#[cfg(feature = "NSValue")]
unsafe impl Send for NSDecimalNumber {}
#[cfg(feature = "NSValue")]
unsafe impl Sync for NSDecimalNumber {}
#[cfg(all(feature = "NSObject", feature = "NSValue"))]
unsafe impl NSCoding for NSDecimalNumber {}
#[cfg(all(feature = "NSObject", feature = "NSValue"))]
unsafe impl NSCopying for NSDecimalNumber {}
#[cfg(feature = "NSValue")]
unsafe impl NSObjectProtocol for NSDecimalNumber {}
#[cfg(all(feature = "NSObject", feature = "NSValue"))]
unsafe impl NSSecureCoding for NSDecimalNumber {}
extern_methods!(
#[cfg(feature = "NSValue")]
unsafe impl NSDecimalNumber {
#[method_id(@__retain_semantics Init initWithMantissa:exponent:isNegative:)]
pub unsafe fn initWithMantissa_exponent_isNegative(
this: Allocated<Self>,
mantissa: c_ulonglong,
exponent: c_short,
flag: bool,
) -> Retained<Self>;
#[cfg(feature = "NSDecimal")]
#[method_id(@__retain_semantics Init initWithDecimal:)]
pub unsafe fn initWithDecimal(this: Allocated<Self>, dcm: NSDecimal) -> Retained<Self>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Init initWithString:)]
pub unsafe fn initWithString(
this: Allocated<Self>,
number_value: Option<&NSString>,
) -> Retained<Self>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Init initWithString:locale:)]
pub unsafe fn initWithString_locale(
this: Allocated<Self>,
number_value: Option<&NSString>,
locale: Option<&AnyObject>,
) -> Retained<Self>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Other descriptionWithLocale:)]
pub unsafe fn descriptionWithLocale(
&self,
locale: Option<&AnyObject>,
) -> Retained<NSString>;
#[cfg(feature = "NSDecimal")]
#[method(decimalValue)]
pub unsafe fn decimalValue(&self) -> NSDecimal;
#[method_id(@__retain_semantics Other decimalNumberWithMantissa:exponent:isNegative:)]
pub unsafe fn decimalNumberWithMantissa_exponent_isNegative(
mantissa: c_ulonglong,
exponent: c_short,
flag: bool,
) -> Retained<NSDecimalNumber>;
#[cfg(feature = "NSDecimal")]
#[method_id(@__retain_semantics Other decimalNumberWithDecimal:)]
pub unsafe fn decimalNumberWithDecimal(dcm: NSDecimal) -> Retained<NSDecimalNumber>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Other decimalNumberWithString:)]
pub unsafe fn decimalNumberWithString(
number_value: Option<&NSString>,
) -> Retained<NSDecimalNumber>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Other decimalNumberWithString:locale:)]
pub unsafe fn decimalNumberWithString_locale(
number_value: Option<&NSString>,
locale: Option<&AnyObject>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other zero)]
pub unsafe fn zero() -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other one)]
pub unsafe fn one() -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other minimumDecimalNumber)]
pub unsafe fn minimumDecimalNumber() -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other maximumDecimalNumber)]
pub unsafe fn maximumDecimalNumber() -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other notANumber)]
pub unsafe fn notANumber() -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByAdding:)]
pub unsafe fn decimalNumberByAdding(
&self,
decimal_number: &NSDecimalNumber,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByAdding:withBehavior:)]
pub unsafe fn decimalNumberByAdding_withBehavior(
&self,
decimal_number: &NSDecimalNumber,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberBySubtracting:)]
pub unsafe fn decimalNumberBySubtracting(
&self,
decimal_number: &NSDecimalNumber,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberBySubtracting:withBehavior:)]
pub unsafe fn decimalNumberBySubtracting_withBehavior(
&self,
decimal_number: &NSDecimalNumber,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByMultiplyingBy:)]
pub unsafe fn decimalNumberByMultiplyingBy(
&self,
decimal_number: &NSDecimalNumber,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByMultiplyingBy:withBehavior:)]
pub unsafe fn decimalNumberByMultiplyingBy_withBehavior(
&self,
decimal_number: &NSDecimalNumber,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByDividingBy:)]
pub unsafe fn decimalNumberByDividingBy(
&self,
decimal_number: &NSDecimalNumber,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByDividingBy:withBehavior:)]
pub unsafe fn decimalNumberByDividingBy_withBehavior(
&self,
decimal_number: &NSDecimalNumber,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByRaisingToPower:)]
pub unsafe fn decimalNumberByRaisingToPower(
&self,
power: NSUInteger,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByRaisingToPower:withBehavior:)]
pub unsafe fn decimalNumberByRaisingToPower_withBehavior(
&self,
power: NSUInteger,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByMultiplyingByPowerOf10:)]
pub unsafe fn decimalNumberByMultiplyingByPowerOf10(
&self,
power: c_short,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByMultiplyingByPowerOf10:withBehavior:)]
pub unsafe fn decimalNumberByMultiplyingByPowerOf10_withBehavior(
&self,
power: c_short,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[method_id(@__retain_semantics Other decimalNumberByRoundingAccordingToBehavior:)]
pub unsafe fn decimalNumberByRoundingAccordingToBehavior(
&self,
behavior: Option<&ProtocolObject<dyn NSDecimalNumberBehaviors>>,
) -> Retained<NSDecimalNumber>;
#[cfg(feature = "NSObjCRuntime")]
#[method(compare:)]
pub unsafe fn compare(&self, decimal_number: &NSNumber) -> NSComparisonResult;
#[method_id(@__retain_semantics Other defaultBehavior)]
pub unsafe fn defaultBehavior() -> Retained<ProtocolObject<dyn NSDecimalNumberBehaviors>>;
#[method(setDefaultBehavior:)]
pub unsafe fn setDefaultBehavior(
default_behavior: &ProtocolObject<dyn NSDecimalNumberBehaviors>,
);
#[method(objCType)]
pub unsafe fn objCType(&self) -> NonNull<c_char>;
#[method(doubleValue)]
pub unsafe fn doubleValue(&self) -> c_double;
}
);
extern_methods!(
#[cfg(feature = "NSValue")]
unsafe impl NSDecimalNumber {
#[cfg(feature = "NSCoder")]
#[method_id(@__retain_semantics Init initWithCoder:)]
pub unsafe fn initWithCoder(
this: Allocated<Self>,
coder: &NSCoder,
) -> Option<Retained<Self>>;
}
);
extern_methods!(
#[cfg(feature = "NSValue")]
unsafe impl NSDecimalNumber {
#[method_id(@__retain_semantics Init initWithBytes:objCType:)]
pub unsafe fn initWithBytes_objCType(
this: Allocated<Self>,
value: NonNull<c_void>,
r#type: NonNull<c_char>,
) -> Retained<Self>;
}
);
extern_methods!(
#[cfg(feature = "NSValue")]
unsafe impl NSDecimalNumber {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSDecimalNumberHandler;
unsafe impl ClassType for NSDecimalNumberHandler {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl Send for NSDecimalNumberHandler {}
unsafe impl Sync for NSDecimalNumberHandler {}
#[cfg(feature = "NSObject")]
unsafe impl NSCoding for NSDecimalNumberHandler {}
unsafe impl NSDecimalNumberBehaviors for NSDecimalNumberHandler {}
unsafe impl NSObjectProtocol for NSDecimalNumberHandler {}
extern_methods!(
unsafe impl NSDecimalNumberHandler {
#[method_id(@__retain_semantics Other defaultDecimalNumberHandler)]
pub unsafe fn defaultDecimalNumberHandler() -> Retained<NSDecimalNumberHandler>;
#[cfg(feature = "NSDecimal")]
#[method_id(@__retain_semantics Init initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:)]
pub unsafe fn initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero(
this: Allocated<Self>,
rounding_mode: NSRoundingMode,
scale: c_short,
exact: bool,
overflow: bool,
underflow: bool,
divide_by_zero: bool,
) -> Retained<Self>;
#[cfg(feature = "NSDecimal")]
#[method_id(@__retain_semantics Other decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:)]
pub unsafe fn decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero(
rounding_mode: NSRoundingMode,
scale: c_short,
exact: bool,
overflow: bool,
underflow: bool,
divide_by_zero: bool,
) -> Retained<Self>;
}
);
extern_methods!(
unsafe impl NSDecimalNumberHandler {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_methods!(
#[cfg(feature = "NSValue")]
unsafe impl NSNumber {
#[cfg(feature = "NSDecimal")]
#[method(decimalValue)]
pub unsafe fn decimalValue(&self) -> NSDecimal;
}
);
extern_methods!(
#[cfg(feature = "NSScanner")]
unsafe impl NSScanner {
#[cfg(feature = "NSDecimal")]
#[method(scanDecimal:)]
pub unsafe fn scanDecimal(&self, dcm: *mut NSDecimal) -> bool;
}
);