GetLength.java
Created with JBuilder
package listFW.visitor;

import listFW.*;

/**
 * Computes the number of elements in a list.
 * @author D. X. Nguyen
 * @since Copyright 2002 - DXN All rights reserved
 */
public class GetLength implements IListAlgo {

    /**
     * Returns 0 because the empty list has no elements.
     * @param host an empty list.
     * @param inp not used.
     * @return Integer(0)
     */
    public Object emptyCase(IEmptyList host, Object inp) {
        return new Integer(0);
    }


    /**
     * Recursively computes the length of host's rest, adds 1 to the result and
     * returns.
     * @param host a non-empty list.
     * @param inp not used.
     * @return Integer
     */
    public Object nonEmptyCase(INEList host, Object inp) {
        // NOTE the use of "type-casting" below.
        Integer restLen = (Integer)host.getRest().execute(this, null);
        // The execute() method for IList returns an Object in general.
        // However, we do know that host.getRest().execute(...) returns an
        // Integer.  Type-casting to an Integet tells the compiler to assume
        // that the returned Object is an Integer.

        return new Integer(1 + restLen.intValue());
    }
}

GetLength.java
Created with JBuilder