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]]]]

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.

comp-type 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.



PLT