/* // $Id: //guest/julian_hyde/saffron/src/main/saffron/runtime/Infinite.java#1 $ // Saffron preprocessor and data engine // Copyright (C) 2002 Julian Hyde <julian.hyde@mail.com> // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the // Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA. // // See the COPYING file located in the top-level-directory of // the archive of this library for complete text of license. // // jhyde, 26 April, 2002 */ package saffron.runtime; /** * <code>Infinite</code> is an empty interface which informs the optimizer that * an {@link java.util.Iterator} will -- or may -- never end. You can then * safely write code like<blockquote> * * <pre>class MultiplesOf implements Iterator { * int i, n; * MultiplesOf(int n) { * this.n = n; * this.i = 0; * } * public boolean hasNext() { * return true; * } * public Object next() { * return i += n; * } * public void remove() { * throw new UnsupportedOperationException(); * } * }; * Iterator tens = (select from new MultiplesOf(2) as twos where twos % 5 == 0);</pre> * * </blockquote> and be sure that the optimizer will not try to do anything * silly like writing the contents to an intermediate array. * * @author jhyde * @since 26 April, 2002 * @version $Id: //guest/julian_hyde/saffron/src/main/saffron/runtime/Infinite.java#1 $ **/ public interface Infinite { } // End Infinite.java
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 1748 | Julian Hyde |
saffron: convert unit tests to JUnit; add CallingConvention.ITERABLE; lots of other stuff; release 0.1. |