org.htmlparser.lexer

Class PageIndex

public class PageIndex extends Object implements Serializable, Sortable

A sorted array of integers, 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 Integer object per element.
Field Summary
protected intmCount
The number of valid elements.
protected intmIncrement
Increment for allocations.
protected int[]mIndices
The elements.
protected PagemPage
The page associated with this index.
protected static intmStartIncrement
Starting increment for allocations.
Constructor Summary
PageIndex(Page page)
Create an empty index.
PageIndex(Page page, int cursor)
Create an index with the one element given.
PageIndex(Page page, int[] cursors)
Create an index with the elements given.
Method Summary
intadd(Cursor cursor)
Add an element to the list
intadd(int cursor)
Add an element to the list
protected intbsearch(int cursor)
Binary search for the element.
protected intbsearch(int cursor, int first, int last)
Binary search for the element.
intcapacity()
Get the capacity for elements without reallocation.
intcolumn(Cursor cursor)
Get the column number for a cursor.
intcolumn(int cursor)
Get the column number for a position.
intelementAt(int index)
Get an element from the list.
Orderedfetch(int index, Ordered reuse)
Fetch the object at the given index.
intfirst()
Returns the first index of the Sortable.
int[]get()
Get the elements as an array of int.
PagegetPage()
Get this index's page.
protected voidinsertElementAt(int cursor, int index)
Inserts an element into the list.
intlast()
Returns the last index of the Sortable.
voidremove(Cursor cursor)
Remove an element from the list
voidremove(int cursor)
Remove an element from the list
protected voidremoveElementAt(int index)
Remove an element from the list.
introw(Cursor cursor)
Get the line number for a cursor.
introw(int cursor)
Get the line number for a position.
intsize()
Get the count of elements.
voidswap(int i, int j)
Swaps the elements at the given indicies.

Field Detail

mCount

protected int mCount
The number of valid elements.

mIncrement

protected int mIncrement
Increment for allocations.

mIndices

protected int[] mIndices
The elements.

mPage

protected Page mPage
The page associated with this index.

mStartIncrement

protected static final int mStartIncrement
Starting increment for allocations.

Constructor Detail

PageIndex

public PageIndex(Page page)
Create an empty index.

Parameters: page The page associated with this index.

PageIndex

public PageIndex(Page page, int cursor)
Create an index with the one element given.

Parameters: page The page associated with this index. cursor The single element for the new index.

PageIndex

public PageIndex(Page page, int[] cursors)
Create an index with the elements given.

Parameters: page The page associated with this index. cursors The initial elements of the index. NOTE: The list must be sorted in ascending order.

Method Detail

add

public int add(Cursor cursor)
Add an element to the list

Parameters: cursor The element to add.

Returns: The position at which the element was inserted or the index of the existing element if it is a duplicate.

add

public int add(int cursor)
Add an element to the list

Parameters: cursor The element to add.

Returns: The position at which the element was inserted or the index of the existing element if it is a duplicate.

bsearch

protected int bsearch(int cursor)
Binary search for the element.

Parameters: cursor The element to search for.

Returns: The index at which the element was found or is to be inserted.

bsearch

protected int bsearch(int cursor, int first, int last)
Binary search for the element.

Parameters: cursor The element to search for. first The index to start at. last The index to stop at.

Returns: The index at which the element was found or is to be inserted.

capacity

public int capacity()
Get the capacity for elements without reallocation.

Returns: The number of spaces for elements.

column

public int column(Cursor cursor)
Get the column number for a cursor.

Parameters: cursor The character offset into the page.

Returns: The character offset into the line this cursor is on.

column

public int column(int cursor)
Get the column number for a position.

Parameters: cursor The character offset into the page.

Returns: The character offset into the line this cursor is on.

elementAt

public int elementAt(int index)
Get an element from the list.

Parameters: index The index of the element to get.

Returns: The element.

fetch

public Ordered fetch(int index, Ordered reuse)
Fetch the object at the given index.

Parameters: index The item number to get. 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.

Returns: The Ordered object at that index.

first

public int first()
Returns the first index of the Sortable.

Returns: The index of the first element.

get

public int[] get()
Get the elements as an array of int.

Returns: A new array containing the elements, i.e. a snapshot of the index.

getPage

public Page getPage()
Get this index's page.

Returns: The page associated with this index.

insertElementAt

protected void insertElementAt(int cursor, int index)
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.

Parameters: cursor The element to insert. index The index in the list to insert it at.

last

public int last()
Returns the last index of the Sortable.

Returns: The index of the last element. If this were an array object this would be (object.length - 1). For an empty index this will return -1.

remove

public void remove(Cursor cursor)
Remove an element from the list

Parameters: cursor The element to remove.

remove

public void remove(int cursor)
Remove an element from the list

Parameters: cursor The element to remove.

removeElementAt

protected void removeElementAt(int index)
Remove an element from the list.

Parameters: index The index of the item to remove.

row

public int row(Cursor cursor)
Get the line number for a cursor.

Parameters: cursor The character offset into the page.

Returns: The line number the character is in.

row

public int row(int cursor)
Get the line number for a position.

Parameters: cursor The character offset into the page.

Returns: The line number the character is in.

size

public int size()
Get the count of elements.

Returns: The number of valid elements.

swap

public void swap(int i, int j)
Swaps the elements at the given indicies.

Parameters: i One index. j The other index.

HTML Parser is an open source library released under LGPL. SourceForge.net