Add d-pointer to Job class
* src/CMakeLists.txt (qgpgme_PRIVATE_HEADERS): Add abstractimportjob_p. * src/job.h (class Job): Add constructor. Add member d_ptr. Add member functions d_func. * src/job.cpp (typedef JobPrivateHash, d_func, setJobPrivate, getJobPrivate): Remove. (Job::Job): Add new constructor. Use new constructor as delegated constructor for existing constructor. (Job::~Job): Use default. (Job::startIt, Job::startNow): Use Q_D macro instead of getJobPrivate. (make_job_subclass_ext): Remove. (make_job_subclass): Adapt to removal of make_job_subclass_ext. * src/job_p.h (class JobPrivate): Add member functions q_func. Add default constructor. Use destructor destructor. Add member q_ptr. (setJobPrivate, getJobPrivate, jobPrivate): Remove. * src/threadedjobmixin.h (template class ThreadedJobMixin): Add template parameter T_private. Add new parameter to typedef mixin_type. Add alternative constructor. * src/abstractimportjob.cpp, src/abstractimportjob.h (class AbstractImportJob): Add constructor overload. * src/abstractimportjob_p.h: New. * src/changeexpiryjob.cpp, src/decryptverifyarchivejob.cpp, src/decryptverifyjob.cpp, src/encryptarchivejob.cpp, src/encryptjob.cpp, src/importjob.cpp, src/listallkeysjob.cpp, src/quickjob.cpp, src/signarchivejob.cpp, src/signencryptarchivejob.cpp, src/signencryptjob.cpp, src/signjob.cpp, src/verifydetachedjob.cpp, src/verifyopaquejob.cpp, src/wkdrefreshjob.cpp: Add private pointer argument to *Job constructor. Use Q_D macro instead of jobPrivate in all setters and getters. * src/changeexpiryjob.h, src/decryptverifyarchivejob.h, src/decryptverifyjob.h, src/encryptarchivejob.h, src/encryptjob.h, src/importjob.h, src/listallkeysjob.h, src/quickjob.h, src/signarchivejob.h, src/signencryptarchivejob.h, src/signencryptjob.h, src/signjob.h, src/verifydetachedjob.h, src/verifyopaquejob.h, src/wkdrefreshjob.h: Forward-declare *JobPrivate class. Add private pointer argument to *Job constructor. Use macro for defining d_func() member functions. * src/changeexpiryjob_p.h, src/decryptverifyarchivejob_p.h, src/decryptverifyjob_p.h, src/encryptarchivejob_p.h, src/encryptjob_p.h, src/listallkeysjob_p.h, src/quickjob_p.h, src/signarchivejob_p.h, src/signencryptarchivejob_p.h, src/signencryptjob_p.h, src/signjob_p.h, src/verifydetachedjob_p.h, src/verifyopaquejob_p.h: Change *JobPrivate struct to class. * src/importjob_p.h, src/wkdrefreshjob_p.h: Change *JobPrivate struct to class and derive from AbstractImportJobPrivate. * src/qgpgmechangeexpiryjob.cpp, src/qgpgmedecryptverifyarchivejob.cpp, src/qgpgmedecryptverifyjob.cpp, src/qgpgmeencryptarchivejob.cpp, src/qgpgmeencryptjob.cpp, src/qgpgmeimportjob.cpp, src/qgpgmelistallkeysjob.cpp, src/qgpgmequickjob.cpp, src/qgpgmesignarchivejob.cpp, src/qgpgmesignencryptarchivejob.cpp, src/qgpgmesignencryptjob.cpp, src/qgpgmesignjob.cpp, src/qgpgmeverifydetachedjob.cpp, src/qgpgmeverifyopaquejob.cpp, src/qgpgmewkdrefreshjob.cpp: (class QGpgME*JobPrivate): Remove member q. Use macro for defining q_func() member functions. Replace constructor with default. Use Q_Q in functions that need q. (class QGpgME*Job): Remove setJobPrivate calls from the constructors. * src/qgpgmechangeexpiryjob.h, src/qgpgmedecryptverifyarchivejob.h, src/qgpgmedecryptverifyjob.h, src/qgpgmeencryptarchivejob.h, src/qgpgmeencryptjob.h, src/qgpgmeimportjob.h, src/qgpgmelistallkeysjob.h, src/qgpgmequickjob.h, src/qgpgmesignarchivejob.h, src/qgpgmesignencryptarchivejob.h, src/qgpgmesignencryptjob.h, src/qgpgmesignjob.h, src/qgpgmeverifydetachedjob.h, src/qgpgmeverifyopaquejob.h, src/qgpgmewkdrefreshjob.h: Forward-declare QGpgME*JobPrivate class. (class QGpgME*Job): Specify private class as private class template argument of the base template class. Use macro for defining d_func() member functions. * src/qgpgmedecryptjob.h, src/qgpgmedownloadjob.h, src/qgpgmeexportjob.h, src/qgpgmegpgcardjob.h, src/qgpgmeimportfromkeyserverjob.h, src/qgpgmekeyformailboxjob.h, src/qgpgmekeygenerationjob.h, src/qgpgmekeylistjob.h, src/qgpgmereceivekeysjob.h, src/qgpgmetofupolicyjob.h, src/qgpgmewkdlookupjob.h, src/qgpgmewkspublishjob.h (class QGpgME*Job): Specify void as private class template argument of the base template class.
By adding the d-pointer (pimpl) to the Job class we can get rid of
the workaround using a global map to store the private class
belonging to a job.