001: /*
002: * $RCSfile: FastVector.java,v $
003: *
004: * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * - Redistribution of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * - Redistribution in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in
015: * the documentation and/or other materials provided with the
016: * distribution.
017: *
018: * Neither the name of Sun Microsystems, Inc. or the names of
019: * contributors may be used to endorse or promote products derived
020: * from this software without specific prior written permission.
021: *
022: * This software is provided "AS IS," without a warranty of any
023: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
024: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
025: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
026: * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
027: * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
028: * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
029: * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
030: * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
031: * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
032: * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
033: * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
034: * POSSIBILITY OF SUCH DAMAGES.
035: *
036: * You acknowledge that this software is not designed, licensed or
037: * intended for use in the design, construction, operation or
038: * maintenance of any nuclear facility.
039: *
040: * $Revision: 1.4 $
041: * $Date: 2007/02/09 17:20:05 $
042: * $State: Exp $
043: */
044:
045: package com.sun.j3d.internal;
046:
047: /**
048: * The FastVector object is a growable array of ints. It's much faster
049: * than the Java Vector class because it isn't synchronized. This class
050: * was created because it is needed in several places by graphics
051: * utilities.
052: */
053: public class FastVector {
054:
055: private int data[];
056: private int capacity;
057: private int increment;
058: private int size;
059:
060: /**
061: * Add an element to the end of the array.
062: */
063: public void addElement(int element) {
064: if (size >= capacity) {
065: capacity += (increment == 0) ? capacity : increment;
066: int newData[] = new int[capacity];
067: System.arraycopy(data, 0, newData, 0, size);
068: data = newData;
069: }
070: data[size++] = element;
071: } // End of addElement
072:
073: /**
074: * Get number of ints currently stored in the array;
075: */
076: public int getSize() {
077: return size;
078: } // End of getSize
079:
080: /**
081: * Get access to array data
082: */
083: public int[] getData() {
084: return data;
085: } // End of getData
086:
087: /**
088: * Constructor.
089: * @param initialCapacity Number of ints the object can hold
090: * without reallocating the array.
091: * @param capacityIncrement Once the array has grown beyond
092: * its capacity, how much larger the reallocated array should be.
093: */
094: public FastVector(int initialCapacity, int capacityIncrement) {
095: data = new int[initialCapacity];
096: capacity = initialCapacity;
097: increment = capacityIncrement;
098: size = 0;
099: } // End of FastVector(int, int)
100:
101: /**
102: * Constructor.
103: * When the array runs out of space, its size is doubled.
104: * @param initialCapacity Number of ints the object can hold
105: * without reallocating the array.
106: */
107: public FastVector(int initialCapacity) {
108: data = new int[initialCapacity];
109: capacity = initialCapacity;
110: increment = 0;
111: size = 0;
112: } // End of FastVector(int)
113:
114: /**
115: * Constructor.
116: * The array is constructed with initial capacity of one integer.
117: * When the array runs out of space, its size is doubled.
118: */
119: public FastVector() {
120: data = new int[1];
121: capacity = 1;
122: increment = 0;
123: size = 0;
124: } // End of FastVector()
125: } // End of class FastVector
126:
127: // End of file FastVector.java
|