Standardize and update all copyright statements to name "ZXing authors" as suggested...
[zxing.git] / cpp / core / src / qrcode / decoder / ErrorCorrectionLevel.h
1 #ifndef __ERROR_CORRECTION_LEVEL_H__
2 #define __ERROR_CORRECTION_LEVEL_H__
3
4 /*
5  *  ErrorCorrectionLevel.h
6  *  zxing
7  *
8  *  Created by Christian Brunschen on 15/05/2008.
9  *  Copyright 2008 ZXing authors All rights reserved.
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  */
23
24 #include "../../ReaderException.h"
25
26 namespace qrcode {
27   namespace decoder {
28     using namespace std;
29     
30     class ErrorCorrectionLevel { 
31     private:
32       int ordinal_;
33       ErrorCorrectionLevel(int ordinal) : ordinal_(ordinal) { }
34       static ErrorCorrectionLevel *FOR_BITS[];
35       static int N_LEVELS;
36     public:
37       static ErrorCorrectionLevel L;
38       static ErrorCorrectionLevel M;
39       static ErrorCorrectionLevel Q;
40       static ErrorCorrectionLevel H;
41       int ordinal() { return ordinal_; }
42       static ErrorCorrectionLevel& forBits(int bits) {
43         if (bits < 0 || bits >= N_LEVELS) {
44           throw new ReaderException("Ellegal error correction level bits");
45         }
46         return *FOR_BITS[bits];
47       }
48     };
49   }
50 }
51
52 #endif // __ERROR_CORRECTION_LEVEL_H__