/*
 *
 *  ALL03
 *
 *  26.07.2002
 *
 *  by Fabio Sturman
 *
 *  fabio.sturman@tiscali.it
 *
 *  binmask.h
 *
 *  binary masks
 *
 */

/* Copyright (c) 2002 Fabio Sturman (fabio.sturman@tiscali.it)
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef BINMASK_INCLUDE
#define BINMASK_INCLUDE

#define BIT(x) (1 << (x))
#define NBIT(x) ~(1 << (x))

#define LOW  0
#define HIGH 1

#define M_00000000 0
#define M_00000001 1
#define M_00000010 2
#define M_00000011 3
#define M_00000100 4
#define M_00000101 5
#define M_00000110 6
#define M_00000111 7
#define M_00001000 8
#define M_00001001 9
#define M_00001010 10
#define M_00001011 11
#define M_00001100 12
#define M_00001101 13
#define M_00001110 14
#define M_00001111 15
#define M_00010000 16
#define M_00010001 17
#define M_00010010 18
#define M_00010011 19
#define M_00010100 20
#define M_00010101 21
#define M_00010110 22
#define M_00010111 23
#define M_00011000 24
#define M_00011001 25
#define M_00011010 26
#define M_00011011 27
#define M_00011100 28
#define M_00011101 29
#define M_00011110 30
#define M_00011111 31
#define M_00100000 32
#define M_00100001 33
#define M_00100010 34
#define M_00100011 35
#define M_00100100 36
#define M_00100101 37
#define M_00100110 38
#define M_00100111 39
#define M_00101000 40
#define M_00101001 41
#define M_00101010 42
#define M_00101011 43
#define M_00101100 44
#define M_00101101 45
#define M_00101110 46
#define M_00101111 47
#define M_00110000 48
#define M_00110001 49
#define M_00110010 50
#define M_00110011 51
#define M_00110100 52
#define M_00110101 53
#define M_00110110 54
#define M_00110111 55
#define M_00111000 56
#define M_00111001 57
#define M_00111010 58
#define M_00111011 59
#define M_00111100 60
#define M_00111101 61
#define M_00111110 62
#define M_00111111 63
#define M_01000000 64
#define M_01000001 65
#define M_01000010 66
#define M_01000011 67
#define M_01000100 68
#define M_01000101 69
#define M_01000110 70
#define M_01000111 71
#define M_01001000 72
#define M_01001001 73
#define M_01001010 74
#define M_01001011 75
#define M_01001100 76
#define M_01001101 77
#define M_01001110 78
#define M_01001111 79
#define M_01010000 80
#define M_01010001 81
#define M_01010010 82
#define M_01010011 83
#define M_01010100 84
#define M_01010101 85
#define M_01010110 86
#define M_01010111 87
#define M_01011000 88
#define M_01011001 89
#define M_01011010 90
#define M_01011011 91
#define M_01011100 92
#define M_01011101 93
#define M_01011110 94
#define M_01011111 95
#define M_01100000 96
#define M_01100001 97
#define M_01100010 98
#define M_01100011 99
#define M_01100100 100
#define M_01100101 101
#define M_01100110 102
#define M_01100111 103
#define M_01101000 104
#define M_01101001 105
#define M_01101010 106
#define M_01101011 107
#define M_01101100 108
#define M_01101101 109
#define M_01101110 110
#define M_01101111 111
#define M_01110000 112
#define M_01110001 113
#define M_01110010 114
#define M_01110011 115
#define M_01110100 116
#define M_01110101 117
#define M_01110110 118
#define M_01110111 119
#define M_01111000 120
#define M_01111001 121
#define M_01111010 122
#define M_01111011 123
#define M_01111100 124
#define M_01111101 125
#define M_01111110 126
#define M_01111111 127
#define M_10000000 128
#define M_10000001 129
#define M_10000010 130
#define M_10000011 131
#define M_10000100 132
#define M_10000101 133
#define M_10000110 134
#define M_10000111 135
#define M_10001000 136
#define M_10001001 137
#define M_10001010 138
#define M_10001011 139
#define M_10001100 140
#define M_10001101 141
#define M_10001110 142
#define M_10001111 143
#define M_10010000 144
#define M_10010001 145
#define M_10010010 146
#define M_10010011 147
#define M_10010100 148
#define M_10010101 149
#define M_10010110 150
#define M_10010111 151
#define M_10011000 152
#define M_10011001 153
#define M_10011010 154
#define M_10011011 155
#define M_10011100 156
#define M_10011101 157
#define M_10011110 158
#define M_10011111 159
#define M_10100000 160
#define M_10100001 161
#define M_10100010 162
#define M_10100011 163
#define M_10100100 164
#define M_10100101 165
#define M_10100110 166
#define M_10100111 167
#define M_10101000 168
#define M_10101001 169
#define M_10101010 170
#define M_10101011 171
#define M_10101100 172
#define M_10101101 173
#define M_10101110 174
#define M_10101111 175
#define M_10110000 176
#define M_10110001 177
#define M_10110010 178
#define M_10110011 179
#define M_10110100 180
#define M_10110101 181
#define M_10110110 182
#define M_10110111 183
#define M_10111000 184
#define M_10111001 185
#define M_10111010 186
#define M_10111011 187
#define M_10111100 188
#define M_10111101 189
#define M_10111110 190
#define M_10111111 191
#define M_11000000 192
#define M_11000001 193
#define M_11000010 194
#define M_11000011 195
#define M_11000100 196
#define M_11000101 197
#define M_11000110 198
#define M_11000111 199
#define M_11001000 200
#define M_11001001 201
#define M_11001010 202
#define M_11001011 203
#define M_11001100 204
#define M_11001101 205
#define M_11001110 206
#define M_11001111 207
#define M_11010000 208
#define M_11010001 209
#define M_11010010 210
#define M_11010011 211
#define M_11010100 212
#define M_11010101 213
#define M_11010110 214
#define M_11010111 215
#define M_11011000 216
#define M_11011001 217
#define M_11011010 218
#define M_11011011 219
#define M_11011100 220
#define M_11011101 221
#define M_11011110 222
#define M_11011111 223
#define M_11100000 224
#define M_11100001 225
#define M_11100010 226
#define M_11100011 227
#define M_11100100 228
#define M_11100101 229
#define M_11100110 230
#define M_11100111 231
#define M_11101000 232
#define M_11101001 233
#define M_11101010 234
#define M_11101011 235
#define M_11101100 236
#define M_11101101 237
#define M_11101110 238
#define M_11101111 239
#define M_11110000 240
#define M_11110001 241
#define M_11110010 242
#define M_11110011 243
#define M_11110100 244
#define M_11110101 245
#define M_11110110 246
#define M_11110111 247
#define M_11111000 248
#define M_11111001 249
#define M_11111010 250
#define M_11111011 251
#define M_11111100 252
#define M_11111101 253
#define M_11111110 254
#define M_11111111 255

#define M_0000_0000 0
#define M_0000_0001 1
#define M_0000_0010 2
#define M_0000_0011 3
#define M_0000_0100 4
#define M_0000_0101 5
#define M_0000_0110 6
#define M_0000_0111 7
#define M_0000_1000 8
#define M_0000_1001 9
#define M_0000_1010 10
#define M_0000_1011 11
#define M_0000_1100 12
#define M_0000_1101 13
#define M_0000_1110 14
#define M_0000_1111 15
#define M_0001_0000 16
#define M_0001_0001 17
#define M_0001_0010 18
#define M_0001_0011 19
#define M_0001_0100 20
#define M_0001_0101 21
#define M_0001_0110 22
#define M_0001_0111 23
#define M_0001_1000 24
#define M_0001_1001 25
#define M_0001_1010 26
#define M_0001_1011 27
#define M_0001_1100 28
#define M_0001_1101 29
#define M_0001_1110 30
#define M_0001_1111 31
#define M_0010_0000 32
#define M_0010_0001 33
#define M_0010_0010 34
#define M_0010_0011 35
#define M_0010_0100 36
#define M_0010_0101 37
#define M_0010_0110 38
#define M_0010_0111 39
#define M_0010_1000 40
#define M_0010_1001 41
#define M_0010_1010 42
#define M_0010_1011 43
#define M_0010_1100 44
#define M_0010_1101 45
#define M_0010_1110 46
#define M_0010_1111 47
#define M_0011_0000 48
#define M_0011_0001 49
#define M_0011_0010 50
#define M_0011_0011 51
#define M_0011_0100 52
#define M_0011_0101 53
#define M_0011_0110 54
#define M_0011_0111 55
#define M_0011_1000 56
#define M_0011_1001 57
#define M_0011_1010 58
#define M_0011_1011 59
#define M_0011_1100 60
#define M_0011_1101 61
#define M_0011_1110 62
#define M_0011_1111 63
#define M_0100_0000 64
#define M_0100_0001 65
#define M_0100_0010 66
#define M_0100_0011 67
#define M_0100_0100 68
#define M_0100_0101 69
#define M_0100_0110 70
#define M_0100_0111 71
#define M_0100_1000 72
#define M_0100_1001 73
#define M_0100_1010 74
#define M_0100_1011 75
#define M_0100_1100 76
#define M_0100_1101 77
#define M_0100_1110 78
#define M_0100_1111 79
#define M_0101_0000 80
#define M_0101_0001 81
#define M_0101_0010 82
#define M_0101_0011 83
#define M_0101_0100 84
#define M_0101_0101 85
#define M_0101_0110 86
#define M_0101_0111 87
#define M_0101_1000 88
#define M_0101_1001 89
#define M_0101_1010 90
#define M_0101_1011 91
#define M_0101_1100 92
#define M_0101_1101 93
#define M_0101_1110 94
#define M_0101_1111 95
#define M_0110_0000 96
#define M_0110_0001 97
#define M_0110_0010 98
#define M_0110_0011 99
#define M_0110_0100 100
#define M_0110_0101 101
#define M_0110_0110 102
#define M_0110_0111 103
#define M_0110_1000 104
#define M_0110_1001 105
#define M_0110_1010 106
#define M_0110_1011 107
#define M_0110_1100 108
#define M_0110_1101 109
#define M_0110_1110 110
#define M_0110_1111 111
#define M_0111_0000 112
#define M_0111_0001 113
#define M_0111_0010 114
#define M_0111_0011 115
#define M_0111_0100 116
#define M_0111_0101 117
#define M_0111_0110 118
#define M_0111_0111 119
#define M_0111_1000 120
#define M_0111_1001 121
#define M_0111_1010 122
#define M_0111_1011 123
#define M_0111_1100 124
#define M_0111_1101 125
#define M_0111_1110 126
#define M_0111_1111 127
#define M_1000_0000 128
#define M_1000_0001 129
#define M_1000_0010 130
#define M_1000_0011 131
#define M_1000_0100 132
#define M_1000_0101 133
#define M_1000_0110 134
#define M_1000_0111 135
#define M_1000_1000 136
#define M_1000_1001 137
#define M_1000_1010 138
#define M_1000_1011 139
#define M_1000_1100 140
#define M_1000_1101 141
#define M_1000_1110 142
#define M_1000_1111 143
#define M_1001_0000 144
#define M_1001_0001 145
#define M_1001_0010 146
#define M_1001_0011 147
#define M_1001_0100 148
#define M_1001_0101 149
#define M_1001_0110 150
#define M_1001_0111 151
#define M_1001_1000 152
#define M_1001_1001 153
#define M_1001_1010 154
#define M_1001_1011 155
#define M_1001_1100 156
#define M_1001_1101 157
#define M_1001_1110 158
#define M_1001_1111 159
#define M_1010_0000 160
#define M_1010_0001 161
#define M_1010_0010 162
#define M_1010_0011 163
#define M_1010_0100 164
#define M_1010_0101 165
#define M_1010_0110 166
#define M_1010_0111 167
#define M_1010_1000 168
#define M_1010_1001 169
#define M_1010_1010 170
#define M_1010_1011 171
#define M_1010_1100 172
#define M_1010_1101 173
#define M_1010_1110 174
#define M_1010_1111 175
#define M_1011_0000 176
#define M_1011_0001 177
#define M_1011_0010 178
#define M_1011_0011 179
#define M_1011_0100 180
#define M_1011_0101 181
#define M_1011_0110 182
#define M_1011_0111 183
#define M_1011_1000 184
#define M_1011_1001 185
#define M_1011_1010 186
#define M_1011_1011 187
#define M_1011_1100 188
#define M_1011_1101 189
#define M_1011_1110 190
#define M_1011_1111 191
#define M_1100_0000 192
#define M_1100_0001 193
#define M_1100_0010 194
#define M_1100_0011 195
#define M_1100_0100 196
#define M_1100_0101 197
#define M_1100_0110 198
#define M_1100_0111 199
#define M_1100_1000 200
#define M_1100_1001 201
#define M_1100_1010 202
#define M_1100_1011 203
#define M_1100_1100 204
#define M_1100_1101 205
#define M_1100_1110 206
#define M_1100_1111 207
#define M_1101_0000 208
#define M_1101_0001 209
#define M_1101_0010 210
#define M_1101_0011 211
#define M_1101_0100 212
#define M_1101_0101 213
#define M_1101_0110 214
#define M_1101_0111 215
#define M_1101_1000 216
#define M_1101_1001 217
#define M_1101_1010 218
#define M_1101_1011 219
#define M_1101_1100 220
#define M_1101_1101 221
#define M_1101_1110 222
#define M_1101_1111 223
#define M_1110_0000 224
#define M_1110_0001 225
#define M_1110_0010 226
#define M_1110_0011 227
#define M_1110_0100 228
#define M_1110_0101 229
#define M_1110_0110 230
#define M_1110_0111 231
#define M_1110_1000 232
#define M_1110_1001 233
#define M_1110_1010 234
#define M_1110_1011 235
#define M_1110_1100 236
#define M_1110_1101 237
#define M_1110_1110 238
#define M_1110_1111 239
#define M_1111_0000 240
#define M_1111_0001 241
#define M_1111_0010 242
#define M_1111_0011 243
#define M_1111_0100 244
#define M_1111_0101 245
#define M_1111_0110 246
#define M_1111_0111 247
#define M_1111_1000 248
#define M_1111_1001 249
#define M_1111_1010 250
#define M_1111_1011 251
#define M_1111_1100 252
#define M_1111_1101 253
#define M_1111_1110 254
#define M_1111_1111 255

#endif
