| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef DEVICE_UDEV_LINUX_SCOPED_UDEV_H_ | 
 | #define DEVICE_UDEV_LINUX_SCOPED_UDEV_H_ | 
 |  | 
 | #include "base/memory/scoped_ptr.h" | 
 | #include "device/udev_linux/udev.h" | 
 |  | 
 | #if !defined(USE_UDEV) | 
 | #error "USE_UDEV not defined" | 
 | #endif | 
 |  | 
 | namespace device { | 
 |  | 
 | struct UdevDeleter { | 
 |   void operator()(udev* dev) const { | 
 |     udev_unref(dev); | 
 |   } | 
 | }; | 
 | struct UdevEnumerateDeleter { | 
 |   void operator()(udev_enumerate* enumerate) const { | 
 |     udev_enumerate_unref(enumerate); | 
 |   } | 
 | }; | 
 | struct UdevDeviceDeleter { | 
 |   void operator()(udev_device* device) const { | 
 |     udev_device_unref(device); | 
 |   } | 
 | }; | 
 | struct UdevMonitorDeleter { | 
 |   void operator()(udev_monitor* monitor) const { | 
 |     udev_monitor_unref(monitor); | 
 |   } | 
 | }; | 
 |  | 
 | typedef scoped_ptr<udev, UdevDeleter> ScopedUdevPtr; | 
 | typedef scoped_ptr<udev_enumerate, UdevEnumerateDeleter> ScopedUdevEnumeratePtr; | 
 | typedef scoped_ptr<udev_device, UdevDeviceDeleter> ScopedUdevDevicePtr; | 
 | typedef scoped_ptr<udev_monitor, UdevMonitorDeleter> ScopedUdevMonitorPtr; | 
 |  | 
 | }  // namespace device | 
 |  | 
 | #endif  // DEVICE_UDEV_LINUX_SCOPED_UDEV_H_ |