//Embedded C++ Library //Copyright (c) Hitachi,Ltd. 1997 //Licensed material of Hitachi,Ltd //==================================================================== // File: istream // Purpose: Definition of class istream // Create: 1997.09.20 Rev. 1.0 //==================================================================== #ifndef _ISTREAM_ #define _ISTREAM_ #include class istream : public ios { public: // Types (inherited from ios): // typedef INT_T int_type; // typedef POS_T pos_type; // typedef OFF_T off_type; istream(streambuf *sb) :chcount(0),ios(sb){} // Constructor virtual ~istream(){} // Destructor class sentry; // Prefix/Suffix // Formatted input istream& operator >>(istream& (*pf)(istream&)){ return ((*pf)(*this)); } istream& operator >>(ios& (*pf)(ios&)){ (*pf)(* (ios *)this); return (*this); } istream& operator>> (ios_base& (*pf)(ios_base&)){ (*pf)(* (ios*)this); return (*this); } istream & operator >>(bool &n); istream & operator >>(short &n); istream & operator >>(unsigned short &n); istream & operator >>(int &n); istream & operator >>(unsigned int &n); istream & operator >>(long &n); istream & operator >>(unsigned long &n); istream & operator >>(float &f); istream & operator >>(double &f); istream & operator >>(long double &f); istream & operator >>(void * &p); istream & operator >>(streambuf *sb); // Unformatted input streamsize gcount() const{return chcount;} int_type get(); istream & get( char& c ); istream & get( signed char& c ); istream & get( unsigned char& c ); istream & get( char* s, streamsize n); istream & get( char* s, streamsize n, char delim ); istream & get( signed char* s, streamsize n); istream & get( signed char* s, streamsize n, char delim ); istream & get( unsigned char* s, streamsize n); istream & get( unsigned char* s, streamsize n, char delim ); istream & get( streambuf& sb); istream & get( streambuf& sb, char delim ); istream & getline( char* s, streamsize n); istream & getline( char* s, streamsize n, char delim ); istream & getline( signed char* s, streamsize n ); istream & getline( signed char* s, streamsize n, char delim ); istream & getline( unsigned char* s, streamsize n ); istream & getline( unsigned char* s, streamsize n, char delim ); istream & ignore( streamsize n=1, int_type delim=streambuf::eof ); int_type peek(); istream & read( char* s, streamsize n ); istream & read( signed char* s, streamsize n ); istream & read( unsigned char* s, streamsize n ); streamsize readsome( char* s, streamsize n ); streamsize readsome( signed char* s, streamsize n ); streamsize readsome( unsigned char* s, streamsize n ); istream & putback( char c ); istream & unget(); int sync(); pos_type tellg(); istream & seekg( pos_type pos ); istream & seekg( off_type off, ios_base::seekdir dir ); private: streamsize chcount; streamsize _ec2p_gets( char* s, streamsize n, char delim, int mode ); int _ec2p_getistr(char* str, unsigned int dig, int mode); int _ec2p_getfstr(char* str, unsigned int dig); unsigned long _ec2p_strtoul(char *nptr, char **endptr, int base); long _ec2p_extlong(); unsigned long _ec2p_extulong(); }; class istream::sentry { public: sentry(istream& is, bool noskipws = false); ~sentry(){} operator bool() { return ok_; } private: bool ok_; }; // character extraction templates: istream& operator>>(istream&, char&); istream& operator>>(istream&, unsigned char&); istream& operator>>(istream&, signed char&); istream& operator>>(istream&, char*); istream& operator>>(istream&, unsigned char*); istream& operator>>(istream&, signed char*); // Manipulator istream& ws(istream& is ); #endif