return true;
if (obj!=null && obj.fromRatio==fromRatio && obj.toRatio==toRatio
&& obj.fromShifts!=null && obj.toShifts!=null) {
- Iterator i,j;
- for (i=fromShifts.iterator(),j=obj.fromShifts.iterator(); i.hasNext();) {
- int[] mi=(int[]) i.next();
- if (!j.hasNext())
- return false;
- int[] mj=(int[]) j.next();
+ int i,iSize=fromShifts.size(),j,jSize=obj.fromShifts.size();
+ if (iSize!=jSize)
+ return false;
+ for (i=0,iSize=fromShifts.size(),j=0, jSize=obj.fromShifts.size(); i<iSize;) {
+ int[] mi=(int[]) fromShifts.elementAt(i++);
+ int[] mj=(int[]) obj.fromShifts.elementAt(j++);
if (mi[0]!=mj[0] || mi[1]!=mj[1])
return false;
}
- if (j.hasNext())
+ iSize=toShifts.size();
+ jSize=obj.toShifts.size();
+ if (iSize!=jSize)
return false;
- for (i=toShifts.iterator(),j=obj.toShifts.iterator(); i.hasNext();) {
- int[] mi=(int[]) i.next();
- if (!j.hasNext())
- return false;
- int[] mj=(int[]) j.next();
+ for (i=0,j=0; i<iSize;) {
+ int[] mi=(int[]) toShifts.elementAt(i++);
+ int[] mj=(int[]) obj.toShifts.elementAt(j++);
if (mi[0]!=mj[0] || mi[1]!=mj[1])
return false;
}
- if (j.hasNext())
- return false;
return true;
}
return false;
private int[][] posMap(Vector intVals, int ratio, Vector toIntVals,
int toRatio)
{
- Iterator iv = intVals.iterator();
- if (!iv.hasNext())
+ int iv=0,ivSize = intVals.size();
+ if (iv>=ivSize)
{
return null;
}
- int[] intv=(int[]) iv.next();
+ int[] intv=(int[]) intVals.elementAt(iv++);
int from=intv[0],to=intv[1];
if (from > to)
{
from = intv[1];
to=intv[0];
}
- while (iv.hasNext())
+ while (iv<ivSize)
{
- intv = (int[]) iv.next();
+ intv = (int[]) intVals.elementAt(iv++);
if (intv[0]<from)
{
from=intv[0];
private int[] shift(int pos, Vector fromShifts, int fromRatio,
Vector toShifts, int toRatio)
{
- int[] fromCount = countPos(fromShifts.iterator(), pos);
+ int[] fromCount = countPos(fromShifts, pos);
if (fromCount==null)
{
return null;
}
int fromRemainder=(fromCount[0]-1) % fromRatio;
int toCount = 1+(((fromCount[0]-1) / fromRatio) * toRatio);
- int[] toPos = countToPos(toShifts.iterator(), toCount);
+ int[] toPos = countToPos(toShifts, toCount);
if (toPos==null)
{
return null; // throw new Error("Bad Mapping!");
* @param pos
* @return number of positions or null if pos is not within intervals
*/
- private int[] countPos(Iterator intVals, int pos)
+ private int[] countPos(Vector intVals, int pos)
{
- int count=0,intv[];
- while (intVals.hasNext())
+ int count=0,intv[],iv=0,ivSize=intVals.size();
+ while (iv<ivSize)
{
- intv = (int[])intVals.next();
+ intv = (int[])intVals.elementAt(iv++);
if (intv[0] <= intv[1])
{
if (pos >= intv[0] && pos <= intv[1])
* @param pos
* @return position pos in interval set
*/
- private int[] countToPos(Iterator intVals, int pos)
+ private int[] countToPos(Vector intVals, int pos)
{
- int count = 0, diff = 0, intv[] =
+ int count = 0, diff = 0, iv=0,ivSize=intVals.size(), intv[] =
{
0, 0};
- while (intVals.hasNext())
+ while (iv<ivSize)
{
- intv = (int[])intVals.next();
+ intv = (int[])intVals.elementAt(iv++);
diff = intv[1]-intv[0];
if (diff >= 0)
{
// correct for word direction for start and end
int startpos = fromStart[0]+fromStart[2]*(fromRatio2-1);
int endpos = fromEnd[0]+fromEnd[2]*(fromRatio2-1);
- Iterator intv = fromShifts2.iterator();
+ int intv=0,intvSize= fromShifts2.size();
int iv[],i=0,fs=-1,fe=-1; // containing intervals
- while (intv.hasNext() && (fs==-1 || fe==-1)) {
- iv = (int[]) intv.next();
+ while (intv<intvSize && (fs==-1 || fe==-1)) {
+ iv = (int[]) fromShifts2.elementAt(intv++);
if (iv[0]<=iv[1]) {
if (fs==-1 && startpos>=iv[0] && startpos<=iv[1]) {
fs = i;
return null;
Vector ranges=new Vector();
if (fs<=fe) {
- intv = fromShifts2.iterator();
- i=0;
- while (i<fs) {
- intv.next();
- i++;
- }
+ intv = fs;
+ i=fs;
// truncate initial interval
- iv = (int[]) intv.next();
+ iv = (int[]) fromShifts2.elementAt(intv++);
iv = new int[] { iv[0], iv[1]};// clone
if (i==fs)
iv[0] = startpos;
while (i!=fe) {
ranges.addElement(iv); // add initial range
- iv = (int[]) intv.next(); // get next interval
+ iv = (int[]) fromShifts2.elementAt(intv++); // get next interval
iv = new int[] { iv[0], iv[1]};// clone
i++;
}
if (ranges!=null && ranges.size()>0)
{
range = new int[ranges.size()*2];
- intv = ranges.iterator();
+ intv = 0;
+ intvSize=ranges.size();
i=0;
- while (intv.hasNext())
+ while (intv<intvSize)
{
- iv = (int[]) intv.next();
+ iv = (int[]) ranges.elementAt(intv);
range[i++] = iv[0];
range[i++] = iv[1];
- intv.remove();
+ ranges.setElementAt(null, intv++); // remove
}
}
return range;