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
pub use self::alias::*;
pub use self::pointer::*;
pub use self::value::*;
#[macro_use]
pub mod macros;
pub mod alias;
pub mod pointer;
pub mod value;
pub mod marker {
pub struct Single;
pub struct Atomic;
pub struct Value;
pub struct Alias;
}
pub trait RawBits<R, T> {
fn write(&mut self, offset: u32, set: bool) -> &mut Self;
fn read(&self, offset: u32) -> bool;
}
pub trait Delegate<R, A> {
type Pointer: RawPointer<R, A>;
const ADDRESS: usize;
fn ptr(&self) -> Self::Pointer {
unsafe { Self::Pointer::new(Self::ADDRESS) }
}
}