KWin
Loading...
Searching...
No Matches
ramfile.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2022 MBition GmbH
6 SPDX-FileContributor: Kai Uwe Broulik <kai_uwe.broulik@mbition.io>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10
11#pragma once
12
13#include <config-kwin.h>
14#include <kwin_export.h>
15
16#if HAVE_MEMFD
17#include "filedescriptor.h"
18#else
19#include <QTemporaryFile>
20#include <memory>
21#endif
22
23#include <QFlag>
24
25class QByteArray;
26
27namespace KWin
28{
29
46class KWIN_EXPORT RamFile
47{
48public:
55 enum class Flag {
56 SealWrite = 1 << 0,
57 };
58 Q_DECLARE_FLAGS(Flags, Flag)
59
60 RamFile() = default;
71 RamFile(const char *name, const void *inData, int size, Flags flags = {});
72
73 RamFile(RamFile &&other) Q_DECL_NOEXCEPT;
74 RamFile &operator=(RamFile &&other) Q_DECL_NOEXCEPT;
75
79 ~RamFile();
80
84 bool isValid() const;
91 Flags effectiveFlags() const;
92
98 int fd() const;
102 int size() const;
103
104private:
105 void cleanup();
106
107 int m_size = 0;
108 Flags m_flags = {};
109
110#if HAVE_MEMFD
112#else
113 std::unique_ptr<QTemporaryFile> m_tmp;
114#endif
115};
116
117} // namespace KWin
Creates a file in memory.
Definition ramfile.h:47