#ifndef OPENMW_CONSTRAINEDFILESTREAM_H
#define OPENMW_CONSTRAINEDFILESTREAM_H

#include "constrainedfilestreambuf.hpp"
#include "streamwithbuffer.hpp"

#include <istream>
#include <memory>
#include <limits>
#include <string>

namespace Files
{

/// A file stream constrained to a specific region in the file, specified by the 'start' and 'length' parameters.
using ConstrainedFileStream = StreamWithBuffer<ConstrainedFileStreamBuf>;

typedef std::unique_ptr<std::istream> IStreamPtr;

IStreamPtr openConstrainedFileStream(const std::string& filename, std::size_t start = 0,
    std::size_t length = std::numeric_limits<std::size_t>::max());

}

#endif