Also, add macros so that code generator doesn't need to know about any runtime variables names or types
This way, we can hide auxiliary symbols from library users, but still allow them to use hidden symbols