rust_macios/foundation/
ns_decimal_number_handler.rs1use libc::c_short;
2use objc::{msg_send, sel, sel_impl};
3
4use crate::{
5 object,
6 objective_c_runtime::{
7 macros::interface_impl,
8 traits::{FromId, PNSObject},
9 },
10};
11
12use super::NSRoundingMode;
13
14object! {
15 unsafe pub struct NSDecimalNumberHandler;
17}
18
19#[interface_impl(NSObject)]
20impl NSDecimalNumberHandler {
21 #[property]
23 pub fn default_decimal_number_handler() -> NSDecimalNumberHandler {
24 unsafe { msg_send![Self::m_class(), defaultDecimalNumberHandler] }
25 }
26
27 #[method]
29 pub fn decimal_number_handler_with_rounding_mode_scale_raise_on_exactness_raise_on_overflow_raise_on_underflow_raise_on_divide_by_zero(
30 rounding_mode: NSRoundingMode,
31 scale: c_short,
32 exact: bool,
33 overflow: bool,
34 underflow: bool,
35 divide_by_zero: bool,
36 ) -> Self
37 where
38 Self: Sized + FromId,
39 {
40 unsafe {
41 Self::from_id(
42 msg_send![Self::m_class(), decimalNumberHandlerWithRoundingMode: rounding_mode scale: scale raiseOnExactness: exact raiseOnOverflow: overflow raiseOnUnderflow: underflow raiseOnDivideByZero: divide_by_zero ],
43 )
44 }
45 }
46
47 #[method]
49 pub fn init_with_rounding_mode_scale_raise_on_exactness_raise_on_overflow_raise_on_underflow_raise_on_divide_by_zero(
50 &mut self,
51 rounding_mode: NSRoundingMode,
52 scale: c_short,
53 exact: bool,
54 overflow: bool,
55 underflow: bool,
56 divide_by_zero: bool,
57 ) -> Self
58 where
59 Self: Sized + FromId,
60 {
61 unsafe {
62 Self::from_id(
63 msg_send![self.m_self(), initWithRoundingMode: rounding_mode scale: scale raiseOnExactness: exact raiseOnOverflow: overflow raiseOnUnderflow: underflow raiseOnDivideByZero: divide_by_zero ],
64 )
65 }
66 }
67}