Accelerated Computation Engine
ace_dataobject.h
1 #ifndef ACE_DATAOBJECT_H
2 #define ACE_DATAOBJECT_H
3 #include <QtCore>
4 #include "emetadata.h"
5 #include "global.h"
6 //
7 
8 
9 
10 namespace Ace
11 {
21  class DataObject : public QObject
22  {
23  Q_OBJECT
24  public:
25  explicit DataObject(const QString& path, QObject* parent = nullptr);
26  explicit DataObject(const QString& path, quint16 type, const EMetadata& system, QObject* parent = nullptr);
27  QString rawPath() const;
28  QString path() const;
29  QString fileName() const;
30  quint16 type() const;
31  qint64 size() const;
32  const EMetadata& systemMeta() const;
33  const EMetadata& userMeta() const;
34  void seek(qint64 index) const;
35  const EDataStream& stream() const;
36  void allocate(int size);
39  void setUserMeta(const EMetadata& newRoot);
40  void finalize();
41  void read(char* data, qint64 size) const;
42  void write(const char* data, qint64 size);
43  signals:
49  void overwritten();
50  public slots:
51  void dataOverwritten(const QString& canonicalPath, Ace::DataObject* object);
52  private:
53  void openObject(bool overwrite);
54  void readHeader();
55  void writeHeader();
56  void makeData(const QString& name, const QString& extension);
61  constexpr static qint64 _specialValue {584};
65  QString _rawPath;
69  quint16 _type;
73  QString _path;
77  QString _fileName;
82  EMetadata _system;
86  QFile* _file {nullptr};
90  EDataStream* _stream {nullptr};
94  EAbstractData* _data {nullptr};
101  qint64 _headerOffset;
106  bool _headerRead {false};
110  EMetadata _userMeta {EMetadata::Object};
111  };
112 }
113 
114 
115 
116 #endif
qint64 size() const
Definition: ace_dataobject.cpp:188
Definition: edatastream.h:21
const EDataStream & stream() const
Definition: ace_dataobject.cpp:279
Definition: ace.h:6
void read(char *data, qint64 size) const
Definition: ace_dataobject.cpp:426
const EMetadata & systemMeta() const
Definition: ace_dataobject.cpp:206
const EMetadata & userMeta() const
Definition: ace_dataobject.cpp:224
void setUserMeta(const EMetadata &newRoot)
Definition: ace_dataobject.cpp:374
void seek(qint64 index) const
Definition: ace_dataobject.cpp:244
void allocate(int size)
Definition: ace_dataobject.cpp:303
DataObject(const QString &path, QObject *parent=nullptr)
Definition: ace_dataobject.cpp:28
void write(const char *data, qint64 size)
Definition: ace_dataobject.cpp:469
void dataOverwritten(const QString &canonicalPath, Ace::DataObject *object)
Definition: ace_dataobject.cpp:509
Definition: eabstractdata.h:23
Definition: emetadata.h:22
quint16 type() const
Definition: ace_dataobject.cpp:170
void finalize()
Definition: ace_dataobject.cpp:402
EAbstractData * data()
Definition: ace_dataobject.cpp:355
QString fileName() const
Definition: ace_dataobject.cpp:153
QString rawPath() const
Definition: ace_dataobject.cpp:119
QString path() const
Definition: ace_dataobject.cpp:136
Definition: ace_dataobject.h:21