1#![cfg_attr(docsrs, feature(doc_cfg))]
4#![allow(clippy::missing_safety_doc)]
5#![allow(clippy::manual_c_str_literals)]
6#![allow(renamed_and_removed_lints)]
7#![doc = include_str!("../README.md")]
28
29pub use bitflags;
30#[doc(hidden)]
31pub use glib_macros::cstr_bytes;
32pub use glib_macros::{
33 async_test, clone, closure, closure_local, derived_properties, flags, object_interface,
34 object_subclass, Boxed, Downgrade, Enum, ErrorDomain, Properties, SharedBoxed, ValueDelegate,
35 Variant,
36};
37pub use glib_sys as ffi;
38pub use gobject_sys as gobject_ffi;
39
40pub use self::{
41 byte_array::ByteArray,
42 bytes::Bytes,
43 closure::{Closure, RustClosure},
44 enums::{EnumClass, EnumValue, FlagsBuilder, FlagsClass, FlagsValue, UserDirectory},
45 error::{BoolError, Error},
46 object::{BorrowedObject, Class, InitiallyUnowned, Interface, Object, SendWeakRef, WeakRef},
47 signal::{
48 signal_handler_block, signal_handler_disconnect, signal_handler_unblock,
49 signal_stop_emission_by_name, Propagation, SignalHandlerId,
50 },
51 types::{ILong, Pointer, Type, ULong},
52 value::{BoxedValue, SendValue, Value},
53 variant::{FixedSizeVariantArray, Variant},
54 variant_dict::VariantDict,
55 variant_iter::{VariantIter, VariantStrIter},
56 variant_type::{VariantTy, VariantTyIterator, VariantType},
57 FileError,
58};
59
60#[macro_export]
90macro_rules! function_name {
91 () => {{
92 fn f() {}
94 fn type_name_of<T>(_: T) -> &'static str {
95 std::any::type_name::<T>()
96 }
97 let name = type_name_of(f);
98 &name[..name.len() - 3]
100 }};
101}
102
103pub mod clone;
104#[macro_use]
105pub mod wrapper;
106#[macro_use]
107pub mod boxed;
108#[macro_use]
109pub mod boxed_inline;
110#[macro_use]
111pub mod shared;
112#[macro_use]
113pub mod error;
114#[macro_use]
115pub mod object;
116
117mod boxed_any_object;
118pub use boxed_any_object::BoxedAnyObject;
119mod exit_code;
120pub use exit_code::ExitCode;
121
122pub mod collections;
123pub use collections::{List, PtrSlice, SList, Slice, StrV};
124
125pub use self::auto::*;
126#[allow(clippy::too_many_arguments)]
127#[allow(clippy::type_complexity)]
128#[allow(unused_imports)]
129#[allow(non_upper_case_globals)]
130mod auto;
131
132#[cfg(feature = "v2_74")]
133#[cfg_attr(docsrs, doc(cfg(feature = "v2_74")))]
134pub use self::gobject::SignalGroup;
135pub use self::gobject::{
136 Binding, BindingFlags, InterfaceInfo, ParamFlags, SignalFlags, TypeFlags, TypeInfo, TypeModule,
137 TypePlugin, TypeValueTable,
138};
139#[cfg(feature = "v2_72")]
140#[cfg_attr(docsrs, doc(cfg(feature = "v2_72")))]
141pub use self::gobject::{BindingGroup, BindingGroupBuilder};
142
143mod gobject;
144
145mod byte_array;
146mod bytes;
147mod control_flow;
148pub use self::control_flow::ControlFlow;
149pub mod char;
150pub use self::char::{Char, UChar};
151mod checksum;
152pub mod closure;
153mod convert;
154pub use self::convert::*;
155pub mod enums;
156mod functions;
157pub use self::functions::*;
158mod key_file;
159pub mod prelude;
160pub mod signal;
161pub mod source;
162pub use self::source::*;
163#[macro_use]
164pub mod translate;
165mod gstring;
166pub use self::gstring::*;
167mod gstring_builder;
168pub use self::gstring_builder::GStringBuilder;
169pub mod types;
170mod unicollate;
171pub use self::unicollate::{CollationKey, FilenameCollationKey};
172mod utils;
173pub use self::utils::*;
174mod unichar;
175pub use self::unichar::*;
176mod main_context;
177pub use self::main_context::MainContextAcquireGuard;
178mod date;
179mod date_time;
180mod time_span;
181mod time_zone;
182pub use self::time_span::TimeSpan;
183pub mod value;
184pub mod variant;
185mod variant_dict;
186mod variant_iter;
187mod variant_type;
188pub use self::date::Date;
189mod value_array;
190pub use self::value_array::ValueArray;
191mod param_spec;
192pub use self::param_spec::*;
193pub mod property;
194mod quark;
195pub use self::quark::Quark;
196pub mod match_info;
197pub use self::match_info::MatchInfo;
198pub mod regex;
199#[macro_use]
200mod log;
201#[doc(hidden)]
202#[cfg(feature = "log_macros")]
203#[cfg_attr(docsrs, doc(cfg(feature = "log_macros")))]
204pub use rs_log;
205
206pub use self::log::{
207 log_default_handler, log_remove_handler, log_set_always_fatal, log_set_default_handler,
208 log_set_fatal_mask, log_set_handler, log_set_writer_func, log_structured_array,
209 log_unset_default_handler, log_variant, log_writer_default, log_writer_format_fields,
210 log_writer_journald, log_writer_standard_streams, set_print_handler, set_printerr_handler,
211 unset_print_handler, unset_printerr_handler, LogField, LogHandlerId, LogLevel, LogLevels,
212};
213#[cfg(feature = "v2_68")]
214pub use self::log::{log_writer_default_set_use_stderr, log_writer_default_would_drop};
215#[cfg(unix)]
216pub use self::log::{log_writer_is_journald, log_writer_supports_color};
217
218#[cfg(feature = "log")]
219#[cfg_attr(docsrs, doc(cfg(feature = "log")))]
220#[macro_use]
221mod bridged_logging;
222#[cfg(feature = "log")]
223#[cfg_attr(docsrs, doc(cfg(feature = "log")))]
224pub use self::bridged_logging::{rust_log_handler, GlibLogger, GlibLoggerDomain, GlibLoggerFormat};
225
226#[macro_use]
227pub mod subclass;
228
229mod main_context_futures;
230pub use main_context_futures::{JoinError, JoinHandle, SpawnWithinJoinHandle};
231mod source_futures;
232pub use self::source_futures::*;
233
234mod future_with_timeout;
235pub use self::future_with_timeout::*;
236
237mod thread_pool;
238pub use self::thread_pool::{ThreadHandle, ThreadPool};
239
240pub mod thread_guard;
241
242pub const CLONE_MACRO_LOG_DOMAIN: &str = "glib-rs-clone";
247
248#[cfg(target_family = "windows")]
249mod win32;
250
251#[cfg(target_family = "windows")]
252pub use self::win32::*;