package org.apache.haox.asn1; public enum TagClass { UNKNOWN(-1), UNIVERSAL(0x00), APPLICATION(0x40), CONTEXT_SPECIFIC(0x80), PRIVATE(0xC0); private int value; private TagClass(int value) { this.value = value; } public int getValue() { return value; } public boolean isUniversal() { return this == UNIVERSAL; } public boolean isAppSpecific() { return this == APPLICATION; } public boolean isContextSpecific() { return this == CONTEXT_SPECIFIC; } public boolean isTagged() { return this == APPLICATION || this == CONTEXT_SPECIFIC; } public static TagClass fromValue(int value) { // Optimized by Emmanuel switch (value) { case 0x00: return TagClass.UNIVERSAL; case 0x40: return TagClass.APPLICATION; case 0x80: return TagClass.CONTEXT_SPECIFIC; case 0xC0: return TagClass.PRIVATE; default: return TagClass.UNKNOWN; } } public static TagClass fromTagFlags(int tag) { return fromValue(tag & 0xC0); } }