Typetags

List of typetags supported by jimff

	v       {void}					no return value, or if argument it is skipped
	b       {unsigned char}				treated as pure 0..255 byte value
	c       {signed char}				treated as character if apropriate, 0..127 otherwise
	C       {unsigned char}				treated as character if apropriate, 0..255 otherwise
	s       {short}					integer value
	S       {unsigned short}			integer value
	i       {signed int}				integer value
	I       {unsigned int}				integer value
	l       {signed long}				integer value
	L       {unsigned long}				integer value
	w       {signed long long}			integer value
	W       {unsigned long long}			integer value
	q       {signed long long}			integer value, special case for signed long long return value as pointer argument 
	Q       {unsigned long long}			integer value, special case for unsigned long long return value as pointer argument 
	f       {float}					floating point value, accepts integer values as well
	d       {double}				floating point value, accepts integer values as well
	p       {void*}					static pointer value, may have size attached, no ownership
	P       {void*}					dynamic pointer value, may have size, controls ownership
	x       {callback_t}				function callback value, as created by the callback command, 
	z       {const char*}				string value, no ownership
	Z       {char*}					string value, controls ownership
	a       {int32_t | float | void*}		32-bit argument
	A       {int64_t | double | void*}		64-bit argument

'a' and 'A' are untested, and was originally the start of varargs, probably best not to use them.