#pragma once

#ifndef TSIO_AIFF_INCLUDED
#define TSIO_AIFF_INCLUDED

#include "tsound_io.h"

//==========================================================
/*!
The class TSoundTrackReaderAiff reads audio files having
.aiff extension
*/

class TSoundTrackReaderAiff final : public TSoundTrackReader {
public:
  TSoundTrackReaderAiff(const TFilePath &fp);
  ~TSoundTrackReaderAiff() {}

  /*!
Loads the .aiff audio file whose path has been specified in the constructor.
It returns a TSoundTrackP created from the audio file
*/
  TSoundTrackP load() override;

  /*!
Returns a soundtrack reader able to read .aiff audio files
*/
  static TSoundTrackReader *create(const TFilePath &fp) {
    return new TSoundTrackReaderAiff(fp);
  }
};

//==========================================================
/*!
The class TSoundTrackWriterAiff writes audio file having
.aiff extension
*/
class TSoundTrackWriterAiff final : public TSoundTrackWriter {
public:
  TSoundTrackWriterAiff(const TFilePath &fp);
  ~TSoundTrackWriterAiff() {}

  /*!
Saves the information of the soundtrack in .aiff audio file
whose path has been specified in the constructor.
*/
  bool save(const TSoundTrackP &) override;

  /*!
Returns a soundtrack writer able to write .aiff audio files
*/
  static TSoundTrackWriter *create(const TFilePath &fp) {
    return new TSoundTrackWriterAiff(fp);
  }
};

#endif
