/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */
//! Our implementations of various things that Apple's libSystem would provide.
//! On other platforms these are part of the "libc", so let's call it that.
//!
//! Useful resources:
//! - Apple's [iOS Manual Pages](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/) (contains what would be `man` pages if iOS had a command line)

mod generic_char;

pub mod ctype;
pub mod cxxabi;
pub mod dlfcn;
pub mod errno;
pub mod ifaddrs;
pub mod keymgr;
pub mod mach_thread_info;
pub mod mach_time;
pub mod math;
pub mod mmap;
pub mod net;
pub mod posix_io;
pub mod pthread;
pub mod semaphore;
pub mod setjmp;
pub mod stdio;
pub mod stdlib;
pub mod string;
pub mod sysctl;
pub mod time;
pub mod unistd;
pub mod wchar;

/// Container for state of various child modules
#[derive(Default)]
pub struct State {
    keymgr: keymgr::State,
    posix_io: posix_io::State,
    pthread: pthread::State,
    pub semaphore: semaphore::State,
    stdlib: stdlib::State,
    string: string::State,
    time: time::State,
    errno: errno::State,
}
