blob: df2995fb5d0d9f064a2e00a36560dbadb20a0025 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>Enumerator (Apache Calcite API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Enumerator (Apache Calcite API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Enumerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.calcite.linq4j</a></div>
<h2 title="Interface Enumerator" class="title">Interface Enumerator&lt;T&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Element type</dd>
</dl>
<dl>
<dt>All Superinterfaces:</dt>
<dd><code>java.lang.AutoCloseable</code></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../adapter/clone/ArrayTable.Content.ArrayEnumerator.html" title="class in org.apache.calcite.adapter.clone">ArrayTable.Content.ArrayEnumerator</a></code>, <code><a href="../adapter/clone/ArrayTable.Content.ObjectEnumerator.html" title="class in org.apache.calcite.adapter.clone">ArrayTable.Content.ObjectEnumerator</a></code>, <code><a href="CartesianProductEnumerator.html" title="class in org.apache.calcite.linq4j">CartesianProductEnumerator</a></code>, <code><a href="../adapter/cassandra/CassandraEnumerator.html" title="class in org.apache.calcite.adapter.cassandra">CassandraEnumerator</a></code>, <code><a href="../adapter/csv/CsvEnumerator.html" title="class in org.apache.calcite.adapter.csv">CsvEnumerator</a></code>, <code><a href="DelegatingEnumerator.html" title="class in org.apache.calcite.linq4j">DelegatingEnumerator</a></code>, <code><a href="../adapter/druid/DruidConnectionImpl.BlockingQueueEnumerator.html" title="class in org.apache.calcite.adapter.druid">DruidConnectionImpl.BlockingQueueEnumerator</a></code>, <code><a href="EnumerableDefaults.CastingEnumerator.html" title="class in org.apache.calcite.linq4j">EnumerableDefaults.CastingEnumerator</a></code>, <code><a href="EnumerableDefaults.MergeJoinEnumerator.html" title="class in org.apache.calcite.linq4j">EnumerableDefaults.MergeJoinEnumerator</a></code>, <code><a href="EnumerableDefaults.SkipWhileEnumerator.html" title="class in org.apache.calcite.linq4j">EnumerableDefaults.SkipWhileEnumerator</a></code>, <code><a href="EnumerableDefaults.TakeWhileEnumerator.html" title="class in org.apache.calcite.linq4j">EnumerableDefaults.TakeWhileEnumerator</a></code>, <code><a href="EnumerableDefaults.TakeWhileLongEnumerator.html" title="class in org.apache.calcite.linq4j">EnumerableDefaults.TakeWhileLongEnumerator</a></code>, <code><a href="../adapter/file/FileEnumerator.html" title="class in org.apache.calcite.adapter.file">FileEnumerator</a></code>, <code><a href="../adapter/geode/rel/GeodeEnumerator.html" title="class in org.apache.calcite.adapter.geode.rel">GeodeEnumerator</a></code>, <code><a href="../adapter/geode/simple/GeodeSimpleEnumerator.html" title="class in org.apache.calcite.adapter.geode.simple">GeodeSimpleEnumerator</a></code>, <code><a href="../adapter/csv/JsonEnumerator.html" title="class in org.apache.calcite.adapter.csv">JsonEnumerator</a></code>, <code><a href="../adapter/kafka/KafkaMessageEnumerator.html" title="class in org.apache.calcite.adapter.kafka">KafkaMessageEnumerator</a></code>, <code><a href="Linq4j.CartesianProductListEnumerator.html" title="class in org.apache.calcite.linq4j">Linq4j.CartesianProductListEnumerator</a></code>, <code><a href="Linq4j.IterableEnumerator.html" title="class in org.apache.calcite.linq4j">Linq4j.IterableEnumerator</a></code>, <code><a href="Linq4j.ListEnumerator.html" title="class in org.apache.calcite.linq4j">Linq4j.ListEnumerator</a></code>, <code><a href="Linq4j.SingletonEnumerator.html" title="class in org.apache.calcite.linq4j">Linq4j.SingletonEnumerator</a></code>, <code><a href="Linq4j.SingletonNullEnumerator.html" title="class in org.apache.calcite.linq4j">Linq4j.SingletonNullEnumerator</a></code>, <code><a href="MemoryEnumerator.html" title="class in org.apache.calcite.linq4j">MemoryEnumerator</a></code>, <code><a href="../adapter/mongodb/MongoEnumerator.html" title="class in org.apache.calcite.adapter.mongodb">MongoEnumerator</a></code>, <code><a href="../runtime/ResultSetEnumerable.ResultSetEnumerator.html" title="class in org.apache.calcite.runtime">ResultSetEnumerable.ResultSetEnumerator</a></code>, <code><a href="../adapter/splunk/search/SplunkConnectionImpl.SplunkResultEnumerator.html" title="class in org.apache.calcite.adapter.splunk.search">SplunkConnectionImpl.SplunkResultEnumerator</a></code>, <code><a href="../runtime/SqlFunctions.ProductComparableListEnumerator.html" title="class in org.apache.calcite.runtime">SqlFunctions.ProductComparableListEnumerator</a></code>, <code><a href="TransformedEnumerator.html" title="class in org.apache.calcite.linq4j">TransformedEnumerator</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">Enumerator&lt;T&gt;</span>
extends java.lang.AutoCloseable</pre>
<div class="block">Supports a simple iteration over a collection.
<p>Analogous to LINQ's System.Collections.Enumerator. Unlike LINQ, if the
underlying collection has been modified it is only optional that an
implementation of the Enumerator interface detects it and throws a
<code>ConcurrentModificationException</code>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#close()">close</a></span>()</code></th>
<td class="colLast">
<div class="block">Closes this enumerable and releases resources.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="Enumerator.html" title="type parameter in Enumerator">T</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#current()">current</a></span>()</code></th>
<td class="colLast">
<div class="block">Gets the current element in the collection.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#moveNext()">moveNext</a></span>()</code></th>
<td class="colLast">
<div class="block">Advances the enumerator to the next element of the collection.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reset()">reset</a></span>()</code></th>
<td class="colLast">
<div class="block">Sets the enumerator to its initial position, which is before the first
element in the collection.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="current()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>current</h4>
<pre class="methodSignature"><a href="Enumerator.html" title="type parameter in Enumerator">T</a>&nbsp;current()</pre>
<div class="block">Gets the current element in the collection.
<p>After an enumerator is created or after the <a href="#reset()"><code>reset()</code></a> method is
called, the <a href="#moveNext()"><code>moveNext()</code></a> method must be called to advance the
enumerator to the first element of the collection before reading the
value of the <code>current</code> property; otherwise, <code>current</code> is
undefined.
<p>This method also throws <code>NoSuchElementException</code> if
the last call to <code>moveNext</code> returned <code>false</code>, which indicates
the end of the collection.
<p>This method does not move the position of the enumerator, and
consecutive calls to <code>current</code> return the same object until either
<code>moveNext</code> or <code>reset</code> is called.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <code>moveNext</code> or <code>reset</code> may,
at the discretion of the implementation, throw a
<code>ConcurrentModificationException</code>. If the collection is
modified between <code>moveNext</code> and <code>current</code>, <code>current</code>
returns the element that it is set to, even if the enumerator is already
invalidated.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Current element</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.util.ConcurrentModificationException</code> - if collection
has been modified</dd>
<dd><code>java.util.NoSuchElementException</code> - if <code>moveToNext</code>
has not been called, has not been called since the most
recent call to <code>reset</code>, or returned false</dd>
</dl>
</li>
</ul>
<a id="moveNext()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveNext</h4>
<pre class="methodSignature">boolean&nbsp;moveNext()</pre>
<div class="block">Advances the enumerator to the next element of the collection.
<p>After an enumerator is created or after the <code>reset</code> method is
called, an enumerator is positioned before the first element of the
collection, and the first call to the <code>moveNext</code> method moves the
enumerator over the first element of the collection.
<p>If <code>moveNext</code> passes the end of the collection, the enumerator
is positioned after the last element in the collection and
<code>moveNext</code> returns <code>false</code>. When the enumerator is at this
position, subsequent calls to <code>moveNext</code> also return <code>false</code>
until <code>#reset</code> is called.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <code>moveNext</code> or <a href="#reset()"><code>reset()</code></a> may,
at the discretion of the implementation, throw a
<code>ConcurrentModificationException</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the enumerator was successfully advanced to the
next element; <code>false</code> if the enumerator has passed the end of
the collection</dd>
</dl>
</li>
</ul>
<a id="reset()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reset</h4>
<pre class="methodSignature">void&nbsp;reset()</pre>
<div class="block">Sets the enumerator to its initial position, which is before the first
element in the collection.
<p>An enumerator remains valid as long as the collection remains
unchanged. If changes are made to the collection, such as adding,
modifying, or deleting elements, the enumerator is irrecoverably
invalidated. The next call to <a href="#moveNext()"><code>moveNext()</code></a> or <code>reset</code> may,
at the discretion of the implementation, throw a
<code>ConcurrentModificationException</code>.
<p>This method is optional; it may throw
<code>UnsupportedOperationException</code>.
<h3>Notes to Implementers</h3>
<p>All calls to Reset must result in the same state for the enumerator.
The preferred implementation is to move the enumerator to the beginning
of the collection, before the first element. This invalidates the
enumerator if the collection has been modified since the enumerator was
created, which is consistent with <a href="#moveNext()"><code>moveNext()</code></a> and
<a href="#current()"><code>current()</code></a>.</div>
</li>
</ul>
<a id="close()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>close</h4>
<pre class="methodSignature">void&nbsp;close()</pre>
<div class="block">Closes this enumerable and releases resources.
<p>This method is idempotent. Calling it multiple times has the same effect
as calling it once.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Enumerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2012&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>