Package com.sun.jna.platform.win32.COM

# Class IComEnumVariantIterator

java.lang.Object
com.sun.jna.platform.win32.COM.IComEnumVariantIterator

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Iterable<Variant.VARIANT>`, `Iterator<Variant.VARIANT>`

public class IComEnumVariantIterator extends Object implements Iterable<Variant.VARIANT>, Iterator<Variant.VARIANT>, Closeable
Wrapper for an EnumVariant Iteration. The usecase is a for-loop in the style:

     // Aquire an IDispatch, that has a new NewEnum Property (DISPID_NEWENUM)
     for(VARIANT v: IComEnumVariantIterator.wrap(dispatch)) {
          // Work with the acquired Variant
          // ...
          // Finally free it
          OleAuto.INSTANCE.VariantClear(v);
     }

The `IComEnumVariantIterator` iterator closes the enumeration it wraps after the enumeration is exhausted or when the iterator is GCed, whatever happens earlier.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IComEnumVariantIterator(EnumVariant backingIteration)`
  IComEnumVariantIterator wraps the supplied EnumVariant and exposes that as an `Iterable<Variant.VARIANT>`/`Iterator<Variant.VARIANT>`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `protected void`
  `finalize()`
  `boolean`
  `hasNext()`
  `Iterator<Variant.VARIANT>`
  `iterator()`
  `Variant.VARIANT`
  `next()`
  `void`
  `remove()`
  `static IComEnumVariantIterator`
  `wrap(IDispatch dispatch)`
  Helper to get new enumeration from an `IDispatch`.

  ### Methods inherited from class java.lang.Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining`

- ## Constructor Details

  - ### IComEnumVariantIterator

    public IComEnumVariantIterator(EnumVariant backingIteration)
    IComEnumVariantIterator wraps the supplied EnumVariant and exposes that as an `Iterable<Variant.VARIANT>`/`Iterator<Variant.VARIANT>`. The class takes possion of the supplied EnumVariant. So the EnumVariant is Released when the enumeration is exhausted or the Iterator is GCed.
    Parameters:
      `backingIteration` -

- ## Method Details

  - ### wrap

    public static IComEnumVariantIterator wrap(IDispatch dispatch)
    Helper to get new enumeration from an `IDispatch`.

    This expects, that the supplied IDispatch has a property identified by a `OaIdl.DISPID` of `OaIdl.DISPID_NEWENUM`

    Parameters:
      `dispatch` - IDispatch to be analysed
    Returns:
      IComEnumVariantIterator wrapping the enumeration queried from the supplied object

  - ### hasNext

    public boolean hasNext()
    Specified by:
      `hasNext` in interface `Iterator<Variant.VARIANT>`

  - ### next

    public Variant.VARIANT next()
    Specified by:
      `next` in interface `Iterator<Variant.VARIANT>`

  - ### close

    public void close()
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`

  - ### finalize

    protected void finalize() throws Throwable
    Overrides:
      `finalize` in class `Object`
    Throws:
      `Throwable`

  - ### iterator

    public Iterator<Variant.VARIANT> iterator()
    Specified by:
      `iterator` in interface `Iterable<Variant.VARIANT>`

  - ### remove

    public void remove()
    Specified by:
      `remove` in interface `Iterator<Variant.VARIANT>`