aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2023-06-19 10:11:58 +0000
committerIngo Klöcker <[email protected]>2023-06-19 15:58:23 +0000
commit6f6b35df505af108669bd6ff8c351c970130eb45 (patch)
tree3678046d543ba19ed0a75ddb67752fb86b867364
parentqt, cpp: Support larger size-hint on 32 bit builds (diff)
downloadgpgme-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.cpp7
-rw-r--r--lang/qt/src/job_p.h12
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);
}