| Index: device/hid/udev_common.h
|
| diff --git a/device/hid/udev_common.h b/device/hid/udev_common.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6b9d5f8291b45d58090278f677a11a548c3eaa40
|
| --- /dev/null
|
| +++ b/device/hid/udev_common.h
|
| @@ -0,0 +1,49 @@
|
| +// 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_HID_UDEV_COMMON_H_
|
| +#define DEVICE_HID_UDEV_COMMON_H_
|
| +
|
| +#include <libudev.h>
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +
|
| +namespace device {
|
| +
|
| +template <typename T, void func(T*)>
|
| +void DiscardReturnType(T* arg) {
|
| + func(arg);
|
| +}
|
| +
|
| +template <typename T, T* func(T*)>
|
| +void DiscardReturnType(T* arg) {
|
| + func(arg);
|
| +}
|
| +
|
| +template <typename T, void func(T*)>
|
| +struct Deleter {
|
| + void operator()(T* enumerate) const {
|
| + if (enumerate != NULL)
|
| + func(enumerate);
|
| + }
|
| +};
|
| +
|
| +typedef Deleter<udev, DiscardReturnType<udev, udev_unref> > UdevDeleter;
|
| +typedef Deleter<udev_enumerate,
|
| + DiscardReturnType<udev_enumerate, udev_enumerate_unref> >
|
| + UdevEnumerateDeleter;
|
| +typedef Deleter<udev_device, DiscardReturnType<udev_device, udev_device_unref> >
|
| + UdevDeviceDeleter;
|
| +typedef Deleter<udev_monitor,
|
| + DiscardReturnType<udev_monitor, udev_monitor_unref> >
|
| + UdevMonitorDeleter;
|
| +
|
| +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_HID_UDEV_COMMON_H_
|
|
|