diff options
Diffstat (limited to 'stdlib/optionals.h')
| -rw-r--r-- | stdlib/optionals.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/stdlib/optionals.h b/stdlib/optionals.h index 7d52375b..53f2aa9b 100644 --- a/stdlib/optionals.h +++ b/stdlib/optionals.h @@ -25,6 +25,20 @@ #define NONE_MOMENT ((OptionalMoment_t){.tv_usec=-1}) PUREFUNC bool is_null(const void *obj, const TypeInfo_t *non_optional_type); +PUREFUNC uint64_t Optional$hash(const void *obj, const TypeInfo_t *type); +PUREFUNC int32_t Optional$compare(const void *x, const void *y, const TypeInfo_t *type); +PUREFUNC bool Optional$equal(const void *x, const void *y, const TypeInfo_t *type); Text_t Optional$as_text(const void *obj, bool colorize, const TypeInfo_t *type); +#define Optional$metamethods ((metamethods_t){ \ + .hash=Optional$hash, \ + .compare=Optional$compare, \ + .equal=Optional$equal, \ + .as_text=Optional$as_text, \ +}) + +#define Optional$info(_size, _align, t) &((TypeInfo_t){.size=_size, .align=_align, \ + .tag=OptionalInfo, .OptionalInfo.type=t, \ + .metamethods=Optional$metamethods}) + // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 |
