/**
 * @file stream_util.h
 * C++ stream utility
 *
 * @remark Copyright 2003 OProfile authors
 * @remark Read the file COPYING
 *
 * @author Philippe Elie
 * @author John Levon
 */

#ifndef STREAM_UTIL_H
#define STREAM_UTIL_H

#include <iostream>

/// class which save a stream state and restore it at dtor time
class io_state {
public:
	/**
	 * save the stream flags, precision and fill char.
	 *
	 * width is restored at end of expression, there is no need to save it.
	 * tie and locale are not saved currently
	 *
	 * error state shouldn't be saved.
	 */
	io_state(std::ios & stream);
	/// restore the stream state
	~io_state();
private:
	std::ios & stream;

	std::ios::fmtflags format;
	std::streamsize precision;
	char fill;
};

#endif /* !STREAM_UTIL_H */