/*
* Copyright (C) 2007,2014 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* Author: Steve Ratcliffe
* Create date: 14-Jan-2007
*/
package uk.me.parabola.imgfmt.app.labelenc;
/**
* Holds the bytes and length of an encoded character string used in a label.
* The length of the byte array may be longer than the part that is actually
* used, so the length property should always be used.
*
* Class is immutable.
*
* @author Steve Ratcliffe
*/
public class EncodedText {
private final int hashCode;
private final byte[] ctext;
private final int length;
private final char[] chars;
public EncodedText(byte[] buf, int len, char[] chars) {
this.ctext = buf;
this.length = len;
this.chars = chars;
int hc = 0;
for (int i = 0; i < length; i++)
hc = 31*hc + ctext[i];
hashCode = hc;
}
public byte[] getCtext() {
return ctext;
}
public int getLength() {
return length;
}
public char[] getChars() {
return chars;
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EncodedText that = (EncodedText) o;
if (length != that.length) return false;
for (int i = 0; i < length; i++)
if (ctext[i] != that.ctext[i])
return false;
return true;
}
public int hashCode() {
return hashCode;
}
}