very crazy preprocessor magic to make lua bindings more robust