1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.core.filedevice; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.datetime; 17 import qt.core.flags; 18 import qt.core.global; 19 import qt.core.iodevice; 20 import qt.core.object; 21 import qt.core.string; 22 import qt.helpers; 23 24 extern(C++, class) struct QFileDevicePrivate; 25 26 /// Binding for C++ class [QFileDevice](https://doc.qt.io/qt-6/qfiledevice.html). 27 class /+ Q_CORE_EXPORT +/ QFileDevice : QIODevice 28 { 29 /+ #ifndef QT_NO_QOBJECT +/ 30 mixin(Q_OBJECT); 31 /+ #endif 32 Q_DECLARE_PRIVATE(QFileDevice) +/ 33 34 public: 35 enum FileError { 36 NoError = 0, 37 ReadError = 1, 38 WriteError = 2, 39 FatalError = 3, 40 ResourceError = 4, 41 OpenError = 5, 42 AbortError = 6, 43 TimeOutError = 7, 44 UnspecifiedError = 8, 45 RemoveError = 9, 46 RenameError = 10, 47 PositionError = 11, 48 ResizeError = 12, 49 PermissionsError = 13, 50 CopyError = 14 51 } 52 53 enum FileTime { 54 FileAccessTime, 55 FileBirthTime, 56 FileMetadataChangeTime, 57 FileModificationTime 58 } 59 60 enum Permission { 61 ReadOwner = 0x4000, WriteOwner = 0x2000, ExeOwner = 0x1000, 62 ReadUser = 0x0400, WriteUser = 0x0200, ExeUser = 0x0100, 63 ReadGroup = 0x0040, WriteGroup = 0x0020, ExeGroup = 0x0010, 64 ReadOther = 0x0004, WriteOther = 0x0002, ExeOther = 0x0001 65 } 66 /+ Q_DECLARE_FLAGS(Permissions, Permission) +/ 67 alias Permissions = QFlags!(Permission); 68 enum FileHandleFlag { 69 AutoCloseHandle = 0x0001, 70 DontCloseHandle = 0 71 } 72 /+ Q_DECLARE_FLAGS(FileHandleFlags, FileHandleFlag) +/ 73 alias FileHandleFlags = QFlags!(FileHandleFlag); 74 ~this(); 75 76 final FileError error() const; 77 final void unsetError(); 78 79 override void close(); 80 81 override bool isSequential() const; 82 83 final int handle() const; 84 /+ virtual +/ QString fileName() const; 85 86 override qint64 pos() const; 87 override bool seek(qint64 offset); 88 override bool atEnd() const; 89 final bool flush(); 90 91 override qint64 size() const; 92 93 /+ virtual +/ bool resize(qint64 sz); 94 /+ virtual +/ Permissions permissions() const; 95 /+ virtual +/ bool setPermissions(Permissions permissionSpec); 96 97 enum MemoryMapFlag { 98 NoOptions = 0, 99 MapPrivateOption = 0x0001 100 } 101 /+ Q_DECLARE_FLAGS(MemoryMapFlags, MemoryMapFlag) +/ 102 alias MemoryMapFlags = QFlags!(MemoryMapFlag); 103 final uchar* map(qint64 offset, qint64 size, MemoryMapFlags flags = MemoryMapFlag.NoOptions); 104 final bool unmap(uchar* address); 105 106 final QDateTime fileTime(FileTime time) const; 107 final bool setFileTime(ref const(QDateTime) newDate, FileTime fileTime); 108 109 protected: 110 this(); 111 /+ #ifdef QT_NO_QOBJECT 112 QFileDevice(QFileDevicePrivate &dd); 113 #else +/ 114 /+ explicit +/this(QObject parent); 115 this(ref QFileDevicePrivate dd, QObject parent = null); 116 /+ #endif +/ 117 118 override qint64 readData(char* data, qint64 maxlen); 119 override qint64 writeData(const(char)* data, qint64 len); 120 override qint64 readLineData(char* data, qint64 maxlen); 121 122 private: 123 /+ Q_DISABLE_COPY(QFileDevice) +/ 124 mixin(CREATE_CONVENIENCE_WRAPPERS); 125 } 126 /+pragma(inline, true) QFlags!(QFileDevice.Permissions.enum_type) operator |(QFileDevice.Permissions.enum_type f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.Permissions.enum_type)(f1)|f2;}+/ 127 /+pragma(inline, true) QFlags!(QFileDevice.Permissions.enum_type) operator |(QFileDevice.Permissions.enum_type f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 128 /+pragma(inline, true) QFlags!(QFileDevice.Permissions.enum_type) operator &(QFileDevice.Permissions.enum_type f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.Permissions.enum_type)(f1)&f2;}+/ 129 /+pragma(inline, true) QFlags!(QFileDevice.Permissions.enum_type) operator &(QFileDevice.Permissions.enum_type f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 130 /+pragma(inline, true) void operator +(QFileDevice.Permissions.enum_type f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/;+/ 131 /+pragma(inline, true) void operator +(QFileDevice.Permissions.enum_type f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/;+/ 132 /+pragma(inline, true) void operator +(int f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/;+/ 133 /+pragma(inline, true) void operator -(QFileDevice.Permissions.enum_type f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/;+/ 134 /+pragma(inline, true) void operator -(QFileDevice.Permissions.enum_type f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/;+/ 135 /+pragma(inline, true) void operator -(int f1, QFlags!(QFileDevice.Permissions.enum_type) f2)/+noexcept+/;+/ 136 /+pragma(inline, true) QIncompatibleFlag operator |(QFileDevice.Permissions.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 137 /+pragma(inline, true) void operator +(int f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/;+/ 138 /+pragma(inline, true) void operator +(QFileDevice.Permissions.enum_type f1, int f2)/+noexcept+/;+/ 139 /+pragma(inline, true) void operator -(int f1, QFileDevice.Permissions.enum_type f2)/+noexcept+/;+/ 140 /+pragma(inline, true) void operator -(QFileDevice.Permissions.enum_type f1, int f2)/+noexcept+/;+/ 141 142 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDevice::Permissions) +/ 143 /+pragma(inline, true) QFlags!(QFileDevice.FileHandleFlags.enum_type) operator |(QFileDevice.FileHandleFlags.enum_type f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.FileHandleFlags.enum_type)(f1)|f2;}+/ 144 /+pragma(inline, true) QFlags!(QFileDevice.FileHandleFlags.enum_type) operator |(QFileDevice.FileHandleFlags.enum_type f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 145 /+pragma(inline, true) QFlags!(QFileDevice.FileHandleFlags.enum_type) operator &(QFileDevice.FileHandleFlags.enum_type f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.FileHandleFlags.enum_type)(f1)&f2;}+/ 146 /+pragma(inline, true) QFlags!(QFileDevice.FileHandleFlags.enum_type) operator &(QFileDevice.FileHandleFlags.enum_type f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 147 /+pragma(inline, true) void operator +(QFileDevice.FileHandleFlags.enum_type f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/;+/ 148 /+pragma(inline, true) void operator +(QFileDevice.FileHandleFlags.enum_type f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/;+/ 149 /+pragma(inline, true) void operator +(int f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/;+/ 150 /+pragma(inline, true) void operator -(QFileDevice.FileHandleFlags.enum_type f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/;+/ 151 /+pragma(inline, true) void operator -(QFileDevice.FileHandleFlags.enum_type f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/;+/ 152 /+pragma(inline, true) void operator -(int f1, QFlags!(QFileDevice.FileHandleFlags.enum_type) f2)/+noexcept+/;+/ 153 /+pragma(inline, true) QIncompatibleFlag operator |(QFileDevice.FileHandleFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 154 /+pragma(inline, true) void operator +(int f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/;+/ 155 /+pragma(inline, true) void operator +(QFileDevice.FileHandleFlags.enum_type f1, int f2)/+noexcept+/;+/ 156 /+pragma(inline, true) void operator -(int f1, QFileDevice.FileHandleFlags.enum_type f2)/+noexcept+/;+/ 157 /+pragma(inline, true) void operator -(QFileDevice.FileHandleFlags.enum_type f1, int f2)/+noexcept+/;+/ 158 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDevice::FileHandleFlags) +/ 159 /+pragma(inline, true) QFlags!(QFileDevice.MemoryMapFlags.enum_type) operator |(QFileDevice.MemoryMapFlags.enum_type f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.MemoryMapFlags.enum_type)(f1)|f2;}+/ 160 /+pragma(inline, true) QFlags!(QFileDevice.MemoryMapFlags.enum_type) operator |(QFileDevice.MemoryMapFlags.enum_type f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 161 /+pragma(inline, true) QFlags!(QFileDevice.MemoryMapFlags.enum_type) operator &(QFileDevice.MemoryMapFlags.enum_type f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/{return QFlags!(QFileDevice.MemoryMapFlags.enum_type)(f1)&f2;}+/ 162 /+pragma(inline, true) QFlags!(QFileDevice.MemoryMapFlags.enum_type) operator &(QFileDevice.MemoryMapFlags.enum_type f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 163 /+pragma(inline, true) void operator +(QFileDevice.MemoryMapFlags.enum_type f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/;+/ 164 /+pragma(inline, true) void operator +(QFileDevice.MemoryMapFlags.enum_type f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/;+/ 165 /+pragma(inline, true) void operator +(int f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/;+/ 166 /+pragma(inline, true) void operator -(QFileDevice.MemoryMapFlags.enum_type f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/;+/ 167 /+pragma(inline, true) void operator -(QFileDevice.MemoryMapFlags.enum_type f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/;+/ 168 /+pragma(inline, true) void operator -(int f1, QFlags!(QFileDevice.MemoryMapFlags.enum_type) f2)/+noexcept+/;+/ 169 /+pragma(inline, true) QIncompatibleFlag operator |(QFileDevice.MemoryMapFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 170 /+pragma(inline, true) void operator +(int f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/;+/ 171 /+pragma(inline, true) void operator +(QFileDevice.MemoryMapFlags.enum_type f1, int f2)/+noexcept+/;+/ 172 /+pragma(inline, true) void operator -(int f1, QFileDevice.MemoryMapFlags.enum_type f2)/+noexcept+/;+/ 173 /+pragma(inline, true) void operator -(QFileDevice.MemoryMapFlags.enum_type f1, int f2)/+noexcept+/;+/ 174 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDevice::MemoryMapFlags) +/