#[cfg(feature = "multi_threaded")]
use crate::message::MessageMutParIter;
use crate::{
message::{Message, MessageCursor, MessageMutIterator, MessageMutIteratorWithId, Messages},
system::{Local, ResMut, SystemParam},
};
#[derive(SystemParam, Debug)]
pub struct MessageMutator<'w, 's, E: Message> {
pub(super) reader: Local<'s, MessageCursor<E>>,
#[system_param(validation_message = "Message not initialized")]
messages: ResMut<'w, Messages<E>>,
}
impl<'w, 's, E: Message> MessageMutator<'w, 's, E> {
pub fn read(&mut self) -> MessageMutIterator<'_, E> {
self.reader.read_mut(&mut self.messages)
}
pub fn read_with_id(&mut self) -> MessageMutIteratorWithId<'_, E> {
self.reader.read_mut_with_id(&mut self.messages)
}
#[cfg(feature = "multi_threaded")]
pub fn par_read(&mut self) -> MessageMutParIter<'_, E> {
self.reader.par_read_mut(&mut self.messages)
}
pub fn len(&self) -> usize {
self.reader.len(&self.messages)
}
pub fn is_empty(&self) -> bool {
self.reader.is_empty(&self.messages)
}
pub fn clear(&mut self) {
self.reader.clear(&self.messages);
}
}