#define MAYBE_TYPE(name, type) struct maybe_##name {type value; char is_value;} #define MAYBE(name) struct maybe_##name #define ENABLE_RETURN(type) MAYBE(type) __return_value #define RETURN_VALUE(x) {\ __return_value.is_value = 1;\ __return_value.value = x;\ return __return_value;\ } #define RETURN_NOTHING() {\ __return_value.is_value = 0;\ return __return_value;\ } #define IS_VALUE(x) if((x).is_value) #define IS_NOT_VALUE(x) if(!(x).is_value) #define VALUE(x) (x).value