2018-08-11 07:28:30 +00:00
|
|
|
#define MAYBE_TYPE(name, type) struct maybe_##name {type value; char is_value;}
|
|
|
|
#define MAYBE(name) struct maybe_##name
|
|
|
|
|
2018-08-11 07:34:34 +00:00
|
|
|
#define ENABLE_RETURN(name) MAYBE(name) __return_value
|
2018-08-11 07:28:30 +00:00
|
|
|
#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
|