define a macro to eliminate boilerplate in LLVM type definitions