use core::ffi::{c_char, c_double, c_int, c_long, c_uint, c_ushort};

use crate::random;

#[no_mangle]
unsafe extern "C" fn drand48() -> c_double {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn erand48(_xsubi: *mut c_ushort) -> c_double {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn jrand48(_xsubi: *mut c_ushort) -> c_long {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn lcong48(_xsubi: *mut c_ushort) {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn lrand48() -> c_long {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn mrand48() -> c_long {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn nrand48(_xsubi: *mut c_ushort) -> c_long {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn rand() -> c_int {
    random::random_u64() as _
}

#[no_mangle]
unsafe extern "C" fn rand_r(_seed: *mut c_uint) -> c_int {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn random() -> c_long {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn srand(seed: c_uint) {
    random::seed_u64(seed as _);
}

#[no_mangle]
unsafe extern "C" fn srand48(_seed: c_long) {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn srandom(_seed: c_uint) {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn initstate(_seed: c_uint, _state: *mut c_char, _n: usize) -> *mut c_char {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn setstate(_state: *mut c_char) -> *mut c_char {
    todo!()
}

#[no_mangle]
unsafe extern "C" fn seed48(_xsubi: *mut c_ushort) -> *mut c_ushort {
    todo!()
}
