KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > smallsql > database > LongLongList


1 /* =============================================================
2  * SmallSQL : a free Java DBMS library for the Java(tm) platform
3  * =============================================================
4  *
5  * (C) Copyright 2004-2006, by Volker Berlin.
6  *
7  * Project Info: http://www.smallsql.de/
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * ---------------
28  * LongLongList.java
29  * ---------------
30  * Author: Volker Berlin
31  *
32  */

33 package smallsql.database;
34
35 /**
36  * A list liek a vector that save 2 long values on on one position.
37  *
38  * @author Volker Berlin
39  */

40 final class LongLongList {
41     private int size;
42     private long[] data;
43
44     LongLongList(){
45         this(16);
46     }
47     LongLongList(int initialSize){
48         data = new long[initialSize*2];
49     }
50     
51     final int size(){
52         return size;
53     }
54
55     final long get1(int idx){
56         if (idx >= size)
57             throw new IndexOutOfBoundsException JavaDoc("Index: "+idx+", Size: "+size);
58         return data[idx << 1];
59     }
60     
61     final long get2(int idx){
62         if (idx >= size)
63             throw new IndexOutOfBoundsException JavaDoc("Index: "+idx+", Size: "+size);
64         return data[(idx << 1) +1];
65     }
66     
67     final void add(long value1, long value2){
68         int size2 = size << 1;
69         if(size2 >= data.length ){
70             resize(size2);
71         }
72         data[ size2 ] = value1;
73         data[ size2 +1] = value2;
74         size++;
75     }
76
77     final void clear(){
78         size = 0;
79     }
80     
81     private final void resize(int newSize){
82         long[] dataNew = new long[newSize << 1];
83         System.arraycopy(data, 0, dataNew, 0, size << 1);
84         data = dataNew;
85     }
86 }
87
Popular Tags