1 51 package org.apache.fop.layout.hyphenation; 52 53 import java.io.Serializable ; 54 55 61 public class CharVector implements Cloneable , Serializable { 62 63 66 private static final int DEFAULT_BLOCK_SIZE = 2048; 67 private int BLOCK_SIZE; 68 69 72 private char[] array; 73 74 77 private int n; 78 79 public CharVector() { 80 this(DEFAULT_BLOCK_SIZE); 81 } 82 83 public CharVector(int capacity) { 84 if (capacity > 0) 85 BLOCK_SIZE = capacity; 86 else 87 BLOCK_SIZE = DEFAULT_BLOCK_SIZE; 88 array = new char[BLOCK_SIZE]; 89 n = 0; 90 } 91 92 public CharVector(char[] a) { 93 BLOCK_SIZE = DEFAULT_BLOCK_SIZE; 94 array = a; 95 n = a.length; 96 } 97 98 public CharVector(char[] a, int capacity) { 99 if (capacity > 0) 100 BLOCK_SIZE = capacity; 101 else 102 BLOCK_SIZE = DEFAULT_BLOCK_SIZE; 103 array = a; 104 n = a.length; 105 } 106 107 110 public void clear() { 111 n = 0; 112 } 113 114 public Object clone() { 115 CharVector cv = new CharVector((char[])array.clone(), BLOCK_SIZE); 116 cv.n = this.n; 117 return cv; 118 } 119 120 public char[] getArray() { 121 return array; 122 } 123 124 127 public int length() { 128 return n; 129 } 130 131 134 public int capacity() { 135 return array.length; 136 } 137 138 public void put(int index, char val) { 139 array[index] = val; 140 } 141 142 public char get(int index) { 143 return array[index]; 144 } 145 146 public int alloc(int size) { 147 int index = n; 148 int len = array.length; 149 if (n + size >= len) { 150 char[] aux = new char[len + BLOCK_SIZE]; 151 System.arraycopy(array, 0, aux, 0, len); 152 array = aux; 153 } 154 n += size; 155 return index; 156 } 157 158 public void trimToSize() { 159 if (n < array.length) { 160 char[] aux = new char[n]; 161 System.arraycopy(array, 0, aux, 0, n); 162 array = aux; 163 } 164 } 165 166 } 167 | Popular Tags |