Skip to content

Commit

Permalink
cxx-qt-lib: use standalone FFI helpers for QString conversions
Browse files Browse the repository at this point in the history
  • Loading branch information
jnbooth committed Mar 9, 2025
1 parent 4cb0ff4 commit e903c02
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 41 deletions.
8 changes: 6 additions & 2 deletions crates/cxx-qt-lib/include/core/qdate.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,18 @@ namespace cxxqtlib1 {
QDate
qdateCurrentDate();
QDate
qdateFromString(const QString& string, const QString& format);
qdateFromQString(const QString& string, const QString& format);
QDate
qdateFromString(const QString& string, Qt::DateFormat format);
qdateFromQString(const QString& string, Qt::DateFormat format);
// In Qt 5 d is const-ref, in Qt 6 it is value
qint64
qdateDaysTo(const QDate& date, QDate d);
bool
qdateIsLeapYear(::std::int32_t year);
QString
qdateToQString(const QDate& date, Qt::DateFormat format);
QString
qdateToQString(const QDate& date, const QString& format);

}
}
4 changes: 4 additions & 0 deletions crates/cxx-qt-lib/include/core/qdatetime.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,9 @@ QDateTime
qdatetimeFromQString(const QString& string, Qt::DateFormat format);
QDateTime
qdatetimeFromQString(const QString& string, const QString& format);
QString
qdatetimeToQString(const QDateTime& date, Qt::DateFormat format);
QString
qdatetimeToQString(const QDateTime& date, const QString& format);
}
}
8 changes: 6 additions & 2 deletions crates/cxx-qt-lib/include/core/qtime.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,16 @@ qtimeFromMSecsSinceStartOfDay(::std::int32_t msecs);
::std::int32_t
qtimeMSecsTo(const QTime& time, QTime t);
QTime
qtimeFromString(const QString& string, const QString& format);
qtimeFromQString(const QString& string, const QString& format);
QTime
qtimeFromString(const QString& string, Qt::DateFormat format);
qtimeFromQString(const QString& string, Qt::DateFormat format);
// In Qt 5 t is const-ref, in Qt 6 it is value
::std::int32_t
qtimeSecsTo(const QTime& time, QTime t);
QString
qtimeToQString(const QTime& date, Qt::DateFormat format);
QString
qtimeToQString(const QTime& date, const QString& format);

bool
qtimeIsValid(int h, int m, int s, int ms);
Expand Down
16 changes: 14 additions & 2 deletions crates/cxx-qt-lib/src/core/qdate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ qdateDaysTo(const QDate& date, QDate d)
}

QDate
qdateFromString(const QString& string, const QString& format)
qdateFromQString(const QString& string, const QString& format)
{
return QDate::fromString(string, format);
}

QDate
qdateFromString(const QString& string, Qt::DateFormat format)
qdateFromQString(const QString& string, Qt::DateFormat format)
{
return QDate::fromString(string, format);
}
Expand All @@ -52,5 +52,17 @@ qdateIsLeapYear(::std::int32_t year)
return QDate::isLeapYear(static_cast<int>(year));
}

QString
qdateToQString(const QDate& date, const QString& format)
{
return date.toString(format);
}

QString
qdateToQString(const QDate& date, Qt::DateFormat format)
{
return date.toString(format);
}

}
}
23 changes: 11 additions & 12 deletions crates/cxx-qt-lib/src/core/qdate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,6 @@ mod ffi {
#[rust_name = "set_date"]
fn setDate(self: &mut QDate, y: i32, m: i32, d: i32) -> bool;

#[doc(hidden)]
#[rust_name = "format_qstring"]
fn toString(self: &QDate, format: &QString) -> QString;

#[doc(hidden)]
#[rust_name = "format_dateformat"]
fn toString(self: &QDate, format: DateFormat) -> QString;

/// Returns the year of this date.
fn year(self: &QDate) -> i32;
}
Expand All @@ -102,10 +94,17 @@ mod ffi {

#[doc(hidden)]
#[rust_name = "qdate_from_qstring_qstring"]
fn qdateFromString(string: &QString, format: &QString) -> QDate;
fn qdateFromQString(string: &QString, format: &QString) -> QDate;
#[doc(hidden)]
#[rust_name = "qdate_from_qstring_dateformat"]
fn qdateFromString(string: &QString, format: DateFormat) -> QDate;
fn qdateFromQString(string: &QString, format: DateFormat) -> QDate;

#[doc(hidden)]
#[rust_name = "qdate_to_qstring_qstring"]
fn qdateToQString(date: &QDate, format: &QString) -> QString;
#[doc(hidden)]
#[rust_name = "qdate_to_qstring_dateformat"]
fn qdateToQString(date: &QDate, format: DateFormat) -> QString;

#[doc(hidden)]
#[rust_name = "qdate_is_leap_year"]
Expand Down Expand Up @@ -219,8 +218,8 @@ impl QDate {
T: Into<AnyDateFormat<'a>>,
{
match format.into() {
AnyDateFormat::DateFormat(f) => self.format_dateformat(f),
AnyDateFormat::QString(f) => self.format_qstring(f),
AnyDateFormat::DateFormat(f) => ffi::qdate_to_qstring_dateformat(self, f),
AnyDateFormat::QString(f) => ffi::qdate_to_qstring_qstring(self, f),
}
}
}
Expand Down
12 changes: 12 additions & 0 deletions crates/cxx-qt-lib/src/core/qdatetime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,17 @@ qdatetimeFromQString(const QString& string, const QString& format)
return QDateTime::fromString(string, format);
}

QString
qdatetimeToQString(const QDateTime& date, const QString& format)
{
return date.toString(format);
}

QString
qdatetimeToQString(const QDateTime& date, Qt::DateFormat format)
{
return date.toString(format);
}

}
}
20 changes: 11 additions & 9 deletions crates/cxx-qt-lib/src/core/qdatetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,6 @@ mod ffi {
#[rust_name = "to_secs_since_epoch"]
fn toSecsSinceEpoch(self: &QDateTime) -> qint64;

#[doc(hidden)]
#[rust_name = "format_qstring"]
fn toString(self: &QDateTime, format: &QString) -> QString;

#[doc(hidden)]
#[rust_name = "format_dateformat"]
fn toString(self: &QDateTime, format: DateFormat) -> QString;
/// Returns a copy of this datetime converted to the given time spec.
///
/// Note this method is only available with Qt < 6.8
Expand Down Expand Up @@ -198,12 +191,21 @@ mod ffi {
fn qdatetimeTimeZone(datetime: &QDateTime) -> UniquePtr<QTimeZone>;
#[rust_name = "qdatetime_settimezone"]
fn qdatetimeSetTimeZone(datetime: &mut QDateTime, time_zone: &QTimeZone);

#[doc(hidden)]
#[rust_name = "qdatetime_from_qstring_qstring"]
fn qdatetimeFromQString(string: &QString, format: &QString) -> QDateTime;
#[doc(hidden)]
#[rust_name = "qdatetime_from_qstring_dateformat"]
fn qdatetimeFromQString(string: &QString, format: DateFormat) -> QDateTime;

#[doc(hidden)]
#[rust_name = "qdatetime_to_qstring_qstring"]
fn qdatetimeToQString(date: &QDateTime, format: &QString) -> QString;
#[doc(hidden)]
#[rust_name = "qdatetime_to_qstring_dateformat"]
fn qdatetimeToQString(date: &QDateTime, format: DateFormat) -> QString;

}

#[namespace = "rust::cxxqtlib1"]
Expand Down Expand Up @@ -343,8 +345,8 @@ impl QDateTime {
T: Into<AnyDateFormat<'a>>,
{
match format.into() {
AnyDateFormat::DateFormat(f) => self.format_dateformat(f),
AnyDateFormat::QString(f) => self.format_qstring(f),
AnyDateFormat::DateFormat(f) => ffi::qdatetime_to_qstring_dateformat(self, f),
AnyDateFormat::QString(f) => ffi::qdatetime_to_qstring_qstring(self, f),
}
}

Expand Down
16 changes: 14 additions & 2 deletions crates/cxx-qt-lib/src/core/qtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ qtimeMSecsTo(const QTime& time, QTime t)
}

QTime
qtimeFromString(const QString& string, const QString& format)
qtimeFromQString(const QString& string, const QString& format)
{
return QTime::fromString(string, format);
}

QTime
qtimeFromString(const QString& string, Qt::DateFormat format)
qtimeFromQString(const QString& string, Qt::DateFormat format)
{
return QTime::fromString(string, format);
}
Expand All @@ -66,5 +66,17 @@ qtimeIsValid(int h, int m, int s, int ms)
return QTime::isValid(h, m, s, ms);
}

QString
qtimeToQString(const QTime& time, const QString& format)
{
return time.toString(format);
}

QString
qtimeToQString(const QTime& time, Qt::DateFormat format)
{
return time.toString(format);
}

}
}
23 changes: 11 additions & 12 deletions crates/cxx-qt-lib/src/core/qtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,6 @@ mod ffi {
/// Sets the time to hour h, minute m, seconds s and milliseconds ms.
#[rust_name = "set_hms"]
fn setHMS(self: &mut QTime, h: i32, m: i32, s: i32, ms: i32) -> bool;

#[doc(hidden)]
#[rust_name = "format_qstring"]
fn toString(self: &QTime, format: &QString) -> QString;

#[doc(hidden)]
#[rust_name = "format_dateformat"]
fn toString(self: &QTime, format: DateFormat) -> QString;
}

#[namespace = "rust::cxxqtlib1"]
Expand All @@ -83,10 +75,17 @@ mod ffi {

#[doc(hidden)]
#[rust_name = "qtime_from_qstring_qstring"]
fn qtimeFromString(string: &QString, format: &QString) -> QTime;
fn qtimeFromQString(string: &QString, format: &QString) -> QTime;
#[doc(hidden)]
#[rust_name = "qtime_from_qstring_dateformat"]
fn qtimeFromString(string: &QString, format: DateFormat) -> QTime;
fn qtimeFromQString(string: &QString, format: DateFormat) -> QTime;

#[doc(hidden)]
#[rust_name = "qtime_to_qstring_qstring"]
fn qtimeToQString(time: &QTime, format: &QString) -> QString;
#[doc(hidden)]
#[rust_name = "qtime_to_qstring_dateformat"]
fn qtimeToQString(time: &QTime, format: DateFormat) -> QString;

#[doc(hidden)]
#[rust_name = "qtime_msecs_to"]
Expand Down Expand Up @@ -168,8 +167,8 @@ impl QTime {
T: Into<AnyDateFormat<'a>>,
{
match format.into() {
AnyDateFormat::DateFormat(f) => self.format_dateformat(f),
AnyDateFormat::QString(f) => self.format_qstring(f),
AnyDateFormat::DateFormat(f) => ffi::qtime_to_qstring_dateformat(self, f),
AnyDateFormat::QString(f) => ffi::qtime_to_qstring_qstring(self, f),
}
}

Expand Down

0 comments on commit e903c02

Please sign in to comment.