wip generic wrap

This commit is contained in:
Vinzenz Schroeter 2025-06-26 20:42:31 +02:00
parent 82696b2d1a
commit 5beea6151a
15 changed files with 83 additions and 59 deletions

View file

@ -1,6 +1,6 @@
use crate::{
containers::{wrap_grid, ByteSlice},
macros::{wrap_functions, wrap_methods},
macros::{wrap, wrap_functions},
};
use servicepoint::{
Bitmap, BitmapCommand, CompressionCode, DataRef, DisplayBitVec, Grid,
@ -74,9 +74,9 @@ wrap_functions!(associate Bitmap;
};
);
wrap_methods!(Bitmap;
wrap!(Bitmap;
/// Consumes the Bitmap and returns the contained BitVec.
fn into_bitvec(move bitmap) -> move NonNull<DisplayBitVec> {
method into_bitvec(move bitmap) -> move NonNull<DisplayBitVec> {
bitmap.into()
};
@ -85,7 +85,7 @@ wrap_methods!(Bitmap;
/// The provided [Bitmap] gets consumed.
///
/// Returns NULL in case of an error.
fn try_into_packet(move bitmap, x: val usize, y: val usize, compression: val CompressionCode) -> move_ok *mut Packet {
method try_into_packet(move bitmap, x: val usize, y: val usize, compression: val CompressionCode) -> move_ok *mut Packet {
Packet::try_from(BitmapCommand {
bitmap,
origin: Origin::new(x, y),
@ -96,5 +96,5 @@ wrap_methods!(Bitmap;
/// Gets an unsafe reference to the data of the [Bitmap] instance.
///
/// The returned memory is valid for the lifetime of the bitmap.
fn data_ref_mut(mut instance) -> slice ByteSlice;
method data_ref_mut(mut instance) -> slice ByteSlice;
);

View file

@ -1,6 +1,6 @@
use crate::{
containers::{wrap_container, ByteSlice},
macros::{wrap_functions, wrap_methods},
macros::{wrap, wrap_functions},
};
use servicepoint::{
BinaryOperation, BitVecCommand, CompressionCode, DisplayBitVec, Packet,
@ -33,13 +33,13 @@ wrap_functions!(associate DisplayBitVec;
};
);
wrap_methods!(DisplayBitVec;
wrap!(DisplayBitVec;
/// Creates a [BitVecCommand] and immediately turns that into a [Packet].
///
/// The provided [DisplayBitVec] gets consumed.
///
/// Returns NULL in case of an error.
fn try_into_packet(
method try_into_packet(
move bitvec,
offset: val usize,
operation: val BinaryOperation,
@ -65,7 +65,7 @@ wrap_methods!(DisplayBitVec;
/// # Panics
///
/// - when accessing `index` out of bounds
fn get(ref instance, index: val usize) -> val bool {
method get(ref instance, index: val usize) -> val bool {
instance.get(index).map(|x| *x).unwrap_or(false)
};
@ -79,23 +79,23 @@ wrap_methods!(DisplayBitVec;
/// # Panics
///
/// - when accessing `index` out of bounds
fn set(mut instance, index: val usize, value: val bool);
method set(mut instance, index: val usize, value: val bool);
/// Sets the value of all bits.
///
/// # Arguments
///
/// - `value`: the value to set all bits to
fn fill(mut instance, value: val bool);
method fill(mut instance, value: val bool);
/// Gets the length in bits.
fn len(ref instance) -> val usize;
method len(ref instance) -> val usize;
/// Returns true if length is 0.
fn is_empty(ref instance) -> val bool;
method is_empty(ref instance) -> val bool;
/// Gets an unsafe reference to the data of the [DisplayBitVec] instance.
///
/// The returned memory is valid for the lifetime of the bitvec.
fn as_raw_mut_slice(mut instance) -> slice ByteSlice;
method as_raw_mut_slice(mut instance) -> slice ByteSlice;
);

View file

@ -1,6 +1,6 @@
use crate::{
containers::{wrap_grid, ByteSlice},
macros::{wrap_functions, wrap_methods},
macros::{wrap, wrap_functions},
};
use servicepoint::{
Brightness, BrightnessGrid, BrightnessGridCommand, ByteGrid, DataRef, Grid,
@ -47,13 +47,13 @@ wrap_functions!(associate BrightnessGrid;
};
);
wrap_methods!(BrightnessGrid;
wrap!(BrightnessGrid;
/// Creates a [BrightnessGridCommand] and immediately turns that into a [Packet].
///
/// The provided [BrightnessGrid] gets consumed.
///
/// Returns NULL in case of an error.
fn try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
method try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
Packet::try_from(BrightnessGridCommand {
grid,
origin: Origin::new(x, y),
@ -63,7 +63,7 @@ wrap_methods!(BrightnessGrid;
/// Gets an unsafe reference to the data of the instance.
///
/// The returned memory is valid for the lifetime of the grid.
fn data_ref_mut(mut instance) -> slice ByteSlice {
method data_ref_mut(mut instance) -> slice ByteSlice {
//noinspection RsAssertEqual
const _: () = assert!(size_of::<Brightness>() == 1);

View file

@ -1,6 +1,6 @@
use crate::{
containers::{derive_get_width_height, wrap_container, ByteSlice},
macros::{wrap_functions, wrap_methods},
macros::{wrap, wrap_functions},
};
use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet};
use std::ptr::NonNull;
@ -33,8 +33,7 @@ wrap_functions!(associate CharGrid;
};
);
wrap_methods!(CharGrid;
wrap!(CharGrid;
/// Returns the current value at the specified position.
///
/// # Arguments
@ -44,7 +43,7 @@ wrap_methods!(CharGrid;
/// # Panics
///
/// - when accessing `x` or `y` out of bounds
fn get(ref instance, x: val usize, y: val usize) -> val u32 {
method get(ref instance, x: val usize, y: val usize) -> val u32 {
instance.get(x, y) as u32
};
@ -61,7 +60,7 @@ wrap_methods!(CharGrid;
///
/// - when accessing `x` or `y` out of bounds
/// - when providing values that cannot be converted to Rust's `char`.
fn set(mut instance, x: val usize, y: val usize, value: val u32) {
method set(mut instance, x: val usize, y: val usize, value: val u32) {
instance.set(x, y, char::from_u32(value).unwrap())
};
@ -71,7 +70,7 @@ wrap_methods!(CharGrid;
///
/// - `value`: the value to set all cells to
/// - when providing values that cannot be converted to Rust's `char`.
fn fill(mut instance, value: val u32) {
method fill(mut instance, value: val u32) {
instance.fill(char::from_u32(value).unwrap())
};
@ -80,7 +79,7 @@ wrap_methods!(CharGrid;
/// The provided [CharGrid] gets consumed.
///
/// Returns NULL in case of an error.
fn try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
method try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
Packet::try_from(CharGridCommand {
grid,
origin: Origin::new(x, y),

View file

@ -1,6 +1,6 @@
use crate::{
containers::{wrap_grid, ByteSlice},
macros::{wrap_functions, wrap_methods},
macros::{wrap, wrap_functions},
};
use servicepoint::{
Cp437Grid, Cp437GridCommand, DataRef, Grid, Origin, Packet,
@ -23,13 +23,13 @@ wrap_functions!(associate Cp437Grid;
};
);
wrap_methods!(Cp437Grid;
wrap!(Cp437Grid;
/// Creates a [Cp437GridCommand] and immediately turns that into a [Packet].
///
/// The provided [Cp437Grid] gets consumed.
///
/// Returns NULL in case of an error.
fn try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
method try_into_packet(move grid, x: val usize, y: val usize) -> move_ok *mut Packet {
Packet::try_from(Cp437GridCommand {
grid,
origin: Origin::new(x, y),
@ -39,5 +39,5 @@ wrap_methods!(Cp437Grid;
/// Gets an unsafe reference to the data of the grid.
///
/// The returned memory is valid for the lifetime of the instance.
fn data_ref_mut(mut instance) -> slice ByteSlice;
method data_ref_mut(mut instance) -> slice ByteSlice;
);