brotli_decompressor/
memory.rs
1#![allow(unused_macros)]
2#[cfg(not(feature="unsafe"))]
5macro_rules! fast_ref {
6 (($slice : expr)[$index: expr]) => {
7 &($slice)[$index]
8 };
9}
10
11#[cfg(not(feature="unsafe"))]
12macro_rules! fast_inner {
13 (($slice : expr)[$index: expr]) => {
14 ($slice)[$index]
15 };
16}
17
18#[cfg(not(feature="unsafe"))]
19macro_rules! fast_inner {
20 (($slice : expr)[$index: expr]) => {
21 ($slice)[$index]
22 };
23}
24
25#[cfg(not(feature="unsafe"))]
26macro_rules! fast {
27 (($slice : expr)[$index: expr]) => {
28 ($slice)[$index]
29 };
30 (($slice : expr)[$start: expr ; $end : expr]) => {
31 &($slice)[$start .. $end]
32 };
33 (($slice : expr)[$start: expr ;]) => {
34 &($slice)[$start .. ]
35 };
36 (($slice : expr)[; $end : expr]) => {
37 &($slice)[.. $end ]
38 };
39}
40
41macro_rules! fast_uninitialized {
42 [$size : expr] => {[0; $size]};
43 [$def_value : expr ; $size : expr] => {[$def_value; $size]};
44}
45
46#[cfg(not(feature="unsafe"))]
47macro_rules! fast_mut {
48 (($slice : expr)[$index: expr]) => {
49 ($slice)[$index]
50 };
51 (($slice : expr)[$start: expr ; $end : expr]) => {
52 &mut $slice[$start..$end]
53 };
54 (($slice : expr)[$start: expr ;]) => {
55 &mut $slice[$start..]
56 };
57 (($slice : expr)[; $end : expr]) => {
58 &mut $slice[..$end]
59 };
60}
61
62
63#[cfg(feature="unsafe")]
64#[allow(unused_unsafe)]
65macro_rules! fast_ref {
66 (($slice : expr)[$index: expr]) => {
67 unsafe{$slice.get_unchecked($index)}
68 };
69}
70
71#[cfg(feature="unsafe")]
72macro_rules! fast_inner {
73 (($slice : expr)[$index: expr]) => {
74 *$slice.get_unchecked($index)
75 };
76}
77#[cfg(feature="unsafe")]
85macro_rules! fast {
86 (($slice : expr)[$index: expr]) => {
87 unsafe{*$slice.get_unchecked($index)}
88 };
89 (($slice : expr)[$start: expr ; $end : expr]) => {
90 unsafe{::core::slice::from_raw_parts(($slice).as_ptr().offset($start as isize),
91 $end - $start)}
92 };
93 (($slice : expr)[$start: expr ;]) => {
94 unsafe{::core::slice::from_raw_parts(($slice).as_ptr().offset($start as isize),
95 $slice.len() - $start)}
96 };
97 (($slice : expr)[; $end : expr]) => {
98 unsafe{::core::slice::from_raw_parts(($slice).as_ptr(), $slice.len())}
99 };
100}
101
102macro_rules! fast_slice {
103 (($slice : expr)[$index: expr]) => {
104 fast!(($slice.slice())[$index])
105 };
106 (($slice : expr)[$index: expr;]) => {
107 fast!(($slice.slice())[$index;])
108 };
109 (($slice : expr)[$start :expr; $end: expr]) => {
110 fast!(($slice.slice())[$start;$end])
111 };
112}
113macro_rules! fast_slice_mut {
123 (($slice : expr)[$index: expr]) => {
124 fast_mut!(($slice.slice_mut())[$index])
125 };
126 (($slice : expr)[$index: expr;]) => {
127 fast_mut!(($slice.slice_mut())[$index;])
128 };
129 (($slice : expr)[$start :expr;$end: expr]) => {
130 fast_mut!(($slice.slice_mut())[$start;$end])
131 };
132}
133
134#[cfg(feature="unsafe")]
135macro_rules! fast_mut {
136 (($slice : expr)[$index: expr]) => {
137 *unsafe{$slice.get_unchecked_mut($index)}
138 };
139 (($slice : expr)[$start: expr ; $end : expr]) => {
140 unsafe{::core::slice::from_raw_parts_mut(($slice).as_mut_ptr().offset($start as isize),
141 $end - $start)}
142 };
143 (($slice : expr)[$start: expr ;]) => {
144 unsafe{::core::slice::from_raw_parts_mut(($slice).as_mut_ptr().offset($start as isize),
145 $slice.len() - $start)}
146 };
147 (($slice : expr)[; $end : expr]) => {
148 unsafe{::core::slice::from_raw_parts_mut(($slice).as_mut_ptr(), $slice.len())}
149 };
150}
151
152