some more core refactor before fixing the mess

This commit is contained in:
🪞👃🪞 2024-09-06 20:11:10 +03:00
parent fe09536a45
commit 0bbf74e915
12 changed files with 31 additions and 28 deletions

View file

@ -1,6 +1,12 @@
use jack::*;
use crate::*;
submod! {
device
event
ports
}
/// A UI component that may be associated with a JACK client by the `Jack` factory.
pub trait Device<E: Engine>: Component<E> + Process {
/// Perform type erasure for collecting heterogeneous devices.
@ -228,4 +234,3 @@ fn query_ports (
ports
})
}

View file

@ -1,4 +1,5 @@
use crate::{*, jack::*};
use ::jack::*;
use crate::*;
/// A [Device] bound to a JACK client and a set of ports.
pub struct JackDevice<E: Engine> {
@ -62,3 +63,4 @@ impl<E: Engine> JackDevice<E> {
}
}

View file

@ -1,4 +1,5 @@
use crate::jack::*;
use ::jack::*;
use crate::*;
/// Notification handler used by the [Jack] factory
/// when constructing [JackDevice]s.
@ -68,4 +69,3 @@ impl<T: Fn(JackEvent) + Send> NotificationHandler for Notifications<T> {
Control::Continue
}
}

View file

@ -1,4 +1,5 @@
use crate::{*, jack::*};
use ::jack::*;
use crate::*;
/// Collection of JACK ports as [AudioIn]/[AudioOut]/[MidiIn]/[MidiOut].
#[derive(Default, Debug)]
@ -91,4 +92,3 @@ pub trait Ports {
)?}
};
}

View file

@ -25,6 +25,9 @@ pub trait HandleContext {}
pub trait RenderContext {}
submod! {
render
exit
focus
handle
keymap
render
}

View file

@ -8,6 +8,16 @@ pub trait Exit: Send {
}
}
/// Marker trait for [Component]s that can [Exit]
pub trait ExitableComponent<E>: Exit + Component<E> where E: Engine {
/// Perform type erasure for collecting heterogeneous components.
fn boxed (self) -> Box<dyn ExitableComponent<E>> where Self: Sized + 'static {
Box::new(self)
}
}
impl<E: Engine, C: Component<E> + Exit> ExitableComponent<E> for C {}
#[macro_export] macro_rules! exit {
($T:ty) => {
impl Exit for $T {
@ -20,13 +30,3 @@ pub trait Exit: Send {
}
}
}
/// Marker trait for [Component]s that can [Exit]
pub trait ExitableComponent<E>: Exit + Component<E> where E: Engine {
/// Perform type erasure for collecting heterogeneous components.
fn boxed (self) -> Box<dyn ExitableComponent<E>> where Self: Sized + 'static {
Box::new(self)
}
}
impl<E: Engine, C: Component<E> + Exit> ExitableComponent<E> for C {}

View file

@ -27,16 +27,10 @@ use better_panic::{Settings, Verbosity};
}
submod! {
audio
component
edn
engine
exit
focus
jack_core
jack_device
jack_event
jack_ports
keymap
space
time
tui

View file

@ -1 +0,0 @@
use crate::*;