annotate data/fileio/MatchFileReader.h @ 299:576be0d0d218

* Merge transform directory from sv-match-alignment branch (the previous comment included notes for this stuff, but I missed it in the actual merge) * Fix crash when a transform fails to create an output model and the thread that created the transform then deletes its input model thinking it's no longer needed, even though the transform run thread is still using it -- fix is to wait() on the transform before returning the null output model
author Chris Cannam
date Fri, 28 Sep 2007 16:15:06 +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