All IDL definitions map onto FLI definitions, mirroring the mapping that
midl.exe
does for C/C++. However, IDL provides some additional type information that C/C++ lacks (for instance the
string
attribute), so there are some additional conversions that Lisp performs when it can.
The COM API uses the information from the IDL to convert data between FLI types and Lisp types where appropriate for arguments and return values of COM method calls. In particular:
In COM, all parameters have a
direction
which can be either
in
,
out
or both
in
and
out
(referred to as
in-out
here). Arguments and values for client-side COM method calls reflect the direction as described in the following sections. For a complete version of the example code, see the file
examples\com\manual\args\args-calling.lisp
in the LispWorks installation.