Qx v0.7
Qt Extensions Library
Loading...
Searching...
No Matches
qx-filestreamwriter.h
1#ifndef QX_FILESTREAMWRITER_H
2#define QX_FILESTREAMWRITER_H
3
4// Shared Lib Support
5#include "qx/io/qx_io_export.h"
6
7// Qt Includes
8#include <QDataStream>
9#include <QFile>
10
11// Intra-component Includes
12#include "qx/io/qx-common-io.h"
13
14namespace Qx
15{
16
17class QX_IO_EXPORT FileStreamWriter // Specialized wrapper for QDataStream
18{
19//-Instance Variables------------------------------------------------------------------------------------------------
20private:
21 QFile* mFile;
22 QDataStream mStreamWriter;
23 WriteMode mWriteMode;
24 WriteOptions mWriteOptions;
25 IoOpReport mStatus;
26
27//-Constructor-------------------------------------------------------------------------------------------------------
28public:
29 FileStreamWriter(WriteMode writeMode = Append, WriteOptions writeOptions = NoWriteOptions);
30 FileStreamWriter(const QString& filePath, WriteMode writeMode = Append, WriteOptions writeOptions = NoWriteOptions);
31
32//-Destructor-------------------------------------------------------------------------------------------------------
33public:
35
36//-Instance Functions------------------------------------------------------------------------------------------------
37private:
38 IoOpReport statusFromNative();
39 IoOpReport preWriteErrorCheck();
40 void setFile(const QString& filePath);
41 void unsetFile();
42
43public:
44 // Stock functions
45 QDataStream::ByteOrder byteOrder() const;
46 const QFile* file() const;
47 QDataStream::FloatingPointPrecision floatingPointPrecision() const;
48 void resetStatus();
49 void setByteOrder(QDataStream::ByteOrder bo);
50 void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision);
51 IoOpReport status() const;
52 IoOpReport writeRawData(const QByteArray& data);
53
54 template<typename T>
57 {
58 IoOpReport check = preWriteErrorCheck();
59
60 if(!check.isFailure())
61 {
62 mStreamWriter << d;
63 mStatus = statusFromNative();
64 }
65
66 return *this;
67 }
68
69 QString filePath() const;
70 void setFilePath(const QString& filePath);
71
72 // New functions
73 bool hasError() const;
74 IoOpReport openFile();
75 void closeFile();
76 bool fileIsOpen() const;
77};
78
79}
80
81#endif // QX_FILESTREAMWRITER_H
QDataStream::ByteOrder byteOrder() const
Definition qx-filestreamwriter.cpp:132
void setByteOrder(QDataStream::ByteOrder bo)
Definition qx-filestreamwriter.cpp:172
FileStreamWriter(WriteMode writeMode=Append, WriteOptions writeOptions=NoWriteOptions)
Definition qx-filestreamwriter.cpp:41
QDataStream::FloatingPointPrecision floatingPointPrecision() const
Definition qx-filestreamwriter.cpp:146
void resetStatus()
Definition qx-filestreamwriter.cpp:157
const QFile * file() const
Definition qx-filestreamwriter.cpp:139
IoOpReport writeRawData(const QByteArray &data)
Definition qx-filestreamwriter.cpp:202
IoOpReport status() const
Definition qx-filestreamwriter.cpp:192
FileStreamWriter & operator<<(T d)
Definition qx-filestreamwriter.h:56
QString filePath() const
Definition qx-filestreamwriter.cpp:262
void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision)
Definition qx-filestreamwriter.cpp:184
The IoOpReport class is a container for details regarding the outcome of an IO operation.
Definition qx-ioopreport.h:53
bool isFailure() const
Definition qx-ioopreport.cpp:390
Specifies that a type defines a left shift operator for another type.
Definition qx-concepts.h:383
The Qx namespace is the main namespace through which all non-global functionality of the Qx library i...
Definition qx-abstracterror.cpp:13
@ NoWriteOptions
Definition qx-common-io.h:30
WriteMode
Definition qx-common-io.h:27
@ Append
Definition qx-common-io.h:27
QFlags< WriteOption > WriteOptions
Definition qx-common-io.h:38
The qx-common-io header file provides various types, variables, and functions related to file IO.