rbatis_codegen/
ops_bit_or.rs1use crate::ops::{AsProxy, BitOr};
2use crate::ops_macros::{
3 impl_bool_scalar_binary_op, impl_bool_value_binary_op, impl_numeric_binary_op,
4 impl_same_type_binary_op,
5};
6use rbs::Value;
7
8fn op_bit_or_u64(value: &Value, other: u64) -> u64 {
9 value.u64() | other
10}
11
12fn op_bit_or_i64(value: &Value, other: i64) -> i64 {
13 value.i64() | other
14}
15
16impl_bool_value_binary_op!(BitOr, op_bitor, |);
17impl_bool_scalar_binary_op!(BitOr, op_bitor, |);
18impl_numeric_binary_op!(
19 BitOr,
20 op_bitor,
21 op_bit_or_u64,
22 op_bit_or_u64,
23 [u8, u16, u32, u64],
24 u64
25);
26impl_numeric_binary_op!(
27 BitOr,
28 op_bitor,
29 op_bit_or_i64,
30 op_bit_or_i64,
31 [i8, i16, i32, i64, isize, usize],
32 i64
33);
34impl_same_type_binary_op!(
35 BitOr,
36 op_bitor,
37 |,
38 [u8, u16, u32, u64, i8, i16, i32, i64, isize, usize, bool]
39);
40
41#[cfg(test)]
42mod test {
43 use crate::ops::BitOr;
44 use rbs::Value;
45
46 #[test]
47 fn test_bitor() {
48 assert_eq!(Value::I32(5).op_bitor(3i32), 7i64);
49 assert_eq!((&Value::I32(5)).op_bitor(&3i32), 7i64);
50 assert!(Value::Bool(false).op_bitor(&&Value::Bool(true)));
51 assert!(false.op_bitor(&true));
52 }
53}