File *FileRef::create(const char *fileName, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle) // static { List::ConstIterator it = FileRefPrivate::fileTypeResolvers.begin(); for(; it != FileRefPrivate::fileTypeResolvers.end(); ++it) { File *file = (*it)->createFile(fileName, readAudioProperties, audioPropertiesStyle); if(file) return file; } // Ok, this is really dumb for now, but it works for testing. String s = fileName; // If this list is updated, the method defaultFileExtensions() should also be // updated. However at some point that list should be created at the same time // that a default file type resolver is created. if(s.size() > 4) { if(s.substr(s.size() - 4, 4).upper() == ".OGG") return new Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); if(s.substr(s.size() - 4, 4).upper() == ".MP3") return new MPEG::File(fileName, readAudioProperties, audioPropertiesStyle); if(s.substr(s.size() - 5, 5).upper() == ".FLAC") return new FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); if(s.substr(s.size() - 4, 4).upper() == ".MPC") return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); } return 0; }