use crate::{QList, QString};
use core::mem::MaybeUninit;
use cxx::{type_id, ExternType};
#[cxx::bridge]
mod ffi {
#[namespace = "Qt"]
unsafe extern "C++" {
include!("cxx-qt-lib/qt.h");
type CaseSensitivity = crate::CaseSensitivity;
}
unsafe extern "C++" {
include!("cxx-qt-lib/qstring.h");
type QString = crate::QString;
include!("cxx-qt-lib/qlist.h");
type QList_QString = crate::QList<QString>;
include!("cxx-qt-lib/qstringlist.h");
type QStringList = super::QStringList;
fn contains(self: &QStringList, str: &QString, cs: CaseSensitivity) -> bool;
fn filter(self: &QStringList, str: &QString, cs: CaseSensitivity) -> QStringList;
fn join(self: &QStringList, separator: &QString) -> QString;
fn sort(self: &mut QStringList, cs: CaseSensitivity);
}
#[namespace = "rust::cxxqtlib1"]
unsafe extern "C++" {
include!("cxx-qt-lib/common.h");
#[doc(hidden)]
#[rust_name = "qstringlist_clone"]
fn construct(list: &QStringList) -> QStringList;
#[doc(hidden)]
#[rust_name = "qstringlist_drop"]
fn drop(url: &mut QStringList);
#[doc(hidden)]
#[rust_name = "qstringlist_default"]
fn construct() -> QStringList;
#[doc(hidden)]
#[rust_name = "qstringlist_from_qstring"]
fn construct(string: &QString) -> QStringList;
#[doc(hidden)]
#[rust_name = "qstringlist_eq"]
fn operatorEq(a: &QStringList, b: &QStringList) -> bool;
#[doc(hidden)]
#[rust_name = "qstringlist_to_qstring"]
fn toQString(value: &QStringList) -> QString;
}
#[namespace = "rust::cxxqtlib1"]
unsafe extern "C++" {
#[doc(hidden)]
#[rust_name = "qstringlist_from_qlist_qstring"]
fn qstringlistFromQListQString(list: &QList_QString) -> QStringList;
#[doc(hidden)]
#[rust_name = "qstringlist_as_qlist_qstring"]
fn qstringlistAsQListQString(list: &QStringList) -> QList_QString;
#[doc(hidden)]
#[rust_name = "qstringlist_remove_duplicates"]
fn qstringlistRemoveDuplicates(list: &mut QStringList) -> isize;
}
}
#[repr(C)]
pub struct QStringList {
#[cfg(qt_version_major = "5")]
_space: MaybeUninit<usize>,
#[cfg(qt_version_major = "6")]
_space: MaybeUninit<[usize; 3]>,
}
impl QStringList {
pub fn remove_duplicates(&mut self) -> isize {
ffi::qstringlist_remove_duplicates(self)
}
}
impl Clone for QStringList {
fn clone(&self) -> Self {
ffi::qstringlist_clone(self)
}
}
impl Default for QStringList {
fn default() -> Self {
ffi::qstringlist_default()
}
}
impl std::cmp::PartialEq for QStringList {
fn eq(&self, other: &Self) -> bool {
ffi::qstringlist_eq(self, other)
}
}
impl std::cmp::Eq for QStringList {}
impl std::fmt::Display for QStringList {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", ffi::qstringlist_to_qstring(self))
}
}
impl std::fmt::Debug for QStringList {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{self}")
}
}
impl Drop for QStringList {
fn drop(&mut self) {
ffi::qstringlist_drop(self);
}
}
impl From<&QString> for QStringList {
fn from(string: &QString) -> Self {
ffi::qstringlist_from_qstring(string)
}
}
impl From<&QList<QString>> for QStringList {
fn from(list: &QList<QString>) -> Self {
ffi::qstringlist_from_qlist_qstring(list)
}
}
impl From<&QStringList> for QList<QString> {
fn from(list: &QStringList) -> Self {
ffi::qstringlist_as_qlist_qstring(list)
}
}
unsafe impl ExternType for QStringList {
type Id = type_id!("QStringList");
type Kind = cxx::kind::Trivial;
}