diff --git a/src/java/com/samskivert/util/ByteEnum.java b/src/java/com/samskivert/util/ByteEnum.java new file mode 100644 index 00000000..33385ef3 --- /dev/null +++ b/src/java/com/samskivert/util/ByteEnum.java @@ -0,0 +1,33 @@ +// +// $Id$ +// +// samskivert library - useful routines for java programs +// Copyright (C) 2001-2008 Michael Bayne +// +// This library is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +package com.samskivert.util; + +/** + * An interface implemented by enums that can map themselves to a byte. See {@link ByteEnumUtil} + * for mapping back from a byte to an enum. + */ +public interface ByteEnum +{ + /** + * Returns the byte value to which to map this enum value. + */ + public byte toByte (); +} diff --git a/src/java/com/samskivert/util/ByteEnumUtil.java b/src/java/com/samskivert/util/ByteEnumUtil.java new file mode 100644 index 00000000..6ae34a0a --- /dev/null +++ b/src/java/com/samskivert/util/ByteEnumUtil.java @@ -0,0 +1,45 @@ +// +// $Id$ +// +// samskivert library - useful routines for java programs +// Copyright (C) 2001-2008 Michael Bayne +// +// This library is free software; you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as published +// by the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +package com.samskivert.util; + +import java.util.EnumSet; + +/** + * {@link ByteEnum} utility methods. + */ +public class ByteEnumUtil +{ + /** + * Returns the enum value with the specified code in the supplied enum class. + * + * @exception IllegalArgumentException thrown if the enum lacks a value that maps to the + * supplied code. + */ + public static & ByteEnum> E fromByte (Class eclass, byte code) + { + for (E value : EnumSet.allOf(eclass)) { + if (value.toByte() == code) { + return value; + } + } + throw new IllegalArgumentException(eclass + " has no value with code " + code); + } +}