cmaybe/cmaybe.h

18 lines
482 B
C

#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