blob: 2b524699f079b5232272b3e39a5670b04f6e66e4 [file] [log] [blame]
Kévin Redon78bb8852019-06-06 17:48:10 +02001/**
2 * \file
3 *
4 * \brief Decrement macro.
5 *
6 * Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.
7 *
8 * \asf_license_start
9 *
10 * \page License
11 *
12 * Subject to your compliance with these terms, you may use Microchip
13 * software and any derivatives exclusively with Microchip products.
14 * It is your responsibility to comply with third party license terms applicable
15 * to your use of third party software (including open source software) that
16 * may accompany Microchip software.
17 *
18 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
19 * WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
20 * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
21 * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
22 * LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
23 * LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
24 * SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
25 * POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
26 * ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
27 * RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
28 * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
29 *
30 * \asf_license_stop
31 *
32 */
33
34#ifndef _UTILS_DECREMENT_MACRO_H
35#define _UTILS_DECREMENT_MACRO_H
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/**
42 * \brief Compile time decrement, result value is entire integer literal
43 *
44 * \param[in] val - value to be decremented
45 */
46#define DEC_VALUE(val) DEC_##val
47
48// Preprocessor increment implementation
49#define DEC_256 255
50#define DEC_255 254
51#define DEC_254 253
52#define DEC_253 252
53#define DEC_252 251
54#define DEC_251 250
55#define DEC_250 249
56#define DEC_249 248
57#define DEC_248 247
58#define DEC_247 246
59#define DEC_246 245
60#define DEC_245 244
61#define DEC_244 243
62#define DEC_243 242
63#define DEC_242 241
64#define DEC_241 240
65#define DEC_240 239
66#define DEC_239 238
67#define DEC_238 237
68#define DEC_237 236
69#define DEC_236 235
70#define DEC_235 234
71#define DEC_234 233
72#define DEC_233 232
73#define DEC_232 231
74#define DEC_231 230
75#define DEC_230 229
76#define DEC_229 228
77#define DEC_228 227
78#define DEC_227 226
79#define DEC_226 225
80#define DEC_225 224
81#define DEC_224 223
82#define DEC_223 222
83#define DEC_222 221
84#define DEC_221 220
85#define DEC_220 219
86#define DEC_219 218
87#define DEC_218 217
88#define DEC_217 216
89#define DEC_216 215
90#define DEC_215 214
91#define DEC_214 213
92#define DEC_213 212
93#define DEC_212 211
94#define DEC_211 210
95#define DEC_210 209
96#define DEC_209 208
97#define DEC_208 207
98#define DEC_207 206
99#define DEC_206 205
100#define DEC_205 204
101#define DEC_204 203
102#define DEC_203 202
103#define DEC_202 201
104#define DEC_201 200
105#define DEC_200 199
106#define DEC_199 198
107#define DEC_198 197
108#define DEC_197 196
109#define DEC_196 195
110#define DEC_195 194
111#define DEC_194 193
112#define DEC_193 192
113#define DEC_192 191
114#define DEC_191 190
115#define DEC_190 189
116#define DEC_189 188
117#define DEC_188 187
118#define DEC_187 186
119#define DEC_186 185
120#define DEC_185 184
121#define DEC_184 183
122#define DEC_183 182
123#define DEC_182 181
124#define DEC_181 180
125#define DEC_180 179
126#define DEC_179 178
127#define DEC_178 177
128#define DEC_177 176
129#define DEC_176 175
130#define DEC_175 174
131#define DEC_174 173
132#define DEC_173 172
133#define DEC_172 171
134#define DEC_171 170
135#define DEC_170 169
136#define DEC_169 168
137#define DEC_168 167
138#define DEC_167 166
139#define DEC_166 165
140#define DEC_165 164
141#define DEC_164 163
142#define DEC_163 162
143#define DEC_162 161
144#define DEC_161 160
145#define DEC_160 159
146#define DEC_159 158
147#define DEC_158 157
148#define DEC_157 156
149#define DEC_156 155
150#define DEC_155 154
151#define DEC_154 153
152#define DEC_153 152
153#define DEC_152 151
154#define DEC_151 150
155#define DEC_150 149
156#define DEC_149 148
157#define DEC_148 147
158#define DEC_147 146
159#define DEC_146 145
160#define DEC_145 144
161#define DEC_144 143
162#define DEC_143 142
163#define DEC_142 141
164#define DEC_141 140
165#define DEC_140 139
166#define DEC_139 138
167#define DEC_138 137
168#define DEC_137 136
169#define DEC_136 135
170#define DEC_135 134
171#define DEC_134 133
172#define DEC_133 132
173#define DEC_132 131
174#define DEC_131 130
175#define DEC_130 129
176#define DEC_129 128
177#define DEC_128 127
178#define DEC_127 126
179#define DEC_126 125
180#define DEC_125 124
181#define DEC_124 123
182#define DEC_123 122
183#define DEC_122 121
184#define DEC_121 120
185#define DEC_120 119
186#define DEC_119 118
187#define DEC_118 117
188#define DEC_117 116
189#define DEC_116 115
190#define DEC_115 114
191#define DEC_114 113
192#define DEC_113 112
193#define DEC_112 111
194#define DEC_111 110
195#define DEC_110 109
196#define DEC_109 108
197#define DEC_108 107
198#define DEC_107 106
199#define DEC_106 105
200#define DEC_105 104
201#define DEC_104 103
202#define DEC_103 102
203#define DEC_102 101
204#define DEC_101 100
205#define DEC_100 99
206#define DEC_99 98
207#define DEC_98 97
208#define DEC_97 96
209#define DEC_96 95
210#define DEC_95 94
211#define DEC_94 93
212#define DEC_93 92
213#define DEC_92 91
214#define DEC_91 90
215#define DEC_90 89
216#define DEC_89 88
217#define DEC_88 87
218#define DEC_87 86
219#define DEC_86 85
220#define DEC_85 84
221#define DEC_84 83
222#define DEC_83 82
223#define DEC_82 81
224#define DEC_81 80
225#define DEC_80 79
226#define DEC_79 78
227#define DEC_78 77
228#define DEC_77 76
229#define DEC_76 75
230#define DEC_75 74
231#define DEC_74 73
232#define DEC_73 72
233#define DEC_72 71
234#define DEC_71 70
235#define DEC_70 69
236#define DEC_69 68
237#define DEC_68 67
238#define DEC_67 66
239#define DEC_66 65
240#define DEC_65 64
241#define DEC_64 63
242#define DEC_63 62
243#define DEC_62 61
244#define DEC_61 60
245#define DEC_60 59
246#define DEC_59 58
247#define DEC_58 57
248#define DEC_57 56
249#define DEC_56 55
250#define DEC_55 54
251#define DEC_54 53
252#define DEC_53 52
253#define DEC_52 51
254#define DEC_51 50
255#define DEC_50 49
256#define DEC_49 48
257#define DEC_48 47
258#define DEC_47 46
259#define DEC_46 45
260#define DEC_45 44
261#define DEC_44 43
262#define DEC_43 42
263#define DEC_42 41
264#define DEC_41 40
265#define DEC_40 39
266#define DEC_39 38
267#define DEC_38 37
268#define DEC_37 36
269#define DEC_36 35
270#define DEC_35 34
271#define DEC_34 33
272#define DEC_33 32
273#define DEC_32 31
274#define DEC_31 30
275#define DEC_30 29
276#define DEC_29 28
277#define DEC_28 27
278#define DEC_27 26
279#define DEC_26 25
280#define DEC_25 24
281#define DEC_24 23
282#define DEC_23 22
283#define DEC_22 21
284#define DEC_21 20
285#define DEC_20 19
286#define DEC_19 18
287#define DEC_18 17
288#define DEC_17 16
289#define DEC_16 15
290#define DEC_15 14
291#define DEC_14 13
292#define DEC_13 12
293#define DEC_12 11
294#define DEC_11 10
295#define DEC_10 9
296#define DEC_9 8
297#define DEC_8 7
298#define DEC_7 6
299#define DEC_6 5
300#define DEC_5 4
301#define DEC_4 3
302#define DEC_3 2
303#define DEC_2 1
304#define DEC_1 0
305
306#ifdef __cplusplus
307}
308#endif
309#endif /* _UTILS_DECREMENT_MACRO_H */