forked from KDE/okteta
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbookmark.hpp
73 lines (55 loc) · 1.81 KB
/
bookmark.hpp
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
63
64
65
66
67
68
69
70
71
72
73
/*
This file is part of the Okteta Core library, made within the KDE community.
SPDX-FileCopyrightText: 2007, 2009 Friedrich W. H. Kossebau <[email protected]>
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef OKTETA_BOOKMARK_HPP
#define OKTETA_BOOKMARK_HPP
// lib
#include "oktetacore_export.hpp"
#include "address.hpp"
#include "size.hpp"
// Qt
#include <QString>
namespace Okteta {
// TODO: do we need the invalid status?
class OKTETACORE_EXPORT Bookmark
{
private:
static constexpr Address InvalidAddress = -1;
public:
Bookmark(Address offset); // krazy:exclude=explicit
Bookmark();
Bookmark(const Bookmark&) = default;
~Bookmark() = default;
Bookmark& operator=(const Bookmark&) = default;
public:
[[nodiscard]]
bool operator==(const Bookmark& other) const;
public:
[[nodiscard]]
Address offset() const;
[[nodiscard]]
QString name() const;
[[nodiscard]]
bool isValid() const;
public:
void move(Size offset);
void setName(const QString& name);
void setOffset(Address offset);
private:
Address mOffset = InvalidAddress;
QString mName;
};
inline Bookmark::Bookmark(Address offset) : mOffset(offset) {}
inline Bookmark::Bookmark() = default;
inline bool Bookmark::operator==(const Bookmark& other) const { return mOffset == other.mOffset; }
inline bool Bookmark::isValid() const { return mOffset != InvalidAddress; }
inline Address Bookmark::offset() const { return mOffset; }
inline QString Bookmark::name() const { return mName; }
inline void Bookmark::move(Size offset) { mOffset += offset; }
inline void Bookmark::setName(const QString& name) { mName = name; }
inline void Bookmark::setOffset(Address offset) { mOffset = offset; }
}
Q_DECLARE_TYPEINFO(Okteta::Bookmark, Q_MOVABLE_TYPE);
#endif