1 // Copyright (c) 2016 The SigViewer Development Team
2 // Licensed under the GNU General Public License (GPL)
3 // https://www.gnu.org/licenses/gpl
4 
5 #ifndef FILE_SIGNAL_READER_H
6 #define FILE_SIGNAL_READER_H
7 
8 #include "basic_header.h"
9 #include "base/signal_event.h"
10 #include "base/data_block.h"
11 #include "application_context_impl.h"
12 
13 #include <QFile>
14 #include <QVector>
15 #include <QPointer>
16 #include <QSharedPointer>
17 #include <QPair>
18 
19 class QString;
20 
21 namespace sigviewer
22 {
23 
24 //-----------------------------------------------------------------------------
25 /// FileSignalReader
26 ///
27 /// abstract base class for reading signals from a file
28 class FileSignalReader
29 {
30 public:
31     typedef QVector<SignalEvent> SignalEventVector;
32 
~FileSignalReader()33     virtual ~FileSignalReader() {}
34 
35     virtual QPair<FileSignalReader*, QString> createInstance (QString const& file_path) = 0;
36 
37     virtual QSharedPointer<DataBlock const> getSignalData (ChannelID channel_id,
38                                                            size_t start_sample,
39                                                            size_t length) const = 0;
40 
41     virtual QList<QSharedPointer<SignalEvent const> > getEvents () const = 0;
42 
43     virtual QSharedPointer<BasicHeader> getBasicHeader () = 0;
44 
45     virtual QSharedPointer<BasicHeader const> getBasicHeader () const = 0;
46 
47     int setEventTypeColors();  /*!< Set a distinct color for each event type. */
48 
49 protected:
FileSignalReader()50     FileSignalReader () {}
51 
52 private:
53     Q_DISABLE_COPY(FileSignalReader)
54 };
55 
56 }
57 
58 #endif
59