@Override public Name fromChars(char[] cs, int start, int len) { int nc = this.nc; byte[] bytes = this.bytes; while (nc + len * 3 >= bytes.length) { // System.err.println("doubling name buffer of length " + names.length + // " to fit " + len + " chars");//DEBUG byte[] newnames = new byte[bytes.length * 2]; System.arraycopy(bytes, 0, newnames, 0, bytes.length); bytes = this.bytes = newnames; } int nbytes = Convert.chars2utf(cs, start, bytes, nc, len) - nc; int h = hashValue(bytes, nc, nbytes) & hashMask; NameImpl n = hashes[h]; while (n != null && (n.getByteLength() != nbytes || !equals(bytes, n.index, bytes, nc, nbytes))) { n = n.next; } if (n == null) { n = new NameImpl(this); n.index = nc; n.length = nbytes; n.next = hashes[h]; hashes[h] = n; this.nc = nc + nbytes; if (nbytes == 0) { this.nc++; } } return n; }
@Override public Name fromUtf(byte[] cs, int start, int len) { int h = hashValue(cs, start, len) & hashMask; NameImpl n = hashes[h]; byte[] names = this.bytes; while (n != null && (n.getByteLength() != len || !equals(names, n.index, cs, start, len))) { n = n.next; } if (n == null) { int nc = this.nc; while (nc + len > names.length) { // System.err.println("doubling name buffer of length + " + names.length // + " to fit " + len + " bytes");//DEBUG byte[] newnames = new byte[names.length * 2]; System.arraycopy(names, 0, newnames, 0, names.length); names = this.bytes = newnames; } System.arraycopy(cs, start, names, nc, len); n = new NameImpl(this); n.index = nc; n.length = len; n.next = hashes[h]; hashes[h] = n; this.nc = nc + len; if (len == 0) { this.nc++; } } return n; }
@Override void setName(String newname, String applyToSheetName) { super.setName(newname, applyToSheetName); this._table.setName(newname); this._table.setDisplayName(newname); }