diff options
author | Ingo Klöcker <[email protected]> | 2023-06-19 10:11:58 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2023-06-19 15:58:23 +0000 |
commit | 6f6b35df505af108669bd6ff8c351c970130eb45 (patch) | |
tree | 3678046d543ba19ed0a75ddb67752fb86b867364 | |
parent | qt, cpp: Support larger size-hint on 32 bit builds (diff) | |
download | gpgme-6f6b35df505af108669bd6ff8c351c970130eb45.tar.gz gpgme-6f6b35df505af108669bd6ff8c351c970130eb45.zip |
qt: Return const pointer to JobPrivate class for const pointer to Job
* lang/qt/src/job.cpp, lang/qt/src/job_p.h (getJobPrivate): Replace with
two overloads for non-const pointer and const pointer to Job.
* lang/qt/src/job_p.h (jobPrivate): Replace with two template functions
for non-const pointer and const pointer to Job.
--
This helps avoid changing values stored in the JobPrivate class in
const functions (e.g. getters) of Job classes.
GnuPG-bug-id: 6530
-rw-r--r-- | lang/qt/src/job.cpp | 7 | ||||
-rw-r--r-- | lang/qt/src/job_p.h | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/lang/qt/src/job.cpp b/lang/qt/src/job.cpp index 85de2ce7..5e07f787 100644 --- a/lang/qt/src/job.cpp +++ b/lang/qt/src/job.cpp @@ -94,7 +94,12 @@ void QGpgME::setJobPrivate(const Job *job, std::unique_ptr<JobPrivate> d) ref = std::move(d); } -QGpgME::JobPrivate *QGpgME::getJobPrivate(const Job *job) +const QGpgME::JobPrivate *QGpgME::getJobPrivate(const Job *job) +{ + return d_func()->operator[](job).get(); +} + +QGpgME::JobPrivate *QGpgME::getJobPrivate(Job *job) { return d_func()->operator[](job).get(); } diff --git a/lang/qt/src/job_p.h b/lang/qt/src/job_p.h index 7d0f9952..43063dd1 100644 --- a/lang/qt/src/job_p.h +++ b/lang/qt/src/job_p.h @@ -56,10 +56,18 @@ public: // BCI: Add a real d-pointer to Job void setJobPrivate(const Job *job, std::unique_ptr<JobPrivate> d); -JobPrivate *getJobPrivate(const Job *job); +const JobPrivate *getJobPrivate(const Job *job); + +JobPrivate *getJobPrivate(Job *job); + +template <typename T> +static const T *jobPrivate(const Job *job) { + auto d = getJobPrivate(job); + return dynamic_cast<const T *>(d); +} template <typename T> -static T *jobPrivate(const Job *job) { +static T *jobPrivate(Job *job) { auto d = getJobPrivate(job); return dynamic_cast<T *>(d); } |