1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_
6 #define UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_
10 #include "base/memory/scoped_ptr.h"
12 // This file enables management of udev object references using scoped_ptr<> by
13 // associating a custom deleter that drops the reference rather than deleting.
17 // Scoped struct udev.
19 void operator()(struct udev* udev) { udev_unref(udev); }
21 typedef scoped_ptr<struct udev, UdevDeleter> scoped_udev;
23 // Scoped struct udev_device.
24 struct UdevDeviceDeleter {
25 void operator()(struct udev_device* udev_device) {
26 udev_device_unref(udev_device);
29 typedef scoped_ptr<struct udev_device, UdevDeviceDeleter> scoped_udev_device;
31 // Scoped struct udev_enumerate.
32 struct UdevEnumerateDeleter {
33 void operator()(struct udev_enumerate* udev_enumerate) {
34 udev_enumerate_unref(udev_enumerate);
37 typedef scoped_ptr<struct udev_enumerate, UdevEnumerateDeleter>
38 scoped_udev_enumerate;
40 // Scoped struct udev_monitor.
41 struct UdevMonitorDeleter {
42 void operator()(struct udev_monitor* udev_monitor) {
43 udev_monitor_unref(udev_monitor);
46 typedef scoped_ptr<struct udev_monitor, UdevMonitorDeleter> scoped_udev_monitor;
50 #endif // UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_