1 /*
2     SPDX-FileCopyrightText: 2006 Kevin Ottens <ervin@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6 
7 #ifndef SOLID_IFACES_BLOCK_H
8 #define SOLID_IFACES_BLOCK_H
9 
10 #include <solid/devices/ifaces/deviceinterface.h>
11 
12 namespace Solid
13 {
14 namespace Ifaces
15 {
16 /**
17  * This device interface is available on block devices.
18  *
19  * A block device is an addressable device such as drive or partition.
20  * It is possible to interact with such a device using a special file
21  * in the system.
22  */
23 class Block : virtual public DeviceInterface
24 {
25 public:
26     /**
27      * Destroys a Block object.
28      */
29     ~Block() override;
30 
31     /**
32      * Retrieves the major number of the node file to interact with
33      * the device.
34      *
35      * @return the device major number
36      */
37     virtual int deviceMajor() const = 0;
38 
39     /**
40      * Retrieves the minor number of the node file to interact with
41      * the device.
42      *
43      * @return the device minor number
44      */
45     virtual int deviceMinor() const = 0;
46 
47     /**
48      * Retrieves the absolute path of the special file to interact
49      * with the device.
50      *
51      * @return the absolute path of the special file to interact with
52      * the device
53      */
54     virtual QString device() const = 0;
55 };
56 }
57 }
58 
59 Q_DECLARE_INTERFACE(Solid::Ifaces::Block, "org.kde.Solid.Ifaces.Block/0.1")
60 
61 #endif
62