﻿// Copyright 2012, 2013, 2014 Derek J. Bailey
// Modified work Copyright 2016 Stefan Solntsev
// 
// This file (IMsDataFile.cs) is part of MassSpectrometry.
// 
// MassSpectrometry is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// MassSpectrometry is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
// License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with MassSpectrometry. If not, see <http://www.gnu.org/licenses/>.

using Spectra;
using System.Collections.Generic;

namespace MassSpectrometry
{

    public interface IMsDataFile<out TSpectrum> : IEnumerable<IMsDataScan<TSpectrum>>
        where TSpectrum : IMzSpectrum<MzPeak>
    {
        IMsDataScan<TSpectrum> GetScan(int scanNumber);
        string Name { get; }
        int FirstSpectrumNumber { get; }
        int LastSpectrumNumber { get; }
        string FilePath { get; }
        void Open();
        void LoadAllScansInMemory();
    }
}