/* ** Java native interface to the Windows Registry API. ** ** Authored by Timothy Gerard Endres ** <mailto:time@gjt.org> <http://www.trustice.com> ** ** This work has been placed into the public domain. ** You may use this work in any way and for any purpose you wish. ** ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR ** REDISTRIBUTION OF THIS SOFTWARE. ** */ package com.newatlanta.jni.registry; import java.text.FieldPosition; import java.text.Format; import java.text.ParseException; import java.text.ParsePosition; /** * The HexNumberFormat class implements the code necessary to format and parse * Hexidecimal integer numbers. * * @version 3.1.3 * * @author Timothy Gerard Endres, <a href="mailto:time@ice.com">time@ice.com</a>. * @see java.text.NumberFormat */ public class HexNumberFormat extends Format { private static final long serialVersionUID = 1L; static public final String RCS_ID = "$Id: HexNumberFormat.java,v 1.1 2008/05/09 09:49:28 openbd Exp $"; static public final String RCS_REV = "$Revision: 1.1 $"; private static char[] lowChars; private static char[] uprChars; private int count; private static char[] hexChars; static { HexNumberFormat.lowChars = new char[20]; HexNumberFormat.uprChars = new char[20]; HexNumberFormat.uprChars[0] = HexNumberFormat.lowChars[0] = '0'; HexNumberFormat.uprChars[1] = HexNumberFormat.lowChars[1] = '1'; HexNumberFormat.uprChars[2] = HexNumberFormat.lowChars[2] = '2'; HexNumberFormat.uprChars[3] = HexNumberFormat.lowChars[3] = '3'; HexNumberFormat.uprChars[4] = HexNumberFormat.lowChars[4] = '4'; HexNumberFormat.uprChars[5] = HexNumberFormat.lowChars[5] = '5'; HexNumberFormat.uprChars[6] = HexNumberFormat.lowChars[6] = '6'; HexNumberFormat.uprChars[7] = HexNumberFormat.lowChars[7] = '7'; HexNumberFormat.uprChars[8] = HexNumberFormat.lowChars[8] = '8'; HexNumberFormat.uprChars[9] = HexNumberFormat.lowChars[9] = '9'; HexNumberFormat.uprChars[10] = 'A'; HexNumberFormat.lowChars[10] = 'a'; HexNumberFormat.uprChars[11] = 'B'; HexNumberFormat.lowChars[11] = 'b'; HexNumberFormat.uprChars[12] = 'C'; HexNumberFormat.lowChars[12] = 'c'; HexNumberFormat.uprChars[13] = 'D'; HexNumberFormat.lowChars[13] = 'd'; HexNumberFormat.uprChars[14] = 'E'; HexNumberFormat.lowChars[14] = 'e'; HexNumberFormat.uprChars[15] = 'F'; HexNumberFormat.lowChars[15] = 'f'; } static public final HexNumberFormat getInstance() { return new HexNumberFormat("XXXXXXXX"); } public HexNumberFormat(String pattern) { super(); this.count = pattern.length(); hexChars = (pattern.charAt(0) == 'X' ? HexNumberFormat.uprChars : HexNumberFormat.lowChars); } public String format(int hexNum) throws IllegalArgumentException { FieldPosition pos = new FieldPosition(0); StringBuffer hexBuf = new StringBuffer(8); this.format(new Integer(hexNum), hexBuf, pos); return hexBuf.toString(); } public StringBuffer format(Object hexInt, StringBuffer appendTo, FieldPosition fieldPos) throws IllegalArgumentException { char[] hexBuf = new char[16]; int hexNum = ((Integer) hexInt).intValue(); for (int i = 7; i >= 0; --i) { hexBuf[i] = hexChars[(hexNum & 0x0F)]; hexNum = hexNum >> 4; } for (int i = (8 - this.count); i < 8; ++i) { appendTo.append(hexBuf[i]); } return appendTo; } public int parse(String source) throws ParseException { throw new ParseException("unimplemented!", 0); } public Object parseObject(String source, ParsePosition pos) { return null; } }