use crate::{QByteArray, QString, QStringList, QVector};
use core::pin::Pin;
#[cxx::bridge]
mod ffi {
unsafe extern "C++" {
include!("cxx-qt-lib/qbytearray.h");
type QByteArray = crate::QByteArray;
include!("cxx-qt-lib/qstring.h");
type QString = crate::QString;
include!("cxx-qt-lib/qstringlist.h");
type QStringList = crate::QStringList;
include!("cxx-qt-lib/qvector.h");
type QVector_QByteArray = crate::QVector<QByteArray>;
include!("cxx-qt-lib/qcoreapplication.h");
type QCoreApplication;
}
#[namespace = "rust::cxxqtlib1"]
unsafe extern "C++" {
#[doc(hidden)]
#[rust_name = "qcoreapplication_new"]
fn qcoreapplicationNew(args: &QVector_QByteArray) -> UniquePtr<QCoreApplication>;
}
#[namespace = "rust::cxxqtlib1"]
unsafe extern "C++" {
#[doc(hidden)]
#[rust_name = "qcoreapplication_add_library_path"]
fn qapplicationAddLibraryPath(app: Pin<&mut QCoreApplication>, path: &QString);
#[doc(hidden)]
#[rust_name = "qcoreapplication_application_name"]
fn qapplicationApplicationName(app: &QCoreApplication) -> QString;
#[doc(hidden)]
#[rust_name = "qcoreapplication_application_version"]
fn qapplicationApplicationVersion(app: &QCoreApplication) -> QString;
#[doc(hidden)]
#[rust_name = "qcoreapplication_exec"]
fn qapplicationExec(app: Pin<&mut QCoreApplication>) -> i32;
#[doc(hidden)]
#[rust_name = "qcoreapplication_library_paths"]
fn qapplicationLibraryPaths(app: &QCoreApplication) -> QStringList;
#[doc(hidden)]
#[rust_name = "qcoreapplication_organization_domain"]
fn qapplicationOrganizationDomain(app: &QCoreApplication) -> QString;
#[doc(hidden)]
#[rust_name = "qcoreapplication_organization_name"]
fn qapplicationOrganizationName(app: &QCoreApplication) -> QString;
#[doc(hidden)]
#[rust_name = "qcoreapplication_set_application_name"]
fn qapplicationSetApplicationName(app: Pin<&mut QCoreApplication>, name: &QString);
#[doc(hidden)]
#[rust_name = "qcoreapplication_set_application_version"]
fn qapplicationSetApplicationVersion(app: Pin<&mut QCoreApplication>, version: &QString);
#[doc(hidden)]
#[rust_name = "qcoreapplication_set_library_paths"]
fn qapplicationSetLibraryPaths(app: Pin<&mut QCoreApplication>, paths: &QStringList);
#[doc(hidden)]
#[rust_name = "qcoreapplication_set_organization_domain"]
fn qapplicationSetOrganizationDomain(app: Pin<&mut QCoreApplication>, domain: &QString);
#[doc(hidden)]
#[rust_name = "qcoreapplication_set_organization_name"]
fn qapplicationSetOrganizationName(app: Pin<&mut QCoreApplication>, name: &QString);
}
impl UniquePtr<QCoreApplication> {}
}
pub use ffi::QCoreApplication;
impl QCoreApplication {
pub fn add_library_path(self: Pin<&mut Self>, path: &QString) {
ffi::qcoreapplication_add_library_path(self, path);
}
pub fn application_name(&self) -> QString {
ffi::qcoreapplication_application_name(self)
}
pub fn application_version(&self) -> QString {
ffi::qcoreapplication_application_version(self)
}
pub fn exec(self: Pin<&mut Self>) -> i32 {
ffi::qcoreapplication_exec(self)
}
pub fn library_paths(&self) -> QStringList {
ffi::qcoreapplication_library_paths(self)
}
pub fn new() -> cxx::UniquePtr<Self> {
let mut vector = QVector::<QByteArray>::default();
for arg in std::env::args_os() {
#[cfg(unix)]
use std::os::unix::ffi::OsStrExt;
#[cfg(windows)]
let arg = arg.to_string_lossy();
vector.append(QByteArray::from(arg.as_bytes()));
}
ffi::qcoreapplication_new(&vector)
}
pub fn organization_domain(&self) -> QString {
ffi::qcoreapplication_organization_domain(self)
}
pub fn organization_name(&self) -> QString {
ffi::qcoreapplication_organization_name(self)
}
pub fn set_application_name(self: Pin<&mut Self>, name: &QString) {
ffi::qcoreapplication_set_application_name(self, name);
}
pub fn set_application_version(self: Pin<&mut Self>, version: &QString) {
ffi::qcoreapplication_set_application_version(self, version);
}
pub fn set_library_paths(self: Pin<&mut Self>, paths: &QStringList) {
ffi::qcoreapplication_set_library_paths(self, paths);
}
pub fn set_organization_domain(self: Pin<&mut Self>, domain: &QString) {
ffi::qcoreapplication_set_organization_domain(self, domain);
}
pub fn set_organization_name(self: Pin<&mut Self>, name: &QString) {
ffi::qcoreapplication_set_organization_name(self, name);
}
}