1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! A numerical range.
use crate::{
    NSTDFloat32, NSTDFloat64, NSTDInt, NSTDInt16, NSTDInt32, NSTDInt64, NSTDInt8, NSTDUInt,
    NSTDUInt16, NSTDUInt32, NSTDUInt64, NSTDUInt8,
};
use nstdapi::nstdapi;

/// Generates the `NSTD*Range*` structs.
macro_rules! gen_range_struct {
    (
        $(#[$meta:meta])*
        $name: ident, $T: ty
    ) => {
        $(#[$meta])*
        #[nstdapi]
        #[derive(Clone, Copy)]
        pub struct $name {
            /// The lower bound of the range.
            pub start: $T,
            /// The higher bound of the range.
            pub end: $T,
        }
    };
}
gen_range_struct!(
    /// A 32-bit floating point numerical range.
    NSTDRangeF32,
    NSTDFloat32
);
gen_range_struct!(
    /// A 64-bit floating point numerical range.
    NSTDRangeF64,
    NSTDFloat64
);
gen_range_struct!(
    /// An arch-bit signed numerical range.
    NSTDRange,
    NSTDInt
);
gen_range_struct!(
    /// An arch-bit unsigned numerical range.
    NSTDURange,
    NSTDUInt
);
gen_range_struct!(
    /// An 8-bit signed numerical range.
    NSTDRangeI8,
    NSTDInt8
);
gen_range_struct!(
    /// An 8-bit unsigned numerical range.
    NSTDRangeU8,
    NSTDUInt8
);
gen_range_struct!(
    /// A 16-bit signed numerical range.
    NSTDRangeI16,
    NSTDInt16
);
gen_range_struct!(
    /// A 16-bit unsigned numerical range.
    NSTDRangeU16,
    NSTDUInt16
);
gen_range_struct!(
    /// A 32-bit signed numerical range.
    NSTDRangeI32,
    NSTDInt32
);
gen_range_struct!(
    /// A 32-bit unsigned numerical range.
    NSTDRangeU32,
    NSTDUInt32
);
gen_range_struct!(
    /// A 64-bit signed numerical range.
    NSTDRangeI64,
    NSTDInt64
);
gen_range_struct!(
    /// A 64-bit unsigned numerical range.
    NSTDRangeU64,
    NSTDUInt64
);