Qx v0.7
Qt Extensions Library
Loading...
Searching...
No Matches
qx-filestreamreader.h
1#ifndef QX_FILESTREAMREADER_H
2#define QX_FILESTREAMREADER_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-ioopreport.h"
13
14// Extra-component Includes
16
17namespace Qx
18{
19
20class QX_IO_EXPORT FileStreamReader // Specialized wrapper for QDataStream
21{
22//-Instance Variables------------------------------------------------------------------------------------------------
23private:
24 QFile* mFile;
25 QDataStream mStreamReader;
26 IoOpReport mStatus;
27
28//-Constructor-------------------------------------------------------------------------------------------------------
29public:
31 FileStreamReader(const QString& filePath);
32
33//-Destructor-------------------------------------------------------------------------------------------------------
34public:
36
37//-Instance Functions------------------------------------------------------------------------------------------------
38private:
39 IoOpReport statusFromNative();
40 IoOpReport preReadErrorCheck();
41 void setFile(const QString& filePath);
42 void unsetFile();
43
44public:
45 // Stock functions
46 bool atEnd() const;
47 QDataStream::ByteOrder byteOrder() const;
48 const QFile* file() const;
49 QDataStream::FloatingPointPrecision floatingPointPrecision() const;
50 IoOpReport readRawData(QByteArray& data, int len);
51 void resetStatus();
52 void setByteOrder(QDataStream::ByteOrder bo);
53 void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision);
54 IoOpReport skipRawData(int len);
55 IoOpReport status() const;
56
57 template<typename T>
60 {
61 IoOpReport check = preReadErrorCheck();
62
63 if(!check.isFailure())
64 {
65 mStreamReader >> d;
66 mStatus = statusFromNative();
67 }
68
69 return *this;
70 }
71
72 QString filePath() const;
73 void setFilePath(const QString& filePath);
74
75 // New functions
76 bool hasError() const;
77 IoOpReport openFile();
78 void closeFile();
79 bool fileIsOpen() const;
80};
81
82}
83
84#endif // QX_FILESTREAMREADER_H
IoOpReport readRawData(QByteArray &data, int len)
Definition qx-filestreamreader.cpp:131
QString filePath() const
Definition qx-filestreamreader.cpp:282
bool atEnd() const
Definition qx-filestreamreader.cpp:99
const QFile * file() const
Definition qx-filestreamreader.cpp:113
FileStreamReader & operator>>(T &d)
Definition qx-filestreamreader.h:59
FileStreamReader()
Definition qx-filestreamreader.cpp:35
QDataStream::FloatingPointPrecision floatingPointPrecision() const
Definition qx-filestreamreader.cpp:120
void setByteOrder(QDataStream::ByteOrder bo)
Definition qx-filestreamreader.cpp:191
QDataStream::ByteOrder byteOrder() const
Definition qx-filestreamreader.cpp:106
IoOpReport status() const
Definition qx-filestreamreader.cpp:250
IoOpReport skipRawData(int len)
Definition qx-filestreamreader.cpp:214
void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision)
Definition qx-filestreamreader.cpp:203
void resetStatus()
Definition qx-filestreamreader.cpp:176
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 right shift operator for another type.
Definition qx-concepts.h:395
The Qx namespace is the main namespace through which all non-global functionality of the Qx library i...
Definition qx-abstracterror.cpp:13
The qx-concepts header file provides a library of general purpose concepts as an extension of the sta...