#pragma once #include class Bitmap { public: Bitmap(); Bitmap(void* location, usize size_in_bytes); void initialize(void* location, usize size_in_bytes); void* move(void* new_location, usize new_location_size_in_bytes); void set(usize index, bool value); bool get(usize index) const; // size() returns size in bits! If you want the size in bytes, call size_in_bytes(). usize size() const { return m_size_in_bytes * 8; } usize size_in_bytes() const { return m_size_in_bytes; } void* location() const { return (void*)m_location; } bool initialized() const { return m_location; } void clear(bool value); void clear_region(usize start, usize bits, bool value); private: u8 value_byte(bool b) { return b ? 0xff : 0; } u8* m_location = nullptr; usize m_size_in_bytes = 0; };