| // Copyright (c) 2013 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 MIST_UDEV_LIST_ENTRY_H_ |
| #define MIST_UDEV_LIST_ENTRY_H_ |
| |
| #include <base/macros.h> |
| |
| struct udev_list_entry; |
| |
| namespace mist { |
| |
| // A udev list entry, which wraps a udev_list_entry C struct from libudev and |
| // related library functions into a C++ object. |
| class UdevListEntry { |
| public: |
| // Constructs a UdevListEntry object by taking a raw pointer to a |
| // udev_list_entry struct as |list_entry|. The ownership of |list_entry| is |
| // not transferred, and thus it should outlive this object. |
| explicit UdevListEntry(udev_list_entry* list_entry); |
| |
| virtual ~UdevListEntry() = default; |
| |
| // Wraps udev_list_entry_get_next(). The returned UdevListEntry object is not |
| // managed and should be deleted by the caller after use. |
| virtual UdevListEntry* GetNext() const; |
| |
| // Wraps udev_list_entry_get_by_name(). The returned UdevListEntry object is |
| // not managed and should be deleted by the caller after use. |
| virtual UdevListEntry* GetByName(const char* name) const; |
| |
| // Wraps udev_list_entry_get_name(). |
| virtual const char* GetName() const; |
| |
| // Wraps udev_list_entry_get_value(). |
| virtual const char* GetValue() const; |
| |
| private: |
| // Allows MockUdevListEntry to invoke the private default constructor below. |
| friend class MockUdevListEntry; |
| |
| // Constructs a UdevListEntry object without referencing a udev_list_entry |
| // struct, which is only allowed to be called by MockUdevListEntry. |
| UdevListEntry(); |
| |
| udev_list_entry* const list_entry_; |
| |
| DISALLOW_COPY_AND_ASSIGN(UdevListEntry); |
| }; |
| |
| } // namespace mist |
| |
| #endif // MIST_UDEV_LIST_ENTRY_H_ |