01: /*
02: * $Id: Register.java,v 1.8 2002/09/16 08:05:02 jkl Exp $
03: *
04: * Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
05: *
06: * Use is subject to license terms, as defined in
07: * Anvil Sofware License, Version 1.1. See LICENSE
08: * file, or http://njet.org/license-1.1.txt
09: */
10: package anvil.core;
11:
12: import java.util.Arrays;
13: import java.util.Hashtable;
14: import java.util.Comparator;
15: import java.util.TreeMap;
16:
17: /**
18: * class Register
19: *
20: * @author Jani Lehtimäki
21: */
22: public class Register {
23:
24: private static String[] _byindex = new String[16];
25: private static int _index = 0;
26: private static TreeMap _bysymbol = new TreeMap();
27:
28: public static synchronized int register(String symbol) {
29: Integer i = (Integer) _bysymbol.get(symbol);
30: if (i != null) {
31: return i.intValue();
32: }
33:
34: int index = _index++;
35:
36: String[] byindex = _byindex;
37: if (index >= byindex.length) {
38: byindex = new String[index * 2];
39: System.arraycopy(_byindex, 0, byindex, 0, index);
40: _byindex = byindex;
41: }
42: byindex[index] = symbol;
43:
44: _bysymbol.put(symbol, ObjectPool.createInteger(index));
45: return index;
46: }
47:
48: public static synchronized String getNameOf(int index) {
49: String[] byindex = _byindex;
50: if (0 <= index && index < _index) {
51: return byindex[index];
52: }
53: return "unknown$" + index;
54: }
55:
56: public static synchronized Any getAnyNameOf(int index) {
57: String[] byindex = _byindex;
58: if (0 <= index && index < _index) {
59: return Any.create(byindex[index]);
60: }
61: return Any.create("unknown$" + index);
62: }
63:
64: }
|