// File:       piscmd15.c++
// Version:    1.00
// Author:     (c) Miles Sabin, 1997
// Purpose:    discard whitespace command

// Change log:
//  27/03/97   v. 1.00

#include "piscmds.h"

#include "istream.h"
#include "streambuf.h"


// Implementation of DiscardWSCommand

DiscardWSCommand::DiscardWSCommand(basic_istream_char& is)
  { execute_template(is, true); }

DiscardWSCommand::~DiscardWSCommand()
  {}

ios::iostate DiscardWSCommand::execute(basic_istream_char& is)
  {
    basic_streambuf_char* sb = is.rdbuf();

    int c = sb->sgetc();
    while(c != basic_istream_char::traits::eof() && isspace(c))
      c = sb->snextc();

    return ios::goodbit;
  }


// Implementation of basic_istream_char free fns

basic_istream_char& ws(basic_istream_char& is)
{
  DiscardWSCommand cmd(is);
  return is;
}
