The general syntax for a function declaration is:
@ [mark-char] "Scheme-name" : return C++-name(param, ...)[;] [: inserts] [## ifdefname]
mark-char (after translation by any relevant @SETMARK commands) can be:
Any other value of mark-char is ignored.
return is just like param (see below), except that it cannot have a default value, and has no use for a typecheck function (it is implicit in the unbundling).
Multiple @ statements can be given for the same C++-name to make multiple versions of an overloaded function available from Scheme. The number or types of Scheme parameters must be different for each version of the overloaded function.
Constructor declarations have a simplified form:
@CREATOR (param, ...)[;] [: inserts] [## ifdefname]