Node:Terminology, Next:, Previous:Preliminaries, Up:COM Client



Terminology

ProgID
A human readable name for an object class, typically as an atom, e.g. 'Excel.Application'.
CLSID (Class Identifier)
A globally unique identifier of a class, typically as an atom, e.g. '{00024500-0000-0000-C000-000000000046}'.

Where it makes sense a ProgID can be used instead of the corresponding CLSID.

IID (Interface Identifier)
A globally unique identifier of an interface. Currently only the IDispatch interface is used so you do not have to care about this.
IName (Interface Name)
The human readable name of an interface, e.g. IDispatch.

Where it makes sense an IName can be used instead of the corresponding IID.

Object
A COM-object (or rather a pointer to an interface).
ComValue
A value that can be passed from COM to SICStus. Currently numeric types, booleans (treated as 1 for true, 0 for false), strings, and COM objects.
ComInArg
A value that can be passed as an in-argument to COM, currently one of:
atom
Passed as a string (BSTR)
numeric
Passed as the corresponding number
list
A list of char codes are treated as a string.
compound
Other compound terms are presently illegal but will be used to extend the permitted types.

It is, at present, not possible to pass an object as an argument. This restriction will be lifted.

SimpleCallSpec
Denotes a single method and its arguments. As an example, to call the method named foo with the arguments 42 and the string "bar" the SimpleCallSpec would be the compound term foo(42,'bar') or, as an alternative, foo(42,"bar").

The arguments of the compound term are treated as follows:

ComInArg
See above
variable
The argument is assumed to be an out argument. The variable is bound to the resulting value when the method returns.
mutable
The argument is assumed to be an in,out argument. The value of the mutable is passed to the method and when the method returns the mutable is updated with the corresponding return value.

CallSpec
Either a SimpleCallSpec or a list of CallSpecs. If it is a list then all but the last SimpleCallSpec are assumed to denote method calls that return a COM-object. So for instance the VB statement app.workbooks.add can be expressed either as:
          comclient_invoke_method_proc(App, [workbooks, add])
          
or as
          comclient_invoke_method_fun(App, workbooks, WorkBooks),
          comclient_invoke_method_proc(WorkBooks, add),
          comclient_release(WorkBooks)