#include "pureoption.h" #include inline static pureoption __pureoption_new(bool has_value, void *value) { pureoption result = { .has_value = has_value, .value = value, }; return result; } pureoption _pureoption_some(void *value) { return __pureoption_new(true, value); } pureoption pureoption_none(void) { return __pureoption_new(false, NULL); } bool pureoption_has(pureoption option) { return option.has_value; } bool pureoption_lacks(pureoption option) { return !option.has_value; } void *_pureoption_get(pureoption option) { return option.value; }