1 16 17 package com.lowagie.text.pdf.hyphenation; 18 19 import java.io.Serializable ; 20 21 27 public class CharVector implements Cloneable , Serializable { 28 29 private static final long serialVersionUID = -4875768298308363544L; 30 33 private static final int DEFAULT_BLOCK_SIZE = 2048; 34 private int blockSize; 35 36 39 private char[] array; 40 41 44 private int n; 45 46 public CharVector() { 47 this(DEFAULT_BLOCK_SIZE); 48 } 49 50 public CharVector(int capacity) { 51 if (capacity > 0) { 52 blockSize = capacity; 53 } else { 54 blockSize = DEFAULT_BLOCK_SIZE; 55 } 56 array = new char[blockSize]; 57 n = 0; 58 } 59 60 public CharVector(char[] a) { 61 blockSize = DEFAULT_BLOCK_SIZE; 62 array = a; 63 n = a.length; 64 } 65 66 public CharVector(char[] a, int capacity) { 67 if (capacity > 0) { 68 blockSize = capacity; 69 } else { 70 blockSize = DEFAULT_BLOCK_SIZE; 71 } 72 array = a; 73 n = a.length; 74 } 75 76 79 public void clear() { 80 n = 0; 81 } 82 83 public Object clone() { 84 CharVector cv = new CharVector((char[])array.clone(), blockSize); 85 cv.n = this.n; 86 return cv; 87 } 88 89 public char[] getArray() { 90 return array; 91 } 92 93 96 public int length() { 97 return n; 98 } 99 100 103 public int capacity() { 104 return array.length; 105 } 106 107 public void put(int index, char val) { 108 array[index] = val; 109 } 110 111 public char get(int index) { 112 return array[index]; 113 } 114 115 public int alloc(int size) { 116 int index = n; 117 int len = array.length; 118 if (n + size >= len) { 119 char[] aux = new char[len + blockSize]; 120 System.arraycopy(array, 0, aux, 0, len); 121 array = aux; 122 } 123 n += size; 124 return index; 125 } 126 127 public void trimToSize() { 128 if (n < array.length) { 129 char[] aux = new char[n]; 130 System.arraycopy(array, 0, aux, 0, n); 131 array = aux; 132 } 133 } 134 135 } 136 | Popular Tags |