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
//!
//! This crate provides three derive macros for crate `castflip`.
//!
//! Please refer to the documentation of `castflip`
//! at <https://docs.rs/castflip/> for more information.
//!


mod cast;
mod flip;
mod nop_flip;

use proc_macro::TokenStream;


///
/// Declares that the succeeding struct or union type is `encast`able
/// / `decast`able.
///
/// Please refer to the description of trait [`Cast`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`Cast`]: https://docs.rs/castflip/latest/castflip/trait.Cast.html
///
#[proc_macro_derive(Cast)]
pub fn cast_derive(input: TokenStream) -> TokenStream {
    cast::proc_tokens(input)
}


///
/// Declares that the succeeding struct type is `endian-flip`pable.
///
/// Please refer to the description of trait [`Flip`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`Flip`]: https://docs.rs/castflip/latest/castflip/trait.Flip.html
///
#[proc_macro_derive(Flip)]
pub fn flip_derive(input: TokenStream) -> TokenStream {
    flip::proc_tokens(input)
}


///
/// Declares that the succeeding struct or union type is is marked as
/// `endian-flip`pable but the implemented operation is Nop (No
/// operation).
///
/// Please refer to the description of trait [`NopFlip`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`NopFlip`]: https://docs.rs/castflip/latest/castflip/trait.NopFlip.html
///
#[proc_macro_derive(NopFlip)]
pub fn nop_flip_derive(input: TokenStream) -> TokenStream {
    nop_flip::proc_tokens(input)
}