summaryrefslogtreecommitdiffstats
path: root/src/serialbus/qcanuniqueiddescription.h
blob: 717b7ac71dc777a3bafec1ed0f05e47e37df2b23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#ifndef QCANUNIQUEIDDESCRIPTION_H
#define QCANUNIQUEIDDESCRIPTION_H

#include <QtCore/QExplicitlySharedDataPointer>

#include <QtSerialBus/qcancommondefinitions.h>
#include <QtSerialBus/qtserialbusglobal.h>

QT_BEGIN_NAMESPACE

class QCanUniqueIdDescriptionPrivate;
QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QCanUniqueIdDescriptionPrivate, Q_SERIALBUS_EXPORT)

class Q_SERIALBUS_EXPORT QCanUniqueIdDescription
{
public:
    QCanUniqueIdDescription();
    QCanUniqueIdDescription(const QCanUniqueIdDescription &other);
    QCanUniqueIdDescription(QCanUniqueIdDescription &&other) noexcept = default;
    ~QCanUniqueIdDescription() = default;

    QCanUniqueIdDescription &operator=(const QCanUniqueIdDescription &other);
    QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCanUniqueIdDescription)

    friend bool operator==(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
    {
        return equals(lhs, rhs);
    }
    friend bool operator!=(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
    {
        return !equals(lhs, rhs);
    }

    void swap(QCanUniqueIdDescription &other) noexcept { d.swap(other.d); }

    bool isValid() const;

    QtCanBus::DataSource source() const;
    void setSource(QtCanBus::DataSource source);

    quint16 startBit() const;
    void setStartBit(quint16 bit);

    quint8 bitLength() const;
    void setBitLength(quint8 length);

    QSysInfo::Endian endian() const;
    void setEndian(QSysInfo::Endian endian);

private:
    QExplicitlySharedDataPointer<QCanUniqueIdDescriptionPrivate> d;
    friend class QCanUniqueIdDescriptionPrivate;

    static bool equals(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs);
};

QT_END_NAMESPACE

#endif // QCANUNIQUEIDDESCRIPTION_H