#![cfg_attr(feature = "cargo-clippy", allow(doc_markdown))]
#[macro_use]
extern crate bitflags;
#[macro_use]
extern crate lazy_static;
extern crate libc;
#[doc(hidden)]
pub extern crate glib_sys as ffi;
#[doc(hidden)]
pub extern crate gobject_sys as gobject_ffi;
#[cfg(feature="futures")]
pub extern crate futures;
use std::ffi::CStr;
pub use bytes::Bytes;
pub use string::String;
pub use closure::Closure;
pub use error::{Error, BoolError};
pub use file_error::FileError;
pub use object::{
Cast,
IsA,
IsClassFor,
Object,
ObjectExt,
ObjectClass,
ObjectType,
InitiallyUnowned,
InitiallyUnownedClass,
WeakRef,
SendWeakRef,
};
pub use signal::{
SignalHandlerId,
signal_handler_block,
signal_handler_disconnect,
signal_handler_unblock,
signal_stop_emission_by_name
};
pub use types::{
StaticType,
Type,
};
pub use value::{
ToValue,
ToSendValue,
TypedValue,
SendValue,
Value,
};
pub use variant::{
StaticVariantType,
ToVariant,
Variant,
};
pub use variant_type::{
VariantTy,
VariantType,
};
pub use time_val::{
TimeVal,
get_current_time,
};
pub use enums::{
UserDirectory,
EnumClass,
EnumValue,
FlagsClass,
FlagsValue,
FlagsBuilder,
};
#[macro_use]
pub mod wrapper;
#[macro_use]
pub mod boxed;
#[macro_use]
pub mod shared;
#[macro_use]
pub mod error;
#[macro_use]
pub mod object;
pub use auto::*;
pub use auto::functions::*;
#[cfg_attr(feature = "cargo-clippy", allow(let_and_return))]
#[cfg_attr(feature = "cargo-clippy", allow(let_unit_value))]
#[cfg_attr(feature = "cargo-clippy", allow(too_many_arguments))]
#[allow(non_upper_case_globals)]
mod auto;
pub use gobject::*;
mod gobject;
mod bytes;
mod string;
pub mod char;
pub use char::*;
mod checksum;
pub mod closure;
mod enums;
mod file_error;
mod key_file;
pub mod prelude;
pub mod signal;
pub mod source;
pub use source::*;
mod time_val;
#[macro_use]
pub mod translate;
mod gstring;
pub use gstring::GString;
pub mod types;
mod utils;
pub use utils::*;
pub mod value;
pub mod variant;
mod variant_type;
mod main_context;
mod main_context_channel;
pub use main_context_channel::{Sender, SyncSender, Receiver};
mod date;
pub use date::Date;
mod value_array;
pub use value_array::ValueArray;
mod param_spec;
pub use param_spec::ParamSpec;
mod quark;
pub use quark::Quark;
pub mod send_unique;
pub use send_unique::{
SendUniqueCell,
SendUnique,
};
#[cfg(feature="futures")]
mod main_context_futures;
#[cfg(feature="futures")]
mod source_futures;
#[cfg(feature="futures")]
pub use source_futures::*;
use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT};
fn next_thread_id() -> usize {
static mut COUNTER: AtomicUsize = ATOMIC_USIZE_INIT;
unsafe { COUNTER.fetch_add(1, Ordering::SeqCst) }
}
pub(crate) fn get_thread_id() -> usize {
thread_local!(static THREAD_ID: usize = next_thread_id());
THREAD_ID.with(|&x| x)
}
#[macro_use]
#[cfg(any(feature = "dox", feature="subclassing"))]
pub mod subclass;