[Htmlparser-cvs] htmlparser/src/org/htmlparser/lexer Page.java,1.10,1.11 PageIndex.java,1.5,1.6
Brought to you by:
derrickoswald
From: <der...@us...> - 2003-09-03 23:36:52
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer In directory sc8-pr-cvs1:/tmp/cvs-serv31228/lexer Modified Files: Page.java PageIndex.java Log Message: Change tabs to spaces in all source files. Index: Page.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Page.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Page.java 24 Aug 2003 21:59:41 -0000 1.10 --- Page.java 3 Sep 2003 23:36:18 -0000 1.11 *************** *** 311,315 **** if (null != content) { ! index = content.indexOf (CHARSET_STRING); if (index != -1) --- 311,315 ---- if (null != content) { ! index = content.indexOf (CHARSET_STRING); if (index != -1) *************** *** 323,327 **** content = content.substring (0, index); ! //remove any double quotes from around charset string if (content.startsWith ("\"") && content.endsWith ("\"") && (1 < content.length ())) content = content.substring (1, content.length () - 1); --- 323,327 ---- content = content.substring (0, index); ! //remove any double quotes from around charset string if (content.startsWith ("\"") && content.endsWith ("\"") && (1 < content.length ())) content = content.substring (1, content.length () - 1); *************** *** 336,340 **** // that is, case is always ignored when comparing charset names. if (!ret.equalsIgnoreCase (content)) ! { System.out.println ( "detected charset \"" --- 336,340 ---- // that is, case is always ignored when comparing charset names. if (!ret.equalsIgnoreCase (content)) ! { System.out.println ( "detected charset \"" *************** *** 343,347 **** + ret + "\""); ! } } } --- 343,347 ---- + ret + "\""); ! } } } *************** *** 351,400 **** } ! /** ! * Lookup a character set name. ! * <em>Vacuous for JVM's without <code>java.nio.charset</code>.</em> ! * This uses reflection so the code will still run under prior JDK's but ! * in that case the default is always returned. ! * @param name The name to look up. One of the aliases for a character set. ! * @param _default The name to return if the lookup fails. ! */ ! public String findCharset (String name, String _default) ! { ! String ret; ! try ! { ! Class cls; ! Method method; ! Object object; cls = Class.forName ("java.nio.charset.Charset"); ! method = cls.getMethod ("forName", new Class[] { String.class }); ! object = method.invoke (null, new Object[] { name }); ! method = cls.getMethod ("name", new Class[] { }); ! object = method.invoke (object, new Object[] { }); ! ret = (String)object; ! } ! catch (ClassNotFoundException cnfe) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (NoSuchMethodException nsme) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (IllegalAccessException ia) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (InvocationTargetException ita) ! { ! // java.nio.charset.IllegalCharsetNameException ! // and java.nio.charset.UnsupportedCharsetException ! // return the default ! ret = _default; System.out.println ( "unable to determine cannonical charset name for " --- 351,400 ---- } ! /** ! * Lookup a character set name. ! * <em>Vacuous for JVM's without <code>java.nio.charset</code>.</em> ! * This uses reflection so the code will still run under prior JDK's but ! * in that case the default is always returned. ! * @param name The name to look up. One of the aliases for a character set. ! * @param _default The name to return if the lookup fails. ! */ ! public String findCharset (String name, String _default) ! { ! String ret; ! try ! { ! Class cls; ! Method method; ! Object object; cls = Class.forName ("java.nio.charset.Charset"); ! method = cls.getMethod ("forName", new Class[] { String.class }); ! object = method.invoke (null, new Object[] { name }); ! method = cls.getMethod ("name", new Class[] { }); ! object = method.invoke (object, new Object[] { }); ! ret = (String)object; ! } ! catch (ClassNotFoundException cnfe) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (NoSuchMethodException nsme) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (IllegalAccessException ia) ! { ! // for reflection exceptions, assume the name is correct ! ret = name; ! } ! catch (InvocationTargetException ita) ! { ! // java.nio.charset.IllegalCharsetNameException ! // and java.nio.charset.UnsupportedCharsetException ! // return the default ! ret = _default; System.out.println ( "unable to determine cannonical charset name for " *************** *** 402,409 **** + " - using " + _default); ! } ! return (ret); ! } /** --- 402,409 ---- + " - using " + _default); ! } ! return (ret); ! } /** Index: PageIndex.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/PageIndex.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PageIndex.java 24 Aug 2003 21:59:41 -0000 1.5 --- PageIndex.java 3 Sep 2003 23:36:18 -0000 1.6 *************** *** 1,397 **** ! // HTMLParser Library v1_4_20030824 - A java-based parser for HTML ! // Copyright (C) Dec 31, 2000 Somik Raha ! // ! // This library is free software; you can redistribute it and/or ! // modify it under the terms of the GNU Lesser General Public ! // License as published by the Free Software Foundation; either ! // version 2.1 of the License, or (at your option) any later version. ! // ! // This library 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 ! // Lesser General Public License for more details. ! // ! // You should have received a copy of the GNU Lesser General Public ! // License along with this library; if not, write to the Free Software ! // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! // ! // For any questions or suggestions, you can write to me at : ! // Email :so...@in... ! // ! // Postal Address : ! // Somik Raha ! // Extreme Programmer & Coach ! // Industrial Logic Corporation ! // 2583 Cedar Street, Berkeley, ! // CA 94708, USA ! // Website : http://www.industriallogic.com ! // ! // This class was contributed by ! // Derrick Oswald ! // ! ! package org.htmlparser.lexer; ! ! import org.htmlparser.util.sort.Ordered; ! import org.htmlparser.util.sort.Sort; ! import org.htmlparser.util.sort.Sortable; ! ! /** ! * A sorted array of integers which are the positions of end of line characters. ! * Maintains a list of integers which are (the positions of the first ! * characters of each line. ! * To facilitate processing the first element should be maintained at position 0. ! * Facilities to add, remove, search and determine row and column are provided. ! * This class provides similar functionality to a Vector but ! * does not incur the overhead of an <code>Integer</code> object per element. ! */ ! public class PageIndex implements Sortable ! { ! /** ! * Increment for allocations. ! */ ! protected static final int mIncrement = 100; ! ! /** ! * The number of valid elements. ! */ ! protected int mCount; ! ! /** ! * The elements. ! */ ! protected int[] mIndices; ! ! /** ! * The page associated with this index. ! */ ! protected Page mPage; ! ! /** ! * Create an empty index. ! * @param page The page associated with this index. ! */ ! public PageIndex (Page page) ! { ! mPage = page; ! mIndices = new int[mIncrement]; ! mCount = 0; ! } ! ! /** ! * Create an index with the one element given. ! * @param page The page associated with this index. ! * @param cursor The single element for the new index. ! */ ! public PageIndex (Page page, int cursor) ! { ! this (page); ! mIndices[0] = cursor; ! mCount = 1; ! } ! ! /** ! * Create an index with the elements given. ! * @param page The page associated with this index. ! * @param cursors The initial elements of the index. ! * NOTE: The list must be sorted in ascending order. ! */ ! public PageIndex (Page page, int[] cursors) ! { ! mPage = page; ! mIndices = cursors; ! mCount = cursors.length; ! } ! ! /** ! * Get this index's page. ! * @return The page associated with this index. ! */ ! public Page getPage () ! { ! return (mPage); ! } ! ! /** ! * Get the count of elements. ! * @return The number of valid elements. ! */ ! public int size () ! { ! return (mCount); ! } ! ! /** ! * Get the capacity for elements without reallocation. ! * @return The number of spaces for elements. ! */ ! public int capacity () ! { ! return (mIndices.length); ! } ! ! /** ! * Add an element to the list ! * @param cursor The element to add. ! * @return The position at which the element was inserted or ! * the index of the existing element if it is a duplicate. ! */ ! public int add (Cursor cursor) ! { ! int position; ! int ret; ! ! // find where it goes ! ret = Sort.bsearch (this, cursor); ! ! // insert, but not twice ! position = cursor.getPosition (); ! if (!((ret < size ()) && (position == mIndices[ret]))) ! insertElementAt (position, ret); ! ! return (ret); ! } ! ! /** ! * Add an element to the list ! * @param cursor The element to add. ! * @return The position at which the element was inserted or ! * the index of the existing element if it is a duplicate. ! */ ! public int add (int cursor) ! { ! return (add (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Remove an element from the list ! * @param cursor The element to remove. ! */ ! public void remove (Cursor cursor) ! { ! int i; ! ! // find it ! i = Sort.bsearch (this, cursor); ! ! // remove ! if ((i < size ()) && (cursor.getPosition () == mIndices[i])) ! removeElementAt (i); ! } ! ! /** ! * Remove an element from the list ! * @param cursor The element to remove. ! */ ! public void remove (int cursor) ! { ! remove (new Cursor (getPage (), cursor)); ! } ! ! /** ! * Get an element from the list. ! * @param index The index of the element to get. ! * @return The element. ! */ ! public int elementAt (int index) ! { ! return (mIndices[index]); ! } ! ! /** ! * Get the line number for a cursor. ! * @param cursor The character offset into the page. ! * @return The line number the character is in. ! */ ! public int row (Cursor cursor) ! { ! int ret; ! ! ret = Sort.bsearch (this, cursor); ! // handle line transition, the search returns the index if it matches ! // exactly one of the line end positions, so we advance one line if ! // it's equal to the offset at the row index, since that position is ! // actually the beginning of the next line ! if ((ret < mCount) && (cursor.getPosition () == mIndices[ret])) ! ret++; ! ! return (ret); ! } ! ! /** ! * Get the line number for a position. ! * @param cursor The character offset into the page. ! * @return The line number the character is in. ! */ ! public int row (int cursor) ! { ! return (row (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Get the column number for a cursor. ! * @param cursor The character offset into the page. ! * @return The character offset into the line this cursor is on. ! */ ! public int column (Cursor cursor) ! { ! int row; ! int previous; ! ! row = row (cursor); ! if (0 != row) ! previous = this.elementAt (row - 1); ! else ! previous = 0; ! ! return (cursor.getPosition () - previous); ! } ! ! /** ! * Get the column number for a position. ! * @param cursor The character offset into the page. ! * @return The character offset into the line this cursor is on. ! */ ! public int column (int cursor) ! { ! return (column (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Get the elements as an array of int. ! * @return A new array containing the elements, ! * i.e. a snapshot of the index. ! */ ! public int[] get () ! { ! int[] ret = new int[size ()]; ! System.arraycopy (mIndices, 0, ret, 0, size ()); ! ! return (ret); ! } ! ! /** ! * Binary search for the element. ! * @param cursor The element to search for. ! * @return The index at which the element was found or is to be inserted. ! */ ! protected int bsearch (int cursor) ! { ! return (Sort.bsearch (this, new Cursor (getPage (), cursor))); ! } ! ! /** ! * Binary search for the element. ! * @param cursor The element to search for. ! * @param first The index to start at. ! * @param last The index to stop at. ! * @return The index at which the element was found or is to be inserted. ! */ ! protected int bsearch (int cursor, int first, int last) ! { ! return (Sort.bsearch (this, new Cursor (getPage (), cursor), first, last)); ! } ! ! /** ! * Inserts an element into the list. ! * The index must be a value greater than or equal to 0 and less than ! * or equal to the current size of the array. ! * @param cursor The element to insert. ! * @param index The index in the list to insert it at. ! */ ! protected void insertElementAt (int cursor, int index) ! { ! if ((index >= capacity ()) || (size () == capacity ())) ! { // allocate more space ! int new_values[] = new int[Math.max (capacity () + mIncrement, index + 1)]; ! if (index < capacity ()) ! { ! // copy and shift up in two pieces ! System.arraycopy (mIndices, 0, new_values, 0, index); ! System.arraycopy (mIndices, index, new_values, index + 1, capacity () - index); ! } ! else ! System.arraycopy (mIndices, 0, new_values, 0, capacity ()); ! mIndices = new_values; ! } ! else if (index < size ()) ! // shift up ! System.arraycopy (mIndices, index, mIndices, index + 1, capacity () - (index + 1)); ! mIndices[index] = cursor; ! mCount++; ! } ! ! /** ! * Remove an element from the list. ! * @param index The index of the item to remove. ! */ ! protected void removeElementAt (int index) ! { ! // shift ! System.arraycopy (mIndices, index + 1, mIndices, index, capacity () - (index + 1)); ! mIndices[capacity() - 1] = 0; ! mCount--; ! } ! ! // ! // Sortable interface ! // ! ! /** ! * Returns the first index of the Sortable. ! * @return The index of the first element. ! */ ! public int first () ! { ! return (0); ! } ! ! /** ! * Returns the last index of the Sortable. ! * @return The index of the last element. ! * If this were an array object this would be (object.length - 1). ! */ ! public int last () ! { ! return (mCount - 1); ! } ! ! /** ! * Fetch the object at the given index. ! * @param index The item number to get. ! * @param reuse If this argument is not null, it is an object ! * acquired from a previous fetch that is no longer needed and ! * may be returned as the result if it makes mores sense to alter ! * and return it than to fetch or create a new element. That is, the ! * reuse object is garbage and may be used to avoid allocating a new ! * object if that would normally be the strategy. ! * @return The Ordered object at that index. ! */ ! public Ordered fetch (int index, Ordered reuse) ! { ! Cursor ret; ! ! if (null != reuse) ! { ! ret = (Cursor)reuse; ! ret.mPosition = mIndices[index]; ! ret.mPage = getPage (); // redundant ! } ! else ! ret = new Cursor (getPage (), mIndices[index]); ! ! return (ret); ! } ! ! /** ! * Swaps the elements at the given indicies. ! * @param i One index. ! * @param j The other index. ! */ ! public void swap (int i, int j) ! { ! int temp = mIndices[i]; ! mIndices[i] = mIndices[j]; ! mIndices[j] = temp; ! } ! } --- 1,397 ---- ! // HTMLParser Library v1_4_20030824 - A java-based parser for HTML ! // Copyright (C) Dec 31, 2000 Somik Raha ! // ! // This library is free software; you can redistribute it and/or ! // modify it under the terms of the GNU Lesser General Public ! // License as published by the Free Software Foundation; either ! // version 2.1 of the License, or (at your option) any later version. ! // ! // This library 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 ! // Lesser General Public License for more details. ! // ! // You should have received a copy of the GNU Lesser General Public ! // License along with this library; if not, write to the Free Software ! // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! // ! // For any questions or suggestions, you can write to me at : ! // Email :so...@in... ! // ! // Postal Address : ! // Somik Raha ! // Extreme Programmer & Coach ! // Industrial Logic Corporation ! // 2583 Cedar Street, Berkeley, ! // CA 94708, USA ! // Website : http://www.industriallogic.com ! // ! // This class was contributed by ! // Derrick Oswald ! // ! ! package org.htmlparser.lexer; ! ! import org.htmlparser.util.sort.Ordered; ! import org.htmlparser.util.sort.Sort; ! import org.htmlparser.util.sort.Sortable; ! ! /** ! * A sorted array of integers which are the positions of end of line characters. ! * Maintains a list of integers which are (the positions of the first ! * characters of each line. ! * To facilitate processing the first element should be maintained at position 0. ! * Facilities to add, remove, search and determine row and column are provided. ! * This class provides similar functionality to a Vector but ! * does not incur the overhead of an <code>Integer</code> object per element. ! */ ! public class PageIndex implements Sortable ! { ! /** ! * Increment for allocations. ! */ ! protected static final int mIncrement = 100; ! ! /** ! * The number of valid elements. ! */ ! protected int mCount; ! ! /** ! * The elements. ! */ ! protected int[] mIndices; ! ! /** ! * The page associated with this index. ! */ ! protected Page mPage; ! ! /** ! * Create an empty index. ! * @param page The page associated with this index. ! */ ! public PageIndex (Page page) ! { ! mPage = page; ! mIndices = new int[mIncrement]; ! mCount = 0; ! } ! ! /** ! * Create an index with the one element given. ! * @param page The page associated with this index. ! * @param cursor The single element for the new index. ! */ ! public PageIndex (Page page, int cursor) ! { ! this (page); ! mIndices[0] = cursor; ! mCount = 1; ! } ! ! /** ! * Create an index with the elements given. ! * @param page The page associated with this index. ! * @param cursors The initial elements of the index. ! * NOTE: The list must be sorted in ascending order. ! */ ! public PageIndex (Page page, int[] cursors) ! { ! mPage = page; ! mIndices = cursors; ! mCount = cursors.length; ! } ! ! /** ! * Get this index's page. ! * @return The page associated with this index. ! */ ! public Page getPage () ! { ! return (mPage); ! } ! ! /** ! * Get the count of elements. ! * @return The number of valid elements. ! */ ! public int size () ! { ! return (mCount); ! } ! ! /** ! * Get the capacity for elements without reallocation. ! * @return The number of spaces for elements. ! */ ! public int capacity () ! { ! return (mIndices.length); ! } ! ! /** ! * Add an element to the list ! * @param cursor The element to add. ! * @return The position at which the element was inserted or ! * the index of the existing element if it is a duplicate. ! */ ! public int add (Cursor cursor) ! { ! int position; ! int ret; ! ! // find where it goes ! ret = Sort.bsearch (this, cursor); ! ! // insert, but not twice ! position = cursor.getPosition (); ! if (!((ret < size ()) && (position == mIndices[ret]))) ! insertElementAt (position, ret); ! ! return (ret); ! } ! ! /** ! * Add an element to the list ! * @param cursor The element to add. ! * @return The position at which the element was inserted or ! * the index of the existing element if it is a duplicate. ! */ ! public int add (int cursor) ! { ! return (add (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Remove an element from the list ! * @param cursor The element to remove. ! */ ! public void remove (Cursor cursor) ! { ! int i; ! ! // find it ! i = Sort.bsearch (this, cursor); ! ! // remove ! if ((i < size ()) && (cursor.getPosition () == mIndices[i])) ! removeElementAt (i); ! } ! ! /** ! * Remove an element from the list ! * @param cursor The element to remove. ! */ ! public void remove (int cursor) ! { ! remove (new Cursor (getPage (), cursor)); ! } ! ! /** ! * Get an element from the list. ! * @param index The index of the element to get. ! * @return The element. ! */ ! public int elementAt (int index) ! { ! return (mIndices[index]); ! } ! ! /** ! * Get the line number for a cursor. ! * @param cursor The character offset into the page. ! * @return The line number the character is in. ! */ ! public int row (Cursor cursor) ! { ! int ret; ! ! ret = Sort.bsearch (this, cursor); ! // handle line transition, the search returns the index if it matches ! // exactly one of the line end positions, so we advance one line if ! // it's equal to the offset at the row index, since that position is ! // actually the beginning of the next line ! if ((ret < mCount) && (cursor.getPosition () == mIndices[ret])) ! ret++; ! ! return (ret); ! } ! ! /** ! * Get the line number for a position. ! * @param cursor The character offset into the page. ! * @return The line number the character is in. ! */ ! public int row (int cursor) ! { ! return (row (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Get the column number for a cursor. ! * @param cursor The character offset into the page. ! * @return The character offset into the line this cursor is on. ! */ ! public int column (Cursor cursor) ! { ! int row; ! int previous; ! ! row = row (cursor); ! if (0 != row) ! previous = this.elementAt (row - 1); ! else ! previous = 0; ! ! return (cursor.getPosition () - previous); ! } ! ! /** ! * Get the column number for a position. ! * @param cursor The character offset into the page. ! * @return The character offset into the line this cursor is on. ! */ ! public int column (int cursor) ! { ! return (column (new Cursor (getPage (), cursor))); ! } ! ! /** ! * Get the elements as an array of int. ! * @return A new array containing the elements, ! * i.e. a snapshot of the index. ! */ ! public int[] get () ! { ! int[] ret = new int[size ()]; ! System.arraycopy (mIndices, 0, ret, 0, size ()); ! ! return (ret); ! } ! ! /** ! * Binary search for the element. ! * @param cursor The element to search for. ! * @return The index at which the element was found or is to be inserted. ! */ ! protected int bsearch (int cursor) ! { ! return (Sort.bsearch (this, new Cursor (getPage (), cursor))); ! } ! ! /** ! * Binary search for the element. ! * @param cursor The element to search for. ! * @param first The index to start at. ! * @param last The index to stop at. ! * @return The index at which the element was found or is to be inserted. ! */ ! protected int bsearch (int cursor, int first, int last) ! { ! return (Sort.bsearch (this, new Cursor (getPage (), cursor), first, last)); ! } ! ! /** ! * Inserts an element into the list. ! * The index must be a value greater than or equal to 0 and less than ! * or equal to the current size of the array. ! * @param cursor The element to insert. ! * @param index The index in the list to insert it at. ! */ ! protected void insertElementAt (int cursor, int index) ! { ! if ((index >= capacity ()) || (size () == capacity ())) ! { // allocate more space ! int new_values[] = new int[Math.max (capacity () + mIncrement, index + 1)]; ! if (index < capacity ()) ! { ! // copy and shift up in two pieces ! System.arraycopy (mIndices, 0, new_values, 0, index); ! System.arraycopy (mIndices, index, new_values, index + 1, capacity () - index); ! } ! else ! System.arraycopy (mIndices, 0, new_values, 0, capacity ()); ! mIndices = new_values; ! } ! else if (index < size ()) ! // shift up ! System.arraycopy (mIndices, index, mIndices, index + 1, capacity () - (index + 1)); ! mIndices[index] = cursor; ! mCount++; ! } ! ! /** ! * Remove an element from the list. ! * @param index The index of the item to remove. ! */ ! protected void removeElementAt (int index) ! { ! // shift ! System.arraycopy (mIndices, index + 1, mIndices, index, capacity () - (index + 1)); ! mIndices[capacity() - 1] = 0; ! mCount--; ! } ! ! // ! // Sortable interface ! // ! ! /** ! * Returns the first index of the Sortable. ! * @return The index of the first element. ! */ ! public int first () ! { ! return (0); ! } ! ! /** ! * Returns the last index of the Sortable. ! * @return The index of the last element. ! * If this were an array object this would be (object.length - 1). ! */ ! public int last () ! { ! return (mCount - 1); ! } ! ! /** ! * Fetch the object at the given index. ! * @param index The item number to get. ! * @param reuse If this argument is not null, it is an object ! * acquired from a previous fetch that is no longer needed and ! * may be returned as the result if it makes mores sense to alter ! * and return it than to fetch or create a new element. That is, the ! * reuse object is garbage and may be used to avoid allocating a new ! * object if that would normally be the strategy. ! * @return The Ordered object at that index. ! */ ! public Ordered fetch (int index, Ordered reuse) ! { ! Cursor ret; ! ! if (null != reuse) ! { ! ret = (Cursor)reuse; ! ret.mPosition = mIndices[index]; ! ret.mPage = getPage (); // redundant ! } ! else ! ret = new Cursor (getPage (), mIndices[index]); ! ! return (ret); ! } ! ! /** ! * Swaps the elements at the given indicies. ! * @param i One index. ! * @param j The other index. ! */ ! public void swap (int i, int j) ! { ! int temp = mIndices[i]; ! mIndices[i] = mIndices[j]; ! mIndices[j] = temp; ! } ! } |