commit 4433f2dd84f12e5275f64520cb85c9dfcf901c0c Author: MCorange Date: Mon Jan 20 03:38:58 2025 +0200 Initial diff --git a/mccu/include/lambda.h b/mccu/include/lambda.h new file mode 100644 index 0000000..701f7ad --- /dev/null +++ b/mccu/include/lambda.h @@ -0,0 +1,28 @@ +#ifndef _H_MCORANGE_LAMBDA +#define _H_MCORANGE_LAMBDA + +#if defined(_MSC_VER) && !defined(__MC_LMBD_DEF) + #define __MC_LMBD_DEF + #error "msc TODO" +#endif + +#if defined(__clang__) && !defined(__MC_LMBD_DEF) + #if !__has_extension(blocks) + #error "Clang blocks feature is required, compile with '-fblocks -lBlocksRuntime' \ +and make sure you have libblocksruntime(-dev) installed" + #endif + + #define __MC_LMBD_DEF + #define lambda(ret_t, args_t, body) ( ^ ret_t args_t body ) +#endif + +#if defined(__GNUC__) && !defined(__MC_LMBD_DEF) + #define __MC_LMBD_DEF + #define lambda(ret_t, args_t, body) ({ ret_t lambda##__LINE__ args_t body &lambda##__LINE__; }) +#endif + +#if !defined(__MC_LMBD_DEF) + #error "Unsupported compiler" +#endif + +#endif