001    /*
002    // $Id: //open/mondrian/src/main/mondrian/calc/IterCalc.java#3 $
003    // This software is subject to the terms of the Common Public License
004    // Agreement, available at the following URL:
005    // http://www.opensource.org/licenses/cpl.html.
006    // Copyright (C) 2006-2008 Julian Hyde
007    // All Rights Reserved.
008    // You must accept the terms of that agreement to use this software.
009    */
010    package mondrian.calc;
011    
012    import mondrian.olap.Evaluator;
013    import mondrian.olap.Member;
014    
015    /**
016     * Expression which evaluates a set of members or tuples to an Iterable.
017     *
018     * @author Richard Emberson
019     * @version $Id: //open/mondrian/src/main/mondrian/calc/IterCalc.java#3 $
020     * @since Jan 11, 2007
021     */
022    public interface IterCalc extends Calc {
023        /**
024         * Evaluates an expression to yield an Iterable of members or tuples.
025         *
026         * <p>The Iterable is immutable.
027         *
028         * @param evaluator Evaluation context
029         * @return An Iterable of members or tuples, never null.
030         */
031        Iterable evaluateIterable(Evaluator evaluator);
032        Iterable<Member> evaluateMemberIterable(Evaluator evaluator);
033        Iterable<Member[]> evaluateTupleIterable(Evaluator evaluator);
034    
035    }
036    
037    // End IterCalc.java