C/C++ data structures and simple C extensions via a custom preprocessor