Rev 3408 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* 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
;
}
}