1 38 39 40 package com.sun.xml.fastinfoset.util; 41 42 import org.jvnet.fastinfoset.FastInfosetException; 43 import com.sun.xml.fastinfoset.CommonResourceBundle; 44 45 public class CharArrayArray extends ValueArray { 46 47 private CharArray[] _array; 48 49 private CharArrayArray _readOnlyArray; 50 51 public CharArrayArray(int initialCapacity, int maximumCapacity) { 52 _array = new CharArray[initialCapacity]; 53 _maximumCapacity = maximumCapacity; 54 } 55 56 public CharArrayArray() { 57 this(DEFAULT_CAPACITY, MAXIMUM_CAPACITY); 58 } 59 60 public final void clear() { 61 for (int i = 0; i < _size; i++) { 62 _array[i] = null; 63 } 64 _size = 0; 65 } 66 67 public final CharArray[] getArray() { 68 return _array; 69 } 70 71 public final void setReadOnlyArray(ValueArray readOnlyArray, boolean clear) { 72 if (!(readOnlyArray instanceof CharArrayArray)) { 73 throw new IllegalArgumentException (CommonResourceBundle.getInstance().getString("message.illegalClass", new Object []{readOnlyArray})); 74 } 75 76 setReadOnlyArray((CharArrayArray)readOnlyArray, clear); 77 } 78 79 public final void setReadOnlyArray(CharArrayArray readOnlyArray, boolean clear) { 80 if (readOnlyArray != null) { 81 _readOnlyArray = readOnlyArray; 82 _readOnlyArraySize = readOnlyArray.getSize(); 83 84 if (clear) { 85 clear(); 86 } 87 } 88 } 89 90 public final CharArray get(int i) { 91 if (_readOnlyArray == null) { 92 return _array[i]; 93 } else { 94 if (i < _readOnlyArraySize) { 95 return _readOnlyArray.get(i); 96 } else { 97 return _array[i - _readOnlyArraySize]; 98 } 99 } 100 } 101 102 public final void add(CharArray s) { 103 if (_size == _array.length) { 104 resize(); 105 } 106 107 _array[_size++] = s; 108 } 109 110 protected final void resize() { 111 if (_size == _maximumCapacity) { 112 throw new ValueArrayResourceException(CommonResourceBundle.getInstance().getString("message.arrayMaxCapacity")); 113 } 114 115 int newSize = _size * 3 / 2 + 1; 116 if (newSize > _maximumCapacity) { 117 newSize = _maximumCapacity; 118 } 119 120 final CharArray[] newArray = new CharArray[newSize]; 121 System.arraycopy(_array, 0, newArray, 0, _size); 122 _array = newArray; 123 } 124 } 125 | Popular Tags |