diff options
Diffstat (limited to 'content/2024-04-24-fn-wrapper-macro-magic/wrap-v1.cc')
-rw-r--r-- | content/2024-04-24-fn-wrapper-macro-magic/wrap-v1.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/content/2024-04-24-fn-wrapper-macro-magic/wrap-v1.cc b/content/2024-04-24-fn-wrapper-macro-magic/wrap-v1.cc new file mode 100644 index 0000000..d3f3ddf --- /dev/null +++ b/content/2024-04-24-fn-wrapper-macro-magic/wrap-v1.cc @@ -0,0 +1,19 @@ +// Mock the common wrapper functionality. For the purpose of this discussion, +// this is just a sink accepting any function argument. +#define MOCK_WRAPPER_IMPL(ret, fn) \ + /* do common work */ \ + static ret wrap_##fn(...); + +// Utility to generate wrapper boilerplate. +#define WRAP(ret, fn, ...) \ + MOCK_WRAPPER_IMPL(ret, fn) \ + \ + extern "C" ret fn(__VA_ARGS__) + +WRAP(int, foo, const char* name) { + return wrap_foo(name); +} + +WRAP(int, bar, const char* name, const char* value) { + return wrap_bar(name, value); +} |