2022-11-20 14:15:26 +00:00
|
|
|
#pragma once
|
2022-11-20 14:48:08 +00:00
|
|
|
#include <PlacementNew.h>
|
2022-11-20 14:15:26 +00:00
|
|
|
#include <Result.h>
|
|
|
|
|
|
|
|
Result<void*> kmalloc(usize size);
|
|
|
|
Result<void*> kcalloc(usize nmemb, usize size);
|
|
|
|
Result<void*> krealloc(void* ptr, usize size);
|
2022-11-20 14:48:08 +00:00
|
|
|
Result<void> kfree(void* ptr);
|
|
|
|
|
|
|
|
template <typename T> Result<T*> make()
|
|
|
|
{
|
|
|
|
void* ptr = TRY(kcalloc(1, sizeof(T)));
|
|
|
|
return new (ptr) T;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <typename T> Result<void> destroy(T* item)
|
|
|
|
{
|
|
|
|
item->~T();
|
|
|
|
return kfree(item);
|
|
|
|
}
|