⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mnemonic.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
字号:
// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.util.HashMap;/** * A utility class for converting between numeric codes and mnemonics * for those codes.  Mnemonics are case insensitive. * * @author Brian Wellington */class Mnemonic {private static Integer cachedInts[] = new Integer[64];static {	for (int i = 0; i < cachedInts.length; i++) {		cachedInts[i] = new Integer(i);	}}/* Strings are case-sensitive. */static final int CASE_SENSITIVE = 1;/* Strings will be stored/searched for in uppercase. */static final int CASE_UPPER = 2;/* Strings will be stored/searched for in lowercase. */static final int CASE_LOWER = 3;private HashMap strings;private HashMap values;private String description;private int wordcase;private String prefix;private int max;private boolean numericok;/** * Creates a new Mnemonic table. * @param description A short description of the mnemonic to use when * @param wordcase Whether to convert strings into uppercase, lowercase, * or leave them unchanged. * throwing exceptions. */publicMnemonic(String description, int wordcase) {	this.description = description;	this.wordcase = wordcase;	strings = new HashMap();	values = new HashMap();	max = Integer.MAX_VALUE;}/** Sets the maximum numeric value */public voidsetMaximum(int max) {	this.max = max;}/** * Sets the prefix to use when converting to and from values that don't * have mnemonics. */public voidsetPrefix(String prefix) {	this.prefix = sanitize(prefix);}/** * Sets whether numeric values stored in strings are acceptable. */public voidsetNumericAllowed(boolean numeric) {	this.numericok = numeric;}/** * Converts an int into a possibly cached Integer. */public static IntegertoInteger(int val) {	if (val >= 0 && val < cachedInts.length)		return (cachedInts[val]);	return new Integer(val);}       /** * Checks that a numeric value is within the range [0..max] */public voidcheck(int val) {	if (val < 0 || val > max) {		throw new IllegalArgumentException(description + " " + val +						   "is out of range");	}}/* Converts a String to the correct case. */private Stringsanitize(String str) {	if (wordcase == CASE_UPPER)		return str.toUpperCase();	else if (wordcase == CASE_LOWER)		return str.toLowerCase();	return str;}private intparseNumeric(String s) {	try {		int val = Integer.parseInt(s);		if (val >= 0 && val <= max)			return val;	}	catch (NumberFormatException e) {	}	return -1;}/** * Defines the text representation of a numeric value. * @param val The numeric value * @param string The text string */public voidadd(int val, String str) {	check(val);	Integer value = toInteger(val);	str = sanitize(str);	strings.put(str, value);	values.put(value, str);}/** * Defines an additional text representation of a numeric value.  This will * be used by getValue(), but not getText(). * @param val The numeric value * @param string The text string */public voidaddAlias(int val, String str) {	check(val);	Integer value = toInteger(val);	str = sanitize(str);	strings.put(str, value);}/** * Copies all mnemonics from one table into another. * @param val The numeric value * @param string The text string * @throws IllegalArgumentException The wordcases of the Mnemonics do not * match. */public voidaddAll(Mnemonic source) {	if (wordcase != source.wordcase)		throw new IllegalArgumentException(source.description +						   ": wordcases do not match");	strings.putAll(source.strings);	values.putAll(source.values);}/** * Gets the text mnemonic corresponding to a numeric value. * @param val The numeric value * @return The corresponding text mnemonic. */public StringgetText(int val) {	check(val);	String str = (String) values.get(toInteger(val));	if (str != null)		return str;	str = Integer.toString(val);	if (prefix != null)		return prefix + str;	return str;}/** * Gets the numeric value corresponding to a text mnemonic. * @param str The text mnemonic * @return The corresponding numeric value, or -1 if there is none */public intgetValue(String str) {	str = sanitize(str);	Integer value = (Integer) strings.get(str);	if (value != null) {		return value.intValue();	}	if (prefix != null) {		if (str.startsWith(prefix)) {			int val = parseNumeric(str.substring(prefix.length()));			if (val >= 0) {				return val;			}		}	}	if (numericok) {		return parseNumeric(str);	}	return -1;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -