/******************************************************************************
 * The MIT License
 *
 * Copyright (c) 2010 LeafLabs, LLC.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *****************************************************************************/

/**
 * @brief BIT[n] and binary literal defines, for Arduino
 * compatibility.
 */

#ifndef _BIT_CONSTANTS_H_
#define _BIT_CONSTANTS_H_

#define BIT0 (1 << 0)
#define BIT1 (1 << 1)
#define BIT2 (1 << 2)
#define BIT3 (1 << 3)
#define BIT4 (1 << 4)
#define BIT5 (1 << 5)
#define BIT6 (1 << 6)
#define BIT7 (1 << 7)
#define BIT8 (1 << 8)
#define BIT9 (1 << 9)
#define BIT10 (1 << 10)
#define BIT11 (1 << 11)
#define BIT12 (1 << 12)
#define BIT13 (1 << 13)
#define BIT14 (1 << 14)
#define BIT15 (1 << 15)
#define BIT16 (1 << 16)
#define BIT17 (1 << 17)
#define BIT18 (1 << 18)
#define BIT19 (1 << 19)
#define BIT20 (1 << 20)
#define BIT21 (1 << 21)
#define BIT22 (1 << 22)
#define BIT23 (1 << 23)
#define BIT24 (1 << 24)
#define BIT25 (1 << 25)
#define BIT26 (1 << 26)
#define BIT27 (1 << 27)
#define BIT28 (1 << 28)
#define BIT29 (1 << 29)
#define BIT30 (1 << 30)
#define BIT31 (1 << 31)

#define B0        0
#define B00       0
#define B000      0
#define B0000     0
#define B00000    0
#define B000000   0
#define B0000000  0
#define B00000000 0
#define B1        1
#define B01       1
#define B001      1
#define B0001     1
#define B00001    1
#define B000001   1
#define B0000001  1
#define B00000001 1
#define B10       2
#define B010      2
#define B0010     2
#define B00010    2
#define B000010   2
#define B0000010  2
#define B00000010 2
#define B11       3
#define B011      3
#define B0011     3
#define B00011    3
#define B000011   3
#define B0000011  3
#define B00000011 3
#define B100      4
#define B0100     4
#define B00100    4
#define B000100   4
#define B0000100  4
#define B00000100 4
#define B101      5
#define B0101     5
#define B00101    5
#define B000101   5
#define B0000101  5
#define B00000101 5
#define B110      6
#define B0110     6
#define B00110    6
#define B000110   6
#define B0000110  6
#define B00000110 6
#define B111      7
#define B0111     7
#define B00111    7
#define B000111   7
#define B0000111  7
#define B00000111 7
#define B1000     8
#define B01000    8
#define B001000   8
#define B0001000  8
#define B00001000 8
#define B1001     9
#define B01001    9
#define B001001   9
#define B0001001  9
#define B00001001 9
#define B1010     10
#define B01010    10
#define B001010   10
#define B0001010  10
#define B00001010 10
#define B1011     11
#define B01011    11
#define B001011   11
#define B0001011  11
#define B00001011 11
#define B1100     12
#define B01100    12
#define B001100   12
#define B0001100  12
#define B00001100 12
#define B1101     13
#define B01101    13
#define B001101   13
#define B0001101  13
#define B00001101 13
#define B1110     14
#define B01110    14
#define B001110   14
#define B0001110  14
#define B00001110 14
#define B1111     15
#define B01111    15
#define B001111   15
#define B0001111  15
#define B00001111 15
#define B10000    16
#define B010000   16
#define B0010000  16
#define B00010000 16
#define B10001    17
#define B010001   17
#define B0010001  17
#define B00010001 17
#define B10010    18
#define B010010   18
#define B0010010  18
#define B00010010 18
#define B10011    19
#define B010011   19
#define B0010011  19
#define B00010011 19
#define B10100    20
#define B010100   20
#define B0010100  20
#define B00010100 20
#define B10101    21
#define B010101   21
#define B0010101  21
#define B00010101 21
#define B10110    22
#define B010110   22
#define B0010110  22
#define B00010110 22
#define B10111    23
#define B010111   23
#define B0010111  23
#define B00010111 23
#define B11000    24
#define B011000   24
#define B0011000  24
#define B00011000 24
#define B11001    25
#define B011001   25
#define B0011001  25
#define B00011001 25
#define B11010    26
#define B011010   26
#define B0011010  26
#define B00011010 26
#define B11011    27
#define B011011   27
#define B0011011  27
#define B00011011 27
#define B11100    28
#define B011100   28
#define B0011100  28
#define B00011100 28
#define B11101    29
#define B011101   29
#define B0011101  29
#define B00011101 29
#define B11110    30
#define B011110   30
#define B0011110  30
#define B00011110 30
#define B11111    31
#define B011111   31
#define B0011111  31
#define B00011111 31
#define B100000   32
#define B0100000  32
#define B00100000 32
#define B100001   33
#define B0100001  33
#define B00100001 33
#define B100010   34
#define B0100010  34
#define B00100010 34
#define B100011   35
#define B0100011  35
#define B00100011 35
#define B100100   36
#define B0100100  36
#define B00100100 36
#define B100101   37
#define B0100101  37
#define B00100101 37
#define B100110   38
#define B0100110  38
#define B00100110 38
#define B100111   39
#define B0100111  39
#define B00100111 39
#define B101000   40
#define B0101000  40
#define B00101000 40
#define B101001   41
#define B0101001  41
#define B00101001 41
#define B101010   42
#define B0101010  42
#define B00101010 42
#define B101011   43
#define B0101011  43
#define B00101011 43
#define B101100   44
#define B0101100  44
#define B00101100 44
#define B101101   45
#define B0101101  45
#define B00101101 45
#define B101110   46
#define B0101110  46
#define B00101110 46
#define B101111   47
#define B0101111  47
#define B00101111 47
#define B110000   48
#define B0110000  48
#define B00110000 48
#define B110001   49
#define B0110001  49
#define B00110001 49
#define B110010   50
#define B0110010  50
#define B00110010 50
#define B110011   51
#define B0110011  51
#define B00110011 51
#define B110100   52
#define B0110100  52
#define B00110100 52
#define B110101   53
#define B0110101  53
#define B00110101 53
#define B110110   54
#define B0110110  54
#define B00110110 54
#define B110111   55
#define B0110111  55
#define B00110111 55
#define B111000   56
#define B0111000  56
#define B00111000 56
#define B111001   57
#define B0111001  57
#define B00111001 57
#define B111010   58
#define B0111010  58
#define B00111010 58
#define B111011   59
#define B0111011  59
#define B00111011 59
#define B111100   60
#define B0111100  60
#define B00111100 60
#define B111101   61
#define B0111101  61
#define B00111101 61
#define B111110   62
#define B0111110  62
#define B00111110 62
#define B111111   63
#define B0111111  63
#define B00111111 63
#define B1000000  64
#define B01000000 64
#define B1000001  65
#define B01000001 65
#define B1000010  66
#define B01000010 66
#define B1000011  67
#define B01000011 67
#define B1000100  68
#define B01000100 68
#define B1000101  69
#define B01000101 69
#define B1000110  70
#define B01000110 70
#define B1000111  71
#define B01000111 71
#define B1001000  72
#define B01001000 72
#define B1001001  73
#define B01001001 73
#define B1001010  74
#define B01001010 74
#define B1001011  75
#define B01001011 75
#define B1001100  76
#define B01001100 76
#define B1001101  77
#define B01001101 77
#define B1001110  78
#define B01001110 78
#define B1001111  79
#define B01001111 79
#define B1010000  80
#define B01010000 80
#define B1010001  81
#define B01010001 81
#define B1010010  82
#define B01010010 82
#define B1010011  83
#define B01010011 83
#define B1010100  84
#define B01010100 84
#define B1010101  85
#define B01010101 85
#define B1010110  86
#define B01010110 86
#define B1010111  87
#define B01010111 87
#define B1011000  88
#define B01011000 88
#define B1011001  89
#define B01011001 89
#define B1011010  90
#define B01011010 90
#define B1011011  91
#define B01011011 91
#define B1011100  92
#define B01011100 92
#define B1011101  93
#define B01011101 93
#define B1011110  94
#define B01011110 94
#define B1011111  95
#define B01011111 95
#define B1100000  96
#define B01100000 96
#define B1100001  97
#define B01100001 97
#define B1100010  98
#define B01100010 98
#define B1100011  99
#define B01100011 99
#define B1100100  100
#define B01100100 100
#define B1100101  101
#define B01100101 101
#define B1100110  102
#define B01100110 102
#define B1100111  103
#define B01100111 103
#define B1101000  104
#define B01101000 104
#define B1101001  105
#define B01101001 105
#define B1101010  106
#define B01101010 106
#define B1101011  107
#define B01101011 107
#define B1101100  108
#define B01101100 108
#define B1101101  109
#define B01101101 109
#define B1101110  110
#define B01101110 110
#define B1101111  111
#define B01101111 111
#define B1110000  112
#define B01110000 112
#define B1110001  113
#define B01110001 113
#define B1110010  114
#define B01110010 114
#define B1110011  115
#define B01110011 115
#define B1110100  116
#define B01110100 116
#define B1110101  117
#define B01110101 117
#define B1110110  118
#define B01110110 118
#define B1110111  119
#define B01110111 119
#define B1111000  120
#define B01111000 120
#define B1111001  121
#define B01111001 121
#define B1111010  122
#define B01111010 122
#define B1111011  123
#define B01111011 123
#define B1111100  124
#define B01111100 124
#define B1111101  125
#define B01111101 125
#define B1111110  126
#define B01111110 126
#define B1111111  127
#define B01111111 127
#define B10000000 128
#define B10000001 129
#define B10000010 130
#define B10000011 131
#define B10000100 132
#define B10000101 133
#define B10000110 134
#define B10000111 135
#define B10001000 136
#define B10001001 137
#define B10001010 138
#define B10001011 139
#define B10001100 140
#define B10001101 141
#define B10001110 142
#define B10001111 143
#define B10010000 144
#define B10010001 145
#define B10010010 146
#define B10010011 147
#define B10010100 148
#define B10010101 149
#define B10010110 150
#define B10010111 151
#define B10011000 152
#define B10011001 153
#define B10011010 154
#define B10011011 155
#define B10011100 156
#define B10011101 157
#define B10011110 158
#define B10011111 159
#define B10100000 160
#define B10100001 161
#define B10100010 162
#define B10100011 163
#define B10100100 164
#define B10100101 165
#define B10100110 166
#define B10100111 167
#define B10101000 168
#define B10101001 169
#define B10101010 170
#define B10101011 171
#define B10101100 172
#define B10101101 173
#define B10101110 174
#define B10101111 175
#define B10110000 176
#define B10110001 177
#define B10110010 178
#define B10110011 179
#define B10110100 180
#define B10110101 181
#define B10110110 182
#define B10110111 183
#define B10111000 184
#define B10111001 185
#define B10111010 186
#define B10111011 187
#define B10111100 188
#define B10111101 189
#define B10111110 190
#define B10111111 191
#define B11000000 192
#define B11000001 193
#define B11000010 194
#define B11000011 195
#define B11000100 196
#define B11000101 197
#define B11000110 198
#define B11000111 199
#define B11001000 200
#define B11001001 201
#define B11001010 202
#define B11001011 203
#define B11001100 204
#define B11001101 205
#define B11001110 206
#define B11001111 207
#define B11010000 208
#define B11010001 209
#define B11010010 210
#define B11010011 211
#define B11010100 212
#define B11010101 213
#define B11010110 214
#define B11010111 215
#define B11011000 216
#define B11011001 217
#define B11011010 218
#define B11011011 219
#define B11011100 220
#define B11011101 221
#define B11011110 222
#define B11011111 223
#define B11100000 224
#define B11100001 225
#define B11100010 226
#define B11100011 227
#define B11100100 228
#define B11100101 229
#define B11100110 230
#define B11100111 231
#define B11101000 232
#define B11101001 233
#define B11101010 234
#define B11101011 235
#define B11101100 236
#define B11101101 237
#define B11101110 238
#define B11101111 239
#define B11110000 240
#define B11110001 241
#define B11110010 242
#define B11110011 243
#define B11110100 244
#define B11110101 245
#define B11110110 246
#define B11110111 247
#define B11111000 248
#define B11111001 249
#define B11111010 250
#define B11111011 251
#define B11111100 252
#define B11111101 253
#define B11111110 254
#define B11111111 255

#endif  /* _BIT_CONSTANTS_H_ */
