use macros to minimise size of demangle code