#ifndef DRACO_IO_FILE_READER_INTERFACE_H_
#define DRACO_IO_FILE_READER_INTERFACE_H_

#include <cstddef>
#include <cstdint>
#include <vector>

namespace draco {

class FileReaderInterface {
 public:
  FileReaderInterface() = default;
  FileReaderInterface(const FileReaderInterface &) = delete;
  FileReaderInterface &operator=(const FileReaderInterface &) = delete;

  FileReaderInterface(FileReaderInterface &&) = default;
  FileReaderInterface &operator=(FileReaderInterface &&) = default;

  // Closes the file.
  virtual ~FileReaderInterface() = default;

  // Reads the entire contents of the input file into |buffer| and returns true.
  virtual bool ReadFileToBuffer(std::vector<char> *buffer) = 0;
  virtual bool ReadFileToBuffer(std::vector<uint8_t> *buffer) = 0;

  // Returns the size of the file.
  virtual size_t GetFileSize() = 0;
};

}  // namespace draco

#endif  // DRACO_IO_FILE_READER_INTERFACE_H_