Each param has the form:
[-]type[=defval][/ param-macros]
If the leading ``-'' is present, then the parameter does not exists in Scheme. This is useful, for example, when the C++ method takes an array and an array size; the Scheme version should just take a list or a vector, without a redundant size parameter.
type can be any xctocc type, as described in section 3.5. defval, if present, should be a contant C++ value of the appropriate type, mirroring the default value of the parameter in the C++ function prototype.
param-macros can be used to specify macros for bundling, unbundling, and typechecking the parameter value. It has this form:
[bundle][/[unbundle][/[typecheck][/[comp-type][/[spidey]]]]]
where each item is a macro call. When these macro calls are expanded, instances of {x} in the macro are replaced with the value being bundled/unbundled/typechecked. Type-checking is only performed on Scheme values to distinguish overloaded method calls, so typechecking can often be omitted for non-standard value types.
The comp-type part is not a macro call, but a substitute tag that is used when comparing instances of an overloaded function. This provides complete control over what parameters have the same ``type'' or different type with respect to dispatching an overloaded method invocation.
The spidey macro specifies a MrSpidey type foe the parameter.