1#![warn(unused_extern_crates)]
38#![feature(associated_type_defaults)]
39#![feature(decl_macro)]
40#![cfg_attr(docsrs, feature(doc_cfg))]
41
42#[doc(hidden)] pub use serde;
43#[doc(hidden)] pub use strum;
44
45pub use id_tree as tree;
46pub use tree::Tree;
47pub use nsys::{geometry, math};
48
49pub mod application;
50pub mod interface;
51pub mod presentation;
52pub mod utils;
53pub mod widget;
54
55pub mod prelude;
56
57pub use self::application::Application;
58pub use self::interface::Interface;
59pub use self::presentation::Presentation;
60pub use self::utils::TreeHelper;
61pub use self::widget::Widget;
62
63#[doc(hidden)]
64#[expect(unused_macros)]
65pub (crate) macro debug {
66 ($e:expr) => {
67 log::debug!("{}: {:?}", stringify!($e), $e);
68 }
69}
70
71#[doc(hidden)]
72#[expect(unused_macros)]
73pub (crate) macro pretty {
74 ($e:expr) => {
75 log::debug!("{}: {:#?}", stringify!($e), $e);
76 }
77}
78
79#[expect(unused_imports)]
81use log;
82
83#[doc(hidden)]
84macro_rules! show {
85 ($e:expr) => { println!("{}: {:?}", stringify!($e), $e); }
86}
87
88pub fn report_sizes() {
90 use std::mem::size_of;
91 println!("gooey: report sizes...");
92
93 show!(size_of::<Interface>());
94 show!(size_of::<interface::Element>());
95 show!(size_of::<interface::Model>());
96 show!(size_of::<interface::Controller>());
97 show!(size_of::<interface::controller::Appearances>());
98 show!(size_of::<interface::controller::component::Layout>());
99 show!(size_of::<interface::View>());
100 show!(size_of::<interface::view::component::Canvas>());
101 show!(size_of::<interface::Action>());
102 show!(size_of::<interface::model::Event>());
103 show!(size_of::<interface::view::Input>());
104
105 #[cfg(feature="curses")]
106 show!(size_of::<Interface <application::Default, presentation::Curses>>());
107 #[cfg(feature="fmod")]
108 show!(size_of::<Interface <application::Default, presentation::Fmod>>());
109
110 println!("gooey: ...report sizes");
111}