[previous] [up] [next]     [contents] [index]
Next: Code Inserts Up: Function and Method Declarations Previous: Function and Method Declarations

Parameters

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.



PLT