this repo has no description
1#include "io_device_iterator.h"
2#include "io_device.h"
3#include <libudev.h>
4#include <typeinfo>
5
6io_device_iterator::io_device_iterator(udev_enumerate* uenum)
7 : m_uenum(uenum)
8{
9 m_udev = udev_enumerate_get_udev(m_uenum);
10 reset();
11}
12
13void io_device_iterator::reset()
14{
15 m_next = udev_enumerate_get_list_entry(m_uenum);
16}
17
18io_device_iterator::~io_device_iterator()
19{
20 udev_enumerate_unref(m_uenum);
21 udev_unref(m_udev);
22}
23
24bool io_device_iterator::operator==(const io_object& that)
25{
26 if (typeid(*this) != typeid(that))
27 return false;
28 return m_uenum == ((io_device_iterator*)&that)->m_uenum;
29}
30
31io_object_t io_device_iterator::next()
32{
33 if (!m_next)
34 return nullptr;
35 else
36 {
37 udev_device* dev = udev_device_new_from_syspath(m_udev, udev_list_entry_get_name(m_next));
38 m_next = udev_list_entry_get_next(m_next);
39 return io_device::create(dev);
40 }
41}