diff --git a/lang/cpp/src/importresult.cpp b/lang/cpp/src/importresult.cpp index 05943ca0..20a3174b 100644 --- a/lang/cpp/src/importresult.cpp +++ b/lang/cpp/src/importresult.cpp @@ -35,6 +35,9 @@ #include #include +#include +#include +#include class GpgME::ImportResult::Private { @@ -224,3 +227,42 @@ GpgME::Import::Status GpgME::Import::status() const } return static_cast(result); } + +std::ostream &GpgME::operator<<(std::ostream &os, + const GpgME::ImportResult &result) +{ + os << "GpgME::ImportResult("; + if (!result.isNull()) { + os << "\n considered: " << result.numConsidered() + << "\n without UID: " << result.numKeysWithoutUserID() + << "\n imported: " << result.numImported() + << "\n RSA Imported: " << result.numRSAImported() + << "\n unchanged: " << result.numUnchanged() + << "\n newUserIDs: " << result.newUserIDs() + << "\n newSubkeys: " << result.newSubkeys() + << "\n newSignatures: " << result.newSignatures() + << "\n newRevocations: " << result.newRevocations() + << "\n numSecretKeysConsidered: " << result.numSecretKeysConsidered() + << "\n numSecretKeysImported: " << result.numSecretKeysImported() + << "\n numSecretKeysUnchanged: " << result.numSecretKeysUnchanged() + << "\n" + << "\n notImported: " << result.notImported() + << "\n numV3KeysSkipped: " << result.numV3KeysSkipped() + << "\n imports:\n"; + const std::vector imp = result.imports(); + std::copy(imp.begin(), imp.end(), + std::ostream_iterator(os, "\n")); + } + return os << ')'; +} + +std::ostream &GpgME::operator<<(std::ostream &os, const GpgME::Import &imp) +{ + os << "GpgME::Import("; + if (!imp.isNull()) { + os << "\n fpr: " << (imp.fingerprint() ? imp.fingerprint() : "null") + << "\n status: " << imp.status() + << "\n err: " << imp.error(); + } + return os << ')'; +} diff --git a/lang/cpp/src/importresult.h b/lang/cpp/src/importresult.h index 05476796..bcd956c3 100644 --- a/lang/cpp/src/importresult.h +++ b/lang/cpp/src/importresult.h @@ -129,7 +129,10 @@ private: unsigned int idx; }; -} +GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const ImportResult &irs); +GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const Import &imp); + +} // namespace GpgME GPGMEPP_MAKE_STD_SWAP_SPECIALIZATION(ImportResult) GPGMEPP_MAKE_STD_SWAP_SPECIALIZATION(Import)