aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-07-06 22:01:33 +0200
committerLinus Jahn <lnj@kaidan.im>2021-07-23 21:40:02 +0200
commit222575aaa68ba1696da84e7dd53708959f8b611b (patch)
treeebcc27833bbbccb64c794a7daf1a8a669b5fe937 /src/client
parent9e59f99fd0cfef5e0fa528fe5f1c58c1ef3ad4b4 (diff)
downloadqxmpp-222575aaa68ba1696da84e7dd53708959f8b611b.tar.gz
QXmppClient: Add addNewExtension<T>()
Diffstat (limited to 'src/client')
-rw-r--r--src/client/QXmppClient.cpp10
-rw-r--r--src/client/QXmppClient.h8
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);