/*
* Copyright © 2008-2011 Rebecca G. Bettencourt / Kreative Software
* <p>
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* <a href="http://www.mozilla.org/MPL/">http://www.mozilla.org/MPL/</a>
* <p>
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
* <p>
* Alternatively, the contents of this file may be used under the terms
* of the GNU Lesser General Public License (the "LGPL License"), in which
* case the provisions of LGPL License are applicable instead of those
* above. If you wish to allow use of your version of this file only
* under the terms of the LGPL License and not to allow others to use
* your version of this file under the MPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the LGPL License. If you do not delete
* the provisions above, a recipient may use your version of this file
* under either the MPL or the LGPL License.
* @since KSFL 1.0
* @author Rebecca G. Bettencourt, Kreative Software
*/
package com.kreative.cff;
public enum FieldType {
FILLER (new char[]{'F','f'}, (byte)0x00),
SIZE_WITHOUT_HEADER (new char[]{'S','s'}, (byte)0x01),
SIZE_WITH_HEADER (new char[]{'Z','z'}, (byte)0x02),
CHUNK_COUNT (new char[]{'C','c'}, (byte)0x03),
INTEGER_TYPE (new char[]{'M','m'}, (byte)0x04),
CHARACTER_TYPE (new char[]{'T','t'}, (byte)0x05),
ID_NUMBER (new char[]{'N','n','I','i'}, (byte)0x06),
CHECKSUM (new char[]{'H','h'}, (byte)0x0E),
DATA (new char[]{'d','D'}, (byte)0x0F);
private char[] letters;
private byte bitPattern;
private FieldType(char[] letters, byte bitPattern) {
this.letters = letters;
this.bitPattern = bitPattern;
}
public static FieldType forChar(char letter) {
for (FieldType ft : FieldType.values()) {
for (char ch : ft.letters) {
if (ch == letter) return ft;
}
}
return null;
}
public static FieldType forBitPattern(byte bitPattern) {
for (FieldType ft : FieldType.values()) {
if ((ft.bitPattern & 0x0F) == (bitPattern & 0x0F)) return ft;
}
return null;
}
public char[] allCharRepresentations() {
return letters;
}
public char canonicalCharRepresentation() {
return letters[0];
}
public byte bitPatternRepresentation() {
return bitPattern;
}
}