00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 00002 00003 /* 00004 Sonic Visualiser 00005 An audio file viewer and annotation editor. 00006 Centre for Digital Music, Queen Mary, University of London. 00007 This file copyright 2006 Chris Cannam. 00008 00009 This program is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU General Public License as 00011 published by the Free Software Foundation; either version 2 of the 00012 License, or (at your option) any later version. See the file 00013 COPYING included with this distribution for more information. 00014 */ 00015 00016 #include "DataFileReaderFactory.h" 00017 #include "MIDIFileReader.h" 00018 #include "CSVFileReader.h" 00019 00020 #include "model/Model.h" 00021 00022 #include <QString> 00023 00024 QString 00025 DataFileReaderFactory::getKnownExtensions() 00026 { 00027 return "*.svl *.csv *.lab *.mid *.txt"; 00028 } 00029 00030 DataFileReader * 00031 DataFileReaderFactory::createReader(QString path, size_t mainModelSampleRate) 00032 { 00033 QString err; 00034 00035 DataFileReader *reader = 0; 00036 00037 reader = new MIDIFileReader(path, mainModelSampleRate); 00038 if (reader->isOK()) return reader; 00039 if (reader->getError() != "") err = reader->getError(); 00040 delete reader; 00041 00042 reader = new CSVFileReader(path, mainModelSampleRate); 00043 if (reader->isOK()) return reader; 00044 if (reader->getError() != "") err = reader->getError(); 00045 delete reader; 00046 00047 return 0; 00048 } 00049 00050 Model * 00051 DataFileReaderFactory::load(QString path, size_t mainModelSampleRate) 00052 { 00053 DataFileReader *reader = createReader(path, mainModelSampleRate); 00054 if (!reader) return NULL; 00055 00056 try { 00057 Model *model = reader->load(); 00058 delete reader; 00059 return model; 00060 } catch (Exception) { 00061 delete reader; 00062 throw; 00063 } 00064 } 00065
1.5.1