public Enumerable valuesEnumerable()

in src/main/java/net/hydromatic/linq4j/LookupImpl.java [205:242]


  public Enumerable<V> valuesEnumerable() {
    return new AbstractEnumerable<V>() {
      public Enumerator<V> enumerator() {
        final Enumerator<Enumerable<V>> listEnumerator =
            Linq4j.iterableEnumerator(values());
        return new Enumerator<V>() {
          Enumerator<V> enumerator = Linq4j.emptyEnumerator();

          public V current() {
            return enumerator.current();
          }

          public boolean moveNext() {
            for (;;) {
              if (enumerator.moveNext()) {
                return true;
              }
              enumerator.close();
              if (!listEnumerator.moveNext()) {
                enumerator = Linq4j.emptyEnumerator();
                return false;
              }
              enumerator = listEnumerator.current().enumerator();
            }
          }

          public void reset() {
            listEnumerator.reset();
            enumerator = Linq4j.emptyEnumerator();
          }

          public void close() {
            enumerator.close();
          }
        };
      }
    };
  }