use std::os::raw::{c_double, c_int};
unsafe extern "C" {
pub fn cp2k_is_qs_env(env_id: c_int) -> c_int;
pub fn cp2k_get_stress_tensor(env_id: c_int, stress: *mut c_double);
pub fn cp2k_get_virial_tensor(env_id: c_int, virial_tensor: *mut c_double);
pub fn cp2k_get_nmo(env_id: c_int, spin: c_int) -> c_int;
pub fn cp2k_get_eigenvalues(
env_id: c_int,
spin: c_int,
eigenvalues: *mut c_double,
nmax: c_int,
) -> c_int;
pub fn cp2k_get_occupation_numbers(
env_id: c_int,
spin: c_int,
occupations: *mut c_double,
nmax: c_int,
) -> c_int;
pub fn cp2k_get_homo_lumo(
env_id: c_int,
spin: c_int,
homo_energy: *mut c_double,
lumo_energy: *mut c_double,
homo_index: *mut c_int,
lumo_index: *mut c_int,
) -> c_int;
pub fn cp2k_get_mulliken_charges(env_id: c_int, charges: *mut c_double, natom: c_int) -> c_int;
pub fn cp2k_get_dipole_moment(env_id: c_int, dipole: *mut c_double) -> c_int;
pub fn cp2k_get_scf_info(
env_id: c_int,
niter: *mut c_int,
converged: *mut c_int,
energy_change: *mut c_double,
) -> c_int;
pub fn cp2k_get_energy_components(
env_id: c_int,
e_kinetic: *mut c_double,
e_hartree: *mut c_double,
e_xc: *mut c_double,
e_core: *mut c_double,
e_total: *mut c_double,
) -> c_int;
pub fn cp2k_get_nelectron(env_id: c_int, nelectron: *mut c_int) -> c_int;
pub fn cp2k_get_fermi_energy(env_id: c_int, e_fermi: *mut c_double) -> c_int;
pub fn cp2k_get_hirshfeld_charges(env_id: c_int, charges: *mut c_double, natom: c_int)
-> c_int;
pub fn cp2k_get_total_spin(env_id: c_int, total_spin: *mut c_double) -> c_int;
pub fn cp2k_get_grid_info(
env_id: c_int,
spin: c_int,
npts: *mut c_int,
origin: *mut c_double,
dh: *mut c_double,
) -> c_int;
pub fn cp2k_get_electron_density_grid(
env_id: c_int,
spin: c_int,
density: *mut c_double,
nmax: c_int,
) -> c_int;
pub fn cp2k_get_mo_coeff_info(
env_id: c_int,
spin: c_int,
nao: *mut c_int,
nmo: *mut c_int,
) -> c_int;
pub fn cp2k_get_mo_coefficients(
env_id: c_int,
spin: c_int,
coeffs: *mut c_double,
nmax: c_int,
) -> c_int;
pub fn cp2k_get_nkpoints(env_id: c_int) -> c_int;
pub fn cp2k_get_kpoint_eigenvalues(
env_id: c_int,
kpt_idx: c_int,
spin: c_int,
eigenvalues: *mut c_double,
nmax: c_int,
) -> c_int;
}