#pragma once

#ifndef TSIO_RAW_INCLUDED
#define TSIO_RAW_INCLUDED

#include "tsound_io.h"

//==========================================================

/*!
The class TSoundTrackReaderRaw reads audio files having
.raw extension (this kind of file contains only the sample)
*/
class TSoundTrackReaderRaw final : public TSoundTrackReader {
public:
  TSoundTrackReaderRaw(const TFilePath &fp);
  ~TSoundTrackReaderRaw() {}

  /*!
Loads the .raw 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 .raw audio files
*/
  static TSoundTrackReader *create(const TFilePath &fp) {
    return new TSoundTrackReaderRaw(fp);
  }
};

//==========================================================

/*!
The class TSoundTrackWriterRaw writes audio file having
.raw extension (this kind of file contains only the sample)
*/
class TSoundTrackWriterRaw final : public TSoundTrackWriter {
public:
  TSoundTrackWriterRaw(const TFilePath &fp);
  ~TSoundTrackWriterRaw() {}

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

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

#endif
