|  | /* | 
|  | *  Copyright 2022 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | #include "modules/portal/scoped_glib.h" | 
|  |  | 
|  | #include <gio/gio.h> | 
|  |  | 
|  | #include "rtc_base/system/rtc_export.h" | 
|  | #include "rtc_base/system/rtc_export_template.h" | 
|  |  | 
|  | namespace webrtc { | 
|  |  | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<GError>; | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<char>; | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<GVariant>; | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<GVariantIter>; | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<GDBusMessage>; | 
|  | template class RTC_EXPORT_TEMPLATE_DEFINE(RTC_EXPORT) Scoped<GUnixFDList>; | 
|  |  | 
|  | template <> | 
|  | Scoped<GError>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_error_free(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <> | 
|  | Scoped<char>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_free(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <> | 
|  | Scoped<GVariant>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_variant_unref(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <> | 
|  | Scoped<GVariantIter>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_variant_iter_free(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <> | 
|  | Scoped<GDBusMessage>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_object_unref(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | template <> | 
|  | Scoped<GUnixFDList>::~Scoped() { | 
|  | if (ptr_) { | 
|  | g_object_unref(ptr_); | 
|  | } | 
|  | } | 
|  |  | 
|  | }  // namespace webrtc |