## Generate One MEX Function That Supports Multiple Signatures

An entry-point function is a top-level MATLAB® function from which you generate code. If your entry-point function has inputs, you must specify the properties of the inputs to generate a MEX function. In this case, the generated MEX function works only with the signature of the entry-point function that you specify during code generation.

If your entry-point function supports multiple signatures, you can generate a single MEX function instead of generating a separate MEX function for each signature. The generated MEX function works with the multiple signatures provided during code generation.

By using multisignature MEX functionality, you can:

• Generate one MEX function that supports the multiple signatures that you specify in the entry-point function.

• Reduce the overhead involved in generating and using separate MEX functions for each signature of your entry-point function.

• Achieve MATLAB function-like behavior in the generated MEX function.

### Generating Multisignature MEX Function

To generate a multisignature MEX function, consider this function `myAdd`:

```function y = myAdd(a,b) %#codegen y = a+b; end ```
Suppose that you want to generate a MEX function from `myAdd` that works with three different data types: `double`, `int8`, and `vector of doubles`. Specify the three arguments as: `{1,2}`, `{int8(2), int8(3)}`, and ```{1:10, 1:10}```.

To generate code for `myAdd` function, at the MATLAB command line, run this `codegen` command:

`codegen -config:mex myAdd.m -args {1,2} -args {int8(2),int8(3)} -args {1:10,1:10} -report`
This syntax generates a single MEX function `myAdd_mex` for the signatures specified in the `codegen` command.

At the command line, call the generated MEX function `myAdd_mex`. Make sure that the values you pass to `myAdd_mex` match the input properties that you specified in the `codegen` command.

`myAdd_mex(3,4)`
```ans = 7```
`myAdd_mex(int8(5),int8(6))`
```ans = int8 11```
`myAdd_mex(1:10,2:11)`
```ans = 3 5 7 9 11 13 15 17 19 21```

Running the MATLAB function `myAdd` with these input values produces the same output. These test cases verify that `myAdd` and `myAdd_mex` have the same behavior.

## Limitations

Multisignature MEX generation does not support: 