#ifndef __pxx_fd_text_stream_hh__
#define __pxx_fd_text_stream_hh__

#include "pxx_text_stream.hh"
#include "pxx_fd_buffer.hh"

namespace pxx
{

class FD_TextStream :
  public TextStream,
  public FD_Buffer
{

public:

  inline FD_TextStream (
    int _fd, io_mode_t _mode, size_t _bufsize = Buffer::default_size
  ) ;

  inline ~FD_TextStream () ;

  inline FD_TextStream& flush () ;

  void put (char _c) ;
  void get (char& _c) ;
  void unget (char _c) ;
  size_t read (void* _buf, size_t _len) ;
  size_t write (void* _buf, size_t _len) ;

};

}

#endif // __pxx_fd_text_stream_hh__
