summaryrefslogtreecommitdiffstats
path: root/private/crt32/iostream/istrget.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/crt32/iostream/istrget.cxx')
-rw-r--r--private/crt32/iostream/istrget.cxx65
1 files changed, 65 insertions, 0 deletions
diff --git a/private/crt32/iostream/istrget.cxx b/private/crt32/iostream/istrget.cxx
new file mode 100644
index 000000000..7b099cda7
--- /dev/null
+++ b/private/crt32/iostream/istrget.cxx
@@ -0,0 +1,65 @@
+/***
+* istrget.cxx - definitions for istream class get() member functions
+*
+* Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Definitions of get() member functions for istream class.
+* [AT&T C++]
+*
+*Revision History:
+* 09-26-91 KRS Created. Split off from istream.cxx for granularity.
+*
+*******************************************************************************/
+
+#include <cruntime.h>
+#include <internal.h>
+#include <iostream.h>
+#pragma hdrstop
+
+// unformatted input functions
+
+int istream::get()
+{
+ int c;
+ if (ipfx(1)) // resets x_gcount
+ {
+ if ((c=bp->sbumpc())==EOF)
+ state |= ios::eofbit;
+ else
+ x_gcount++;
+ isfx();
+ return c;
+ }
+ return EOF;
+}
+
+// signed and unsigned char make inline calls to this:
+istream& istream::get( char& c)
+{
+ int temp;
+ if (ipfx(1)) // resets x_gcount
+ {
+ if ((temp=bp->sbumpc())==EOF)
+ state |= (ios::failbit|ios::eofbit); // UNDONE ??
+ else
+ x_gcount++;
+ c = (char) temp;
+ isfx();
+ }
+ return *this;
+}
+
+
+// called by signed and unsigned char versions
+istream& istream::read(char * ptr, int n)
+{
+ if (ipfx(1)) // resets x_gcount
+ {
+ x_gcount = bp->sgetn(ptr, n);
+ if ((unsigned)x_gcount < (unsigned)n)
+ state |= (ios::failbit|ios::eofbit);
+ isfx();
+ }
+ return *this;
+}