diff options
| author | Linus Jahn <lnj@kaidan.im> | 2021-07-06 22:01:33 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-07-23 21:40:02 +0200 |
| commit | 222575aaa68ba1696da84e7dd53708959f8b611b (patch) | |
| tree | ebcc27833bbbccb64c794a7daf1a8a669b5fe937 /src | |
| parent | 9e59f99fd0cfef5e0fa528fe5f1c58c1ef3ad4b4 (diff) | |
| download | qxmpp-222575aaa68ba1696da84e7dd53708959f8b611b.tar.gz | |
QXmppClient: Add addNewExtension<T>()
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/QXmppClient.cpp | 10 | ||||
| -rw-r--r-- | src/client/QXmppClient.h | 8 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index 0e37a4f9..e1808445 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -195,6 +195,16 @@ QXmppClient::~QXmppClient() delete d; } +/// +/// \fn QXmppClient::addNewExtension() +/// +/// Creates a new extension and adds it to the client. +/// +/// \returns the newly created extension +/// +/// \since QXmpp 1.5 +/// + /// Registers a new \a extension with the client. /// /// \param extension diff --git a/src/client/QXmppClient.h b/src/client/QXmppClient.h index 3337c5b1..a6502305 100644 --- a/src/client/QXmppClient.h +++ b/src/client/QXmppClient.h @@ -140,6 +140,14 @@ public: ~QXmppClient() override; bool addExtension(QXmppClientExtension *extension); + template<typename T, typename... Args> + T *addNewExtension(Args... args) + { + // it's impossible that addExtension() returns false: ext is a new object + auto *ext = new T(args...); + addExtension(ext); + return ext; + } bool insertExtension(int index, QXmppClientExtension *extension); bool removeExtension(QXmppClientExtension *extension); |
