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.