diff --git a/AK/Bitmap.h b/AK/Bitmap.h index 667de7bd139..d06033d461d 100644 --- a/AK/Bitmap.h +++ b/AK/Bitmap.h @@ -1,13 +1,15 @@ #pragma once -#include "Assertions.h" -#include "StdLibExtras.h" -#include "Types.h" -#include "kmalloc.h" +#include +#include +#include +#include +#include namespace AK { class Bitmap { + AK_MAKE_NONCOPYABLE(Bitmap) public: // NOTE: A wrapping Bitmap won't try to free the wrapped data. static Bitmap wrap(u8* data, int size) @@ -25,6 +27,25 @@ public: return Bitmap(); } + Bitmap(Bitmap&& other) + { + m_owned = exchange(other.m_owned, false); + m_data = exchange(other.m_data, nullptr); + m_size = exchange(other.m_size, 0); + } + + Bitmap& operator=(Bitmap&& other) + { + if (this != &other) { + if (m_owned) + kfree(m_data); + m_owned = exchange(other.m_owned, false); + m_data = exchange(other.m_data, nullptr); + m_size = exchange(other.m_size, 0); + } + return *this; + } + ~Bitmap() { if (m_owned)