blob: 41aa0569e7a4335af51632fd377126e0bf830fa9 [file] [log] [blame]
/*
* Copyright 2018 The Chromium OS 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 CAMERA_INCLUDE_CROS_CAMERA_SCOPED_UDEV_H_
#define CAMERA_INCLUDE_CROS_CAMERA_SCOPED_UDEV_H_
#include <memory>
#include <libudev.h>
namespace cros {
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 std::unique_ptr<udev, UdevDeleter> ScopedUdevPtr;
typedef std::unique_ptr<udev_enumerate, UdevEnumerateDeleter>
ScopedUdevEnumeratePtr;
typedef std::unique_ptr<udev_device, UdevDeviceDeleter> ScopedUdevDevicePtr;
typedef std::unique_ptr<udev_monitor, UdevMonitorDeleter> ScopedUdevMonitorPtr;
} // namespace cros
#endif // CAMERA_INCLUDE_CROS_CAMERA_SCOPED_UDEV_H_