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>`