annotate data/fileio/MatchFileReader.h @ 537:3cc4b7cd2aa5

* Merge from one-fftdataserver-per-fftmodel branch. This bit of reworking (which is not described very accurately by the title of the branch) turns the MatrixFile object into something that either reads or writes, but not both, and separates the FFT file cache reader and writer implementations separately. This allows the FFT data server to have a single thread owning writers and one reader per "customer" thread, and for all locking to be vastly simplified and concentrated in the data server alone (because none of the classes it makes use of is used in more than one thread at a time). The result is faster and more trustworthy code.
author Chris Cannam
date Tue, 27 Jan 2009 13:25:10 +0000
parents c022976d18e8
children 06f13a3b9e9e
rev   line source
Chris@297 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@297 2
Chris@297 3 /*
Chris@297 4 Sonic Visualiser
Chris@297 5 An audio file viewer and annotation editor.
Chris@297 6 Centre for Digital Music, Queen Mary, University of London.
Chris@297 7 This file copyright 2007 QMUL.
Chris@297 8
Chris@297 9 This program is free software; you can redistribute it and/or
Chris@297 10 modify it under the terms of the GNU General Public License as
Chris@297 11 published by the Free Software Foundation; either version 2 of the
Chris@297 12 License, or (at your option) any later version. See the file
Chris@297 13 COPYING included with this distribution for more information.
Chris@297 14 */
Chris@297 15
Chris@297 16 #ifndef _MATCH_FILE_READER_H_
Chris@297 17 #define _MATCH_FILE_READER_H_
Chris@297 18
Chris@297 19 #include <vector>
Chris@297 20 #include <QString>
Chris@297 21
Chris@297 22 class QFile;
Chris@297 23 class Model;
Chris@297 24
Chris@297 25 class Alignment
Chris@297 26 {
Chris@297 27 public:
Chris@297 28 Alignment();
Chris@297 29
Chris@297 30 typedef std::vector<int> FrameArray;
Chris@297 31
Chris@297 32 double thisHopTime;
Chris@297 33 double refHopTime;
Chris@297 34
Chris@297 35 FrameArray thisIndex;
Chris@297 36 FrameArray refIndex;
Chris@297 37
Chris@297 38 double fromReference(double) const;
Chris@297 39 double toReference(double) const;
Chris@297 40
Chris@297 41 //!!! blah
Chris@297 42 void setMainModel(Model *m) { m_mainModel = m; }
Chris@297 43 bool isMainModel(Model *m) const { return m == m_mainModel; }
Chris@297 44
Chris@297 45 int search(const FrameArray &arr, int val) const;
Chris@297 46
Chris@297 47 protected:
Chris@297 48 Model *m_mainModel;
Chris@297 49 };
Chris@297 50
Chris@297 51 class MatchFileReader
Chris@297 52 {
Chris@297 53 public:
Chris@297 54 MatchFileReader(QString path);
Chris@297 55 virtual ~MatchFileReader();
Chris@297 56
Chris@297 57 virtual bool isOK() const;
Chris@297 58 virtual QString getError() const;
Chris@297 59 virtual Alignment load() const;
Chris@297 60
Chris@297 61 protected:
Chris@297 62 QFile *m_file;
Chris@297 63 QString m_error;
Chris@297 64 };
Chris@297 65
Chris@297 66 #endif
Chris@297 67