ona/source/kym.cpp

50 lines
698 B
C++

export module kym;
import coral;
import coral.math;
export namespace kym {
enum class value_type {
nil,
boolean,
integer,
scalar,
vector2,
vector3,
object,
};
struct value {
value_type type;
union {
bool boolean;
coral::i64 integer;
coral::f64 scalar;
coral::vector2 vector2;
coral::vector3 vector3;
void * object;
} as;
coral::optional<coral::u16> as_u16() const {
if ((this->type == value_type::integer) &&
(this->as.integer >= 0) && (this->as.integer <= coral::u16_max)) {
return static_cast<coral::u16>(this->as.integer);
}
return {};
}
};
value nil = {
.type = value_type::nil,
.as = {.object = nullptr},
};
};