// Copyright (C) 2010, Guy Barrand. All rights reserved.
// See the file tools.license for terms.

#ifndef tools_rroot_ifile
#define tools_rroot_ifile

#include "seek"
#include "../press_func"

namespace tools {
namespace rroot {

class key;
class streamer_info;

class ifile {
public:
  virtual ~ifile(){}
public:
  virtual const std::string& path() const = 0;

  virtual bool verbose() const = 0;
  virtual std::ostream& out() const = 0;
  virtual bool byte_swap() const = 0;
  enum from {
    begin,
    current,
    end
  };
  virtual bool set_pos(seek = 0,from = begin) = 0;
  virtual bool read_buffer(char*,uint32) = 0;

  virtual bool unziper(char,decompress_func&) const = 0;

  virtual key& sinfos_key() = 0;

  virtual streamer_info* find_streamer_info(const std::string&) = 0;
};

}}

#endif
