More main progress; tons of headers & stuff

Former-commit-id: a6e365791b
This commit is contained in:
2022-09-13 00:26:54 -04:00
parent c6823f56cd
commit 329618c585
95 changed files with 1673 additions and 202 deletions

View File

@@ -13,16 +13,33 @@ public:
optional_object(const T& item) : x0_item(item), x4_valid(true) {}
~optional_object() { clear(); }
optional_object& operator=(const T& item) {
assign(item);
return *this;
}
T& data() { return x0_item; }
T* get_ptr() { return &x0_item; }
operator bool() const { return x4_valid; }
void clear() {
rstl::destroy(&x0_item);
x4_valid = false;
}
T& operator*() { return data(); }
private:
T x0_item;
bool x4_valid;
void assign(const T& item) {
if (!x4_valid) {
rstl::construct(get_ptr(), item);
x4_valid = true;
} else {
data() = item;
}
}
};
} // namespace rstl