Qx v0.7
Qt Extensions Library
Loading...
Searching...
No Matches
qx-textstreamwriter.h
1#ifndef QX_TEXTSTREAMWRITER_H
2#define QX_TEXTSTREAMWRITER_H
3
4// Shared Lib Support
5#include "qx/io/qx_io_export.h"
6
7// Qt Includes
8#include <QTextStream>
9#include <QFile>
10
11// Intra-component Includes
12#include "qx/io/qx-common-io.h"
13#include "qx/io/qx-ioopreport.h"
14
15namespace Qx
16{
17
18class QX_IO_EXPORT TextStreamWriter
19{
20//-Instance Variables------------------------------------------------------------------------------------------------
21private:
22 QFile* mFile;
23 QTextStream mStreamWriter;
24 WriteMode mWriteMode;
25 WriteOptions mWriteOptions;
26 bool mAtLineStart;
27 IoOpReport mStatus;
28
29//-Constructor-------------------------------------------------------------------------------------------------------
30public:
31 TextStreamWriter(WriteMode writeMode = Append, WriteOptions writeOptions = NoWriteOptions);
32 TextStreamWriter(const QString& filePath, WriteMode writeMode = Append, WriteOptions writeOptions = NoWriteOptions);
33
34//-Destructor-------------------------------------------------------------------------------------------------------
35public:
37
38//-Instance Functions------------------------------------------------------------------------------------------------
39private:
40 IoOpReport statusFromNative();
41 IoOpReport preWriteErrorCheck();
42 void setFile(const QString& filePath);
43 void unsetFile();
44
45public:
46 // Stock functions
47 QStringConverter::Encoding encoding() const;
48 QTextStream::FieldAlignment fieldAlignment() const;
49 int fieldWidth() const;
50 const QFile* file() const;
51 void flush();
52 bool generateByteOrderMark() const;
53 int integerBase() const;
54 QLocale locale() const;
55 QTextStream::NumberFlags numberFlags() const;
56 QChar padChar() const;
57 QTextStream::RealNumberNotation realNumberNotation() const;
58 int realNumberPrecision() const;
59 void reset();
60 void resetStatus();
61 void setEncoding(QStringConverter::Encoding encoding);
62 void setFieldAlignment(QTextStream::FieldAlignment mode);
63 void setFieldWidth(int width);
64 void setGenerateByteOrderMark(bool generate);
65 void setIntegerBase(int base);
66 void setLocale(const QLocale& locale);
67 void setNumberFlags(QTextStream::NumberFlags flags);
68 void setPadChar(QChar ch);
69 void setRealNumberNotation(QTextStream::RealNumberNotation notation);
70 void setRealNumberPrecision(int precision);
71 IoOpReport status() const;
72
73 template<typename T>
76 {
77 IoOpReport check = preWriteErrorCheck();
78
79 if(!check.isFailure())
80 {
81 mStreamWriter << d;
82 mStatus = statusFromNative();
83 }
84
85 return *this;
86 }
87
88 QString filePath() const;
89 void setFilePath(const QString& filePath);
90
91 // New functions
92 bool hasError() const;
93 IoOpReport writeLine(QString line, bool ensureLineStart = true);
94 IoOpReport writeText(QString text);
95 IoOpReport openFile();
96 void closeFile();
97 bool fileIsOpen() const;
98};
99
100}
101
102#endif // QX_TEXTSTREAMWRITER_H
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
void setNumberFlags(QTextStream::NumberFlags flags)
Definition qx-textstreamwriter.cpp:301
QString filePath() const
Definition qx-textstreamwriter.cpp:427
QTextStream::RealNumberNotation realNumberNotation() const
Definition qx-textstreamwriter.cpp:208
void setPadChar(QChar ch)
Definition qx-textstreamwriter.cpp:309
QTextStream::FieldAlignment fieldAlignment() const
Definition qx-textstreamwriter.cpp:142
void resetStatus()
Definition qx-textstreamwriter.cpp:233
bool generateByteOrderMark() const
Definition qx-textstreamwriter.cpp:173
TextStreamWriter & operator<<(T d)
Definition qx-textstreamwriter.h:75
void flush()
Definition qx-textstreamwriter.cpp:163
void setRealNumberNotation(QTextStream::RealNumberNotation notation)
Definition qx-textstreamwriter.cpp:317
void setFieldWidth(int width)
Definition qx-textstreamwriter.cpp:264
IoOpReport status() const
Definition qx-textstreamwriter.cpp:335
void setLocale(const QLocale &locale)
Definition qx-textstreamwriter.cpp:292
TextStreamWriter(WriteMode writeMode=Append, WriteOptions writeOptions=NoWriteOptions)
Definition qx-textstreamwriter.cpp:42
void setGenerateByteOrderMark(bool generate)
Definition qx-textstreamwriter.cpp:273
void setRealNumberPrecision(int precision)
Definition qx-textstreamwriter.cpp:327
void reset()
Definition qx-textstreamwriter.cpp:222
void setIntegerBase(int base)
Definition qx-textstreamwriter.cpp:281
const QFile * file() const
Definition qx-textstreamwriter.cpp:156
int integerBase() const
Definition qx-textstreamwriter.cpp:180
int fieldWidth() const
Definition qx-textstreamwriter.cpp:149
void setFieldAlignment(QTextStream::FieldAlignment mode)
Definition qx-textstreamwriter.cpp:252
QStringConverter::Encoding encoding() const
Definition qx-textstreamwriter.cpp:135
QLocale locale() const
Definition qx-textstreamwriter.cpp:187
QChar padChar() const
Definition qx-textstreamwriter.cpp:201
QTextStream::NumberFlags numberFlags() const
Definition qx-textstreamwriter.cpp:194
int realNumberPrecision() const
Definition qx-textstreamwriter.cpp:216
void setEncoding(QStringConverter::Encoding encoding)
Definition qx-textstreamwriter.cpp:244
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.