mech_set/
lib.rs

1#![no_main]
2#![allow(warnings)]
3
4use indexmap::set::IndexSet;
5
6use mech_core::*;
7
8use paste::paste;
9
10use std::fmt::{Display, Debug};
11use std::marker::PhantomData;
12
13#[cfg(feature = "union")]
14pub mod union;
15//#[cfg(feature = "complement")]
16//pub mod complement;
17//#[cfg(feature = "difference")]
18//pub mod difference;
19//#[cfg(feature = "intersection")]
20//pub mod intersection;
21//
22#[cfg(feature = "union")]
23pub use self::union::*;
24//#[cfg(feature = "complement")]
25//pub use self::complement::*;
26//#[cfg(feature = "difference")]
27//pub use self::difference::*;
28//#[cfg(feature = "intersection")]
29//pub use self::intersection::*;
30
31//#[cfg(feature = "join")]
32//pub mod join;
33//#[cfg(feature = "powerset")]
34//pub mod powerset;
35//
36//#[cfg(feature = "join")]
37//pub use self::join::*;
38//#[cfg(feature = "op_assign")]
39//pub use self::op_assign::*;
40//#[cfg(feature = "ops")]
41//pub use self::ops::*;
42//#[cfg(feature = "powerset")]
43//pub use self::powerset::*;
44
45
46// ----------------------------------------------------------------------------
47// Set Library
48// ----------------------------------------------------------------------------
49
50#[macro_export]
51macro_rules! register_set_fxns {
52  ($lib:ident, $($suffix:ident),* $(,)?) => {
53    paste::paste! {
54      $(
55        register_fxn_descriptor!([<$lib $suffix>],
56          i8, "i8",
57          i16, "i16",
58          i32, "i32",
59          i64, "i64",
60          i128, "i128",
61          u8, "u8",
62          u16, "u16",
63          u32, "u32",
64          u64, "u64",
65          u128, "u128",
66          F32, "f32",
67          F64, "f64",
68          C64, "c64",
69          R64, "r64" 
70        );
71      )*
72    }
73  };
74}
75
76#[macro_export]
77macro_rules! impl_set_fxns {
78  ($lib:ident) => {
79    impl_fxns!($lib,T,T,impl_binop);
80    register_set_fxns!($lib,
81        SS, SM1, SM2, SM3, SM4, SM2x3, SM3x2, SMD, SR2, SR3, SR4, SRD,
82        SV2, SV3, SV4, SVD, M1S, M2S, M3S, M4S, M2x3S, M3x2S, MDS,
83        R2S, R3S, R4S, RDS, V2S, V3S, V4S, VDS, M1M1, M2M2, M3M3, M4M4,
84        M2x3M2x3, M3x2M3x2, MDMD, M2V2, M3V3, M4V4, M2x3V2, M3x2V3, MDVD,
85        MDV2, MDV3, MDV4, V2M2, V3M3, V4M4, V2M2x3, V3M3x2, VDMD, V2MD,
86        V3MD, V4MD, M2R2, M3R3, M4R4, M2x3R3, M3x2R2, MDRD, MDR2, MDR3,
87        MDR4, R2M2, R3M3, R4M4, R3M2x3, R2M3x2, RDMD, R2MD, R3MD, R4MD,
88        R2R2, R3R3, R4R4, RDRD, V2V2, V3V3, V4V4, VDVD, Union
89    );
90  }}
91