| type | you write: | |
| int | "int" | |
| float | "float" | |
| string | "string" | |
| mapping | "mapping(mixed:mixed)" or "mapping" | |
| array of int | "array(int)" or "int *" | |
| function(int:int) | "function(int:int)" | |
| varargs function | "function(int ...:int)" | |
| int or string | "int|string" |
Then there are a few tricks you can use, say you have a function which returns an int except if you call it with a string in which case it return a string:
"!function(string:mixed)&function(mixed:int)|function(string:string)"
The & and ! operators work as you might expect but are only useful together.