WIP: next #1
|
@ -388,6 +388,15 @@ void sp_bitmap_fill(Bitmap */*notnull*/ bitmap, bool value);
|
||||||
*/
|
*/
|
||||||
void sp_bitmap_free(Bitmap */*notnull*/ bitmap);
|
void sp_bitmap_free(Bitmap */*notnull*/ bitmap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tries to convert the BitVec to a Bitmap.
|
||||||
|
*
|
||||||
|
* The provided BitVec gets consumed.
|
||||||
|
*
|
||||||
|
* Returns NULL in case of error.
|
||||||
|
*/
|
||||||
|
Bitmap *sp_bitmap_from_bitvec(size_t width, SPBitVec */*notnull*/ bitvec);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current value at the specified position in the [Bitmap].
|
* Gets the current value at the specified position in the [Bitmap].
|
||||||
*
|
*
|
||||||
|
|
|
@ -68,6 +68,24 @@ pub unsafe extern "C" fn sp_bitmap_load(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Tries to convert the BitVec to a Bitmap.
|
||||||
|
///
|
||||||
|
/// The provided BitVec gets consumed.
|
||||||
|
///
|
||||||
|
/// Returns NULL in case of error.
|
||||||
|
#[no_mangle]
|
||||||
|
pub unsafe extern "C" fn sp_bitmap_from_bitvec(
|
||||||
|
width: usize,
|
||||||
|
bitvec: NonNull<SPBitVec>,
|
||||||
|
) -> *mut Bitmap {
|
||||||
|
let bitvec = unsafe { *Box::from_raw(bitvec.as_ptr()) };
|
||||||
|
if let Ok(bitmap) = Bitmap::from_bitvec(width, bitvec.0) {
|
||||||
|
heap_move(bitmap)
|
||||||
|
} else {
|
||||||
|
std::ptr::null_mut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Clones a [Bitmap].
|
/// Clones a [Bitmap].
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub unsafe extern "C" fn sp_bitmap_clone(
|
pub unsafe extern "C" fn sp_bitmap_clone(
|
||||||
|
|
Loading…
Reference in a new issue