11#include <QLatin1String>
13namespace QXmpp::Private {
15template<
typename T,
typename DeleterType,
void(destruct)(DeleterType *)>
21 CustomUniquePtr(T *ptr =
nullptr) : m_ptr(ptr) { }
22 CustomUniquePtr(CustomUniquePtr &&other) : m_ptr(other.m_ptr) { other.m_ptr =
nullptr; }
23 CustomUniquePtr(
const CustomUniquePtr &) =
delete;
30 CustomUniquePtr &operator=(
const CustomUniquePtr &) =
delete;
31 CustomUniquePtr &operator=(CustomUniquePtr &&other)
34 other.m_ptr =
nullptr;
37 CustomUniquePtr &operator=(T *ptr)
42 operator T *()
const {
return m_ptr; }
43 operator bool()
const {
return m_ptr !=
nullptr; }
44 T *operator->()
const {
return m_ptr; }
45 T *get()
const {
return m_ptr; }
51 void reset(T *ptr =
nullptr)
60 CustomUniquePtr<gchar, void, g_free> getCharProperty(QLatin1String name) {
return getCharProperty(m_ptr, name); };
61 int getIntProperty(QLatin1String name) {
return getIntProperty(m_ptr, name); }
64using GstElementPtr = CustomUniquePtr<GstElement, void, gst_object_unref>;
65using GstElementFactoryPtr = CustomUniquePtr<GstElementFactory, void, gst_object_unref>;
66using GstPadPtr = CustomUniquePtr<GstPad, void, gst_object_unref>;
67using GstSamplePtr = CustomUniquePtr<GstSample, GstSample, gst_sample_unref>;
68using GstBufferPtr = CustomUniquePtr<GstBuffer, GstBuffer, gst_buffer_unref>;
69using GCharPtr = CustomUniquePtr<gchar, void, g_free>;
71enum class GstDtlsConnectionState {
79bool checkGstFeature(QLatin1String feature);
80GCharPtr getCharProperty(gpointer
object, QLatin1String propertyName);
81int getIntProperty(gpointer, QLatin1String propertyName,
int defaultValue = -1);
82void linkPads(GstPad *srcPad, GstPad *sinkPad);