




 
A function of no arguments that should return the number of items in the collection. This initarg is required.
A function of no arguments that should return a sequence of items in the collection. This function is called by the implementation of 
_NewEnum
 and the sequence is copied. Exactly one of 
:items-function
 and 
:item-generator-function
 must be specified.
A function of no arguments that should return an 
item generator
, which will generate the items in the collection. See below for more details. Exactly one of 
:items-function
 and 
:item-generator-function
 must be specified.
A function called on each item that the  
:items-function
 or 
:item-generator-function
 returns. This is called when iterating, to produce the value that is returned to the caller.
A function which takes a single argument, an integer or a string specifying an item. The function should return the item specified. This initarg is required if the :
item-method
 option is non-
nil
 in 
define-automation-collection
.
The class 
standard-automation-collection
 provides a framework for implementing Automation collections. These typically provide a 
Count
 property giving the number of objects in the collect, a 
_NewEnum
 property for iterating over the element of the collection method and optionally an 
Item
 method for finding items by index or name.
The 
:count-function
 initarg specifies a function to count the items of the collection and is invoked by the implementation of the 
Count
 method.
Exactly one of the initargs 
:item-function
 and 
:item-generator-function
 must be specified to provide items for the implementation of the 
IEnumVARIANT
 instance returned by the 
_NewEnum
 method.
If 
:items-function
 is specified, then it will be called once when 
_NewEnum
 is called and should return a sequence of the items in the collection. This sequence is copied, so can be modified by the program without affecting the collection.
If 
:item-generator-function
 is specified, it should be an 
item generator
 that will generate all the items in the collection. It will be called once with the argument 
:clone
 when 
_NewEnum
 is called and then by the implementation of the resulting 
IEnumVARIANT
 interface. An 
item generator
 is a function of one argument which specifies what to do:
Return two values: the next item and 
t
. If there are no more items, return 
nil
 and 
nil
.
If there are no more items, return 
nil
. Otherwise skip the current item and return 
t
.
Reset the generator so the first item will be returned again.
Return a copy of the item generator . The copy should have the same current item.
The 
:data-function
 initarg should be function to convert each item returned by the 
:items-function
 or the item generator into a value whose type is compatible with Automation (see Automation types, VT codes and their corresponding Lisp types). The default function is 
identity
.