Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / ui / events / ozone / evdev / scoped_udev.h
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.
4
5 #ifndef UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_
6 #define UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_
7
8 #include <libudev.h>
9
10 #include "base/memory/scoped_ptr.h"
11
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.
14
15 namespace ui {
16
17 // Scoped struct udev.
18 struct UdevDeleter {
19   void operator()(struct udev* udev) { udev_unref(udev); }
20 };
21 typedef scoped_ptr<struct udev, UdevDeleter> scoped_udev;
22
23 // Scoped struct udev_device.
24 struct UdevDeviceDeleter {
25   void operator()(struct udev_device* udev_device) {
26     udev_device_unref(udev_device);
27   }
28 };
29 typedef scoped_ptr<struct udev_device, UdevDeviceDeleter> scoped_udev_device;
30
31 // Scoped struct udev_enumerate.
32 struct UdevEnumerateDeleter {
33   void operator()(struct udev_enumerate* udev_enumerate) {
34     udev_enumerate_unref(udev_enumerate);
35   }
36 };
37 typedef scoped_ptr<struct udev_enumerate, UdevEnumerateDeleter>
38     scoped_udev_enumerate;
39
40 // Scoped struct udev_monitor.
41 struct UdevMonitorDeleter {
42   void operator()(struct udev_monitor* udev_monitor) {
43     udev_monitor_unref(udev_monitor);
44   }
45 };
46 typedef scoped_ptr<struct udev_monitor, UdevMonitorDeleter> scoped_udev_monitor;
47
48 }  // namespace ui
49
50 #endif  // UI_EVENTS_OZONE_EVDEV_SCOPED_UDEV_H_