/*****************************************************************************/
/*                                                                           */
/*       Rental Cars: Car Pool Vehicle Tracker (bitmap implementation)       */
/*                                                                           */
/*                       October 1999, Jacob Lundberg                        */
/*                                                                           */
/*****************************************************************************/

// Use a (bitwise) CarPool to track some rental cars.
// Unlike the non-bitmap implementation, colors are not tracked.

import CarPool;

class RentalCars
  {
  // Make 4 new cars, numbered 0 through 3.
  static CarPool carPool = new CarPool( 4 );

  public static void main( String argv[] )
    {
    // prepare
    System.out.println( "RentalCars: Starting." );

    // construct
    System.out.println( "RentalCars: Total cars in CarPool reported to be: " + carPool.countCars() + "." );

    // operations
    int i1 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i1 + " for i1." );
    System.out.println( "RentalCars: Returned car " + i1 + ": " + carPool.returnCar( i1 ) + "." );
    int i2 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i2 + " for i2." );
    int i3 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i3 + " for i3." );
    int i4 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i4 + " for i4." );
    System.out.println( "RentalCars: Returned car " + i3 + ": " + carPool.returnCar( i3 ) + "." );
    int i5 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i5 + " for i5." );
    System.out.println( "RentalCars: Returned car " + i4 + ": " + carPool.returnCar( i4 ) + "." );
    int i6 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i6 + " for i6." );
    int i7 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i7 + " for i7." );
    int i8 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i8 + " for i8." );
    System.out.println( "RentalCars: Returned car " + i2 + ": " + carPool.returnCar( i2 ) + "." );
    System.out.println( "RentalCars: Returned car " + i7 + ": " + carPool.returnCar( i7 ) + "." );
    int i9 = carPool.getCar();
    System.out.println( "RentalCars: Got car " + i9 + " for i9." );
    System.out.println( "RentalCars: Returned car " + i5 + ": " + carPool.returnCar( i5 ) + "." );
    System.out.println( "RentalCars: Returned car " + i6 + ": " + carPool.returnCar( i6 ) + "." );
    System.out.println( "RentalCars: Returned car " + i9 + ": " + carPool.returnCar( i9 ) + "." );

    // destroy
    carPool.delCar( carPool.countCars() );
    System.out.println( "RentalCars: Deleted all cars." );
    System.out.println( "RentalCars: Total cars in CarPool reported to be: " + carPool.countCars() + "." );

    // finish
    System.out.println( "RentalCars: Terminating." );
    }
  }

