package org.quaere;
public class Primitives {
static int BYTE_LOWER_BOUND = 0;
static int BYTE_UPPER_BOUND = 255;
static int CHARACTER_LOWER_BOUND = 0;
static int CHARACTER_UPPER_BOUND = 255;
static int SHORT_LOWER_BOUND = -1000;
static int SHORT_UPPER_BOUND = 1000;
static int INTEGER_LOWER_BOUND = -1000;
static int INTEGER_UPPER_BOUND = 1000;
static int LONG_LOWER_BOUND = -1000;
static int LONG_UPPER_BOUND = 1000;
//-------------------------------------
// Member variables
//-------------------------------------
static Byte[] mBytes = createBytes();
static Character[] mCharacters = createCharacters();
static Short[] mShorts = createShorts();
static Integer[] mIntegers = createIntegers();
static Long[] mLongs = createLongs();
//-------------------------------------
// Getting primitive values
//-------------------------------------
public static Boolean getBoolean(boolean pValue) {
return
pValue ?
Boolean.TRUE :
Boolean.FALSE;
}
//-------------------------------------
public static Byte getByte(byte pValue) {
if (pValue >= BYTE_LOWER_BOUND &&
pValue <= BYTE_UPPER_BOUND) {
return mBytes[((int) pValue) - BYTE_LOWER_BOUND];
} else {
return pValue;
}
}
//-------------------------------------
public static Character getCharacter(char pValue) {
if (pValue >= CHARACTER_LOWER_BOUND &&
pValue <= CHARACTER_UPPER_BOUND) {
return mCharacters[((int) pValue) - CHARACTER_LOWER_BOUND];
} else {
return pValue;
}
}
//-------------------------------------
public static Short getShort(short pValue) {
if (pValue >= SHORT_LOWER_BOUND &&
pValue <= SHORT_UPPER_BOUND) {
return mShorts[((int) pValue) - SHORT_LOWER_BOUND];
} else {
return pValue;
}
}
//-------------------------------------
public static Integer getInteger(int pValue) {
if (pValue >= INTEGER_LOWER_BOUND &&
pValue <= INTEGER_UPPER_BOUND) {
return mIntegers[((int) pValue) - INTEGER_LOWER_BOUND];
} else {
return pValue;
}
}
//-------------------------------------
public static Long getLong(long pValue) {
if (pValue >= LONG_LOWER_BOUND &&
pValue <= LONG_UPPER_BOUND) {
return mLongs[((int) pValue) - LONG_LOWER_BOUND];
} else {
return pValue;
}
}
//-------------------------------------
public static Float getFloat(float pValue) {
return pValue;
}
//-------------------------------------
public static Double getDouble(double pValue) {
return pValue;
}
public static Class getPrimitiveObjectClass(Class pClass) {
if (pClass == Boolean.TYPE) {
return Boolean.class;
} else if (pClass == Byte.TYPE) {
return Byte.class;
} else if (pClass == Short.TYPE) {
return Short.class;
} else if (pClass == Character.TYPE) {
return Character.class;
} else if (pClass == Integer.TYPE) {
return Integer.class;
} else if (pClass == Long.TYPE) {
return Long.class;
} else if (pClass == Float.TYPE) {
return Float.class;
} else if (pClass == Double.TYPE) {
return Double.class;
} else {
return pClass;
}
}
//-------------------------------------
// Initializing the cached values
//-------------------------------------
static Byte[] createBytes() {
int len = BYTE_UPPER_BOUND - BYTE_LOWER_BOUND + 1;
Byte[] ret = new Byte[len];
byte val = (byte) BYTE_LOWER_BOUND;
for (int i = 0; i < len; i++, val++) {
ret[i] = new Byte(val);
}
return ret;
}
//-------------------------------------
static Character[] createCharacters() {
int len = CHARACTER_UPPER_BOUND - CHARACTER_LOWER_BOUND + 1;
Character[] ret = new Character[len];
char val = (char) CHARACTER_LOWER_BOUND;
for (int i = 0; i < len; i++, val++) {
ret[i] = new Character(val);
}
return ret;
}
//-------------------------------------
static Short[] createShorts() {
int len = SHORT_UPPER_BOUND - SHORT_LOWER_BOUND + 1;
Short[] ret = new Short[len];
short val = (short) SHORT_LOWER_BOUND;
for (int i = 0; i < len; i++, val++) {
ret[i] = new Short(val);
}
return ret;
}
//-------------------------------------
static Integer[] createIntegers() {
int len = INTEGER_UPPER_BOUND - INTEGER_LOWER_BOUND + 1;
Integer[] ret = new Integer[len];
int val = (int) INTEGER_LOWER_BOUND;
for (int i = 0; i < len; i++, val++) {
ret[i] = new Integer(val);
}
return ret;
}
//-------------------------------------
static Long[] createLongs() {
int len = LONG_UPPER_BOUND - LONG_LOWER_BOUND + 1;
Long[] ret = new Long[len];
long val = (long) LONG_LOWER_BOUND;
for (int i = 0; i < len; i++, val++) {
ret[i] = new Long(val);
}
return ret;
}
}