aboutsummaryrefslogtreecommitdiff
path: root/stdlib/optionals.h
blob: 34ea3b41ffa33bdc5b1b191cf52a6fa4c8ac9c83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once

// Optional types

#include <stdbool.h>
#include <stdint.h>

#include "datatypes.h"
#include "integers.h"
#include "types.h"
#include "util.h"

#define OptionalBool_t uint8_t
#define OptionalArray_t Array_t
#define OptionalTable_t Table_t
#define OptionalText_t Text_t
#define OptionalClosure_t Closure_t

extern const OptionalBool_t NULL_BOOL;
extern const OptionalTable_t NULL_TABLE;
extern const OptionalArray_t NULL_ARRAY;
extern const OptionalInt_t NULL_INT;
extern const OptionalClosure_t NULL_CLOSURE;
extern const OptionalText_t NULL_TEXT;

PUREFUNC bool is_null(const void *obj, const TypeInfo *non_optional_type);
Text_t Optional$as_text(const void *obj, bool colorize, const TypeInfo *type);

// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0