Index: libcfa/src/containers/string.cfa
===================================================================
--- libcfa/src/containers/string.cfa	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ libcfa/src/containers/string.cfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug  7 10:07:26 2023
-// Update Count     : 2
+// Last Modified On : Sat Aug 12 15:24:18 2023
+// Update Count     : 6
 //
 
@@ -100,13 +100,18 @@
 
 ////////////////////////////////////////////////////////
-// Output
-
-ofstream & ?|?( ofstream & fs, const string & this ) {
-    return fs | (*this.inner);
-}
-
-void ?|?( ofstream & fs, const string & this ) {
-    fs | (*this.inner);
-}
+// Input-Output
+
+ofstream & ?|?( ofstream & out, const string & this ) {
+    return out | (*this.inner); // print internal string_res
+}
+
+void ?|?( ofstream & out, const string & this ) {
+    (ofstream &)(out | (*this.inner)); ends( out );
+}
+
+ifstream & ?|?(ifstream &in, string &this) {
+    return in | (*this.inner); // read to internal string_res
+}
+
 
 ////////////////////////////////////////////////////////
Index: libcfa/src/containers/string.hfa
===================================================================
--- libcfa/src/containers/string.hfa	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ libcfa/src/containers/string.hfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -55,4 +55,5 @@
 ofstream & ?|?(ofstream &out, const string &s);
 void ?|?(ofstream &out, const string &s);
+ifstream & ?|?(ifstream &in, string &s);
 
 // Concatenation
Index: libcfa/src/containers/string_res.cfa
===================================================================
--- libcfa/src/containers/string_res.cfa	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ libcfa/src/containers/string_res.cfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 29 09:29:06 2023
-// Update Count     : 2
+// Last Modified On : Sat Aug 12 15:37:47 2023
+// Update Count     : 10
 //
 
@@ -17,4 +17,5 @@
 #include "string_sharectx.hfa"
 #include "stdlib.hfa"
+#include <ctype.h>
 
 // Workaround for observed performance penalty from calling CFA's alloc.
@@ -134,5 +135,5 @@
 	serr | nlOff;
 	serr | " lnth:" | lnth | " s:" | (void *)s | ",\"";
-	for ( int i = 0; i < lnth; i += 1 ) {
+	for ( i; lnth ) {
 	    serr | s[i];
 	} // for
@@ -198,30 +199,52 @@
 // Output operator
 ofstream & ?|?(ofstream &out, const string_res &s) {
-    // Store auto-newline state so it can be restored
-    bool anl = getANL$(out);
-    nlOff(out);
-    for (size_t i = 0; i < s.Handle.lnth; i++) {
-        out | s[i];
-    }
-    out | sepVal;
-    // Re-apply newlines after done, for chaining version
-    if (anl) nlOn(out);
+	// CFA string is NOT null terminated, so print exactly lnth characters in a minimum width of 0.
+	out | wd( 0, s.Handle.lnth, s.Handle.s ) | nonl;
     return out;
 }
 
 void ?|?(ofstream &out, const string_res &s) {
-    // Store auto-newline state so it can be restored
-    bool anl = getANL$(out);
-    if( s.Handle.lnth == 0 ) {
-        sout | "";
-    } else {
-        nlOff(out);
-        for (size_t i = 0; i < s.Handle.lnth; i++) {
-            // Need to re-apply on the last output operator, for whole-statement version
-            if (anl && i == s.Handle.lnth-1) nlOn(out);
-            out | s[i];
-        }
-    }
-}
+	(ofstream &)(out | s); ends( out );
+}
+
+// Input operator
+ifstream & ?|?(ifstream &in, string_res &s) {
+
+    // Reading into a temp before assigning to s is near zero overhead in typical cases because of sharing.
+    // If s is a substring of something larger, simple assignment takes care of that case correctly.
+    // But directly reading a variable amount of text into the middle of a larger context is not practical.
+    string_res temp;
+
+    // Read in chunks.  Often, one chunk is enough.  Keep the string that accumulates chunks last in the heap,
+    // so available room is rest of heap.  When a chunk fills the heap, force growth then take the next chunk.
+    for (;;) {
+        // Append dummy content to temp, forcing expansion when applicable (occurs always on subsequent loops)
+        // length 2 ensures room for at least one real char, plus scanf/pipe-cstr's null terminator
+        temp += "--";
+        assert( temp.Handle.ulink->EndVbyte == temp.Handle.s + temp.Handle.lnth );    // last in heap
+
+        // reset, to overwrite the appended "--"
+        temp.Handle.lnth -= 2;
+        temp.Handle.ulink->EndVbyte -= 2;
+
+        // rest of heap, less 1 byte for null terminator, is available to read into
+        int lenReadable = (char*)temp.Handle.ulink->ExtVbyte - temp.Handle.ulink->EndVbyte - 1;
+        assert (lenReadable >= 1);
+
+        // get bytes
+        in | wdi( lenReadable, temp.Handle.ulink->EndVbyte );
+        int lenWasRead = strlen(temp.Handle.ulink->EndVbyte);
+
+        // update metadata
+        temp.Handle.lnth += lenWasRead;
+        temp.Handle.ulink->EndVbyte += lenWasRead;
+
+      if (lenWasRead < lenReadable) break;
+    }
+
+    s = temp;
+    return in;
+}
+
 
 // Empty constructor
@@ -338,5 +361,5 @@
     // adjust all substring string and handle locations, and check if any substring strings are outside the new base string
     char *limit = resultSesStart + resultSesLnth;
-    for (string_res * p = this.shareEditSet_next; p != &this; p = p->shareEditSet_next) {
+    for ( string_res * p = this.shareEditSet_next; p != &this; p = p->shareEditSet_next ) {
         verify (p->Handle.s >= beforeBegin);
         if ( p->Handle.s >= afterBegin ) {
@@ -391,9 +414,8 @@
 }
 
-static string_res & assign_(string_res &this, const char* buffer, size_t bsize, const string_res & valSrc) {
-
-    // traverse the incumbent share-edit set (SES) to recover the range of a base string to which `this` belongs
-    string_res * shareEditSetStartPeer = & this;
-    string_res * shareEditSetEndPeer = & this;
+// traverse the share-edit set (SES) to recover the range of a base string to which `this` belongs
+static void locateInShareEditSet( string_res &this, string_res *&shareEditSetStartPeer, string_res *&shareEditSetEndPeer ) {
+    shareEditSetStartPeer = & this;
+    shareEditSetEndPeer = & this;
     for (string_res * editPeer = this.shareEditSet_next; editPeer != &this; editPeer = editPeer->shareEditSet_next) {
         if ( editPeer->Handle.s < shareEditSetStartPeer->Handle.s ) {
@@ -404,4 +426,11 @@
         }
     }
+}
+
+static string_res & assign_(string_res &this, const char* buffer, size_t bsize, const string_res & valSrc) {
+
+    string_res * shareEditSetStartPeer;
+    string_res * shareEditSetEndPeer;
+    locateInShareEditSet( this, shareEditSetStartPeer, shareEditSetEndPeer );
 
     verify( shareEditSetEndPeer->Handle.s >= shareEditSetStartPeer->Handle.s );
@@ -589,5 +618,5 @@
 
 bool contains(const string_res &s, char ch) {
-    for (i; size(s)) {
+    for ( i; size(s) ) {
         if (s[i] == ch) return true;
     }
@@ -643,5 +672,5 @@
     }
 
-    for (size_t i = fromPos; i < s.Handle.lnth; i++) {
+    for ( i; fromPos ~ s.Handle.lnth ) {
         size_t remaining = s.Handle.lnth - i;
         // Never going to find the search string if the remaining string is
@@ -652,5 +681,5 @@
 
         bool matched = true;
-        for (size_t j = 0; j < searchsize; j++) {
+        for ( j; searchsize ) {
             if (search[j] != s.Handle.s[i + j]) {
                 matched = false;
@@ -740,5 +769,5 @@
 
 int exclude(const string_res &s, const charclass_res &mask) {
-    for (int i = 0; i < size(s); i++) {
+    for ( i; size(s) ) {
         if ( test(mask, s[i]) ) return i;
     }
@@ -747,5 +776,5 @@
 
 int include(const string_res &s, const charclass_res &mask) {
-    for (int i = 0; i < size(s); i++) {
+    for ( i; size(s) ) {
         if ( ! test(mask, s[i]) ) return i;
     }
@@ -775,5 +804,5 @@
 		for ( HandleNode *ni = HeaderPtr->flink; ni != HeaderPtr; ni = ni->flink ) {
 			serr | "\tnode:" | ni | " lnth:" | ni->lnth | " s:" | (void *)ni->s | ",\"";
-			for ( int i = 0; i < ni->lnth; i += 1 ) {
+			for ( i; ni->lnth ) {
 				serr | ni->s[i];
 			} // for
@@ -881,6 +910,6 @@
 	for ( HandleNode *n = HeaderPtr->flink; n != HeaderPtr; n = n->flink ) {
 	    serr | "\tnode:" | n | " lnth:" | n->lnth | " s:" | (void *)n->s | ",\"";
-	    for ( int i = 0; i < n->lnth; i += 1 ) {
-		serr | n->s[i];
+	    for ( i; n->lnth ) {
+			serr | n->s[i];
 	    } // for
 	    serr | "\" flink:" | n->flink | " blink:" | n->blink | nl;
@@ -960,5 +989,5 @@
     EndVbyte = StartVbyte;
     h = Header.flink;					// ignore header node
-    for (;;) {
+    for () {
 		memmove( EndVbyte, h->s, h->lnth );
 		obase = h->s;
@@ -971,5 +1000,5 @@
 		// check if any substrings are allocated within a string
 		
-		for (;;) {
+		for () {
 			if ( h == &Header ) break;			// end of header list ?
 			if ( h->s >= limit ) break;			// outside of current string ?
@@ -1001,5 +1030,5 @@
 			serr | nlOff;
 			serr | "\tnode:" | n | " lnth:" | n->lnth | " s:" | (void *)n->s | ",\"";
-			for ( int i = 0; i < n->lnth; i += 1 ) {
+			for ( i; n->lnth ) {
 				serr | n->s[i];
 			} // for
@@ -1036,5 +1065,5 @@
 			serr | nlOff;
 			serr | "\tnode:" | n | " lnth:" | n->lnth | " s:" | (void *)n->s | ",\"";
-			for ( int i = 0; i < n->lnth; i += 1 ) {
+			for ( i; n->lnth ) {
 				serr | n->s[i];
 			} // for
Index: libcfa/src/containers/string_res.hfa
===================================================================
--- libcfa/src/containers/string_res.hfa	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ libcfa/src/containers/string_res.hfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -9,7 +9,7 @@
 // Author           : Michael L. Brooks
 // Created On       : Fri Sep 03 11:00:00 2021
-// Last Modified By : Michael L. Brooks
-// Last Modified On : Fri Sep 03 11:00:00 2021
-// Update Count     : 1
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sat Aug 12 15:45:47 2023
+// Update Count     : 2
 //
 
@@ -30,5 +30,5 @@
     VbyteHeap *ulink;                   // upward link
 
-    char *s;						// pointer to byte string
+    char *s;							// pointer to byte string
     unsigned int lnth;					// length of byte string
 }; // HandleNode
@@ -101,4 +101,5 @@
 ofstream & ?|?(ofstream &out, const string_res &s);
 void ?|?(ofstream &out, const string_res &s);
+ifstream & ?|?(ifstream &in, string_res &s);
 
 // Concatenation
Index: src/ControlStruct/ExceptDeclNew.cpp
===================================================================
--- src/ControlStruct/ExceptDeclNew.cpp	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ src/ControlStruct/ExceptDeclNew.cpp	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -242,5 +242,5 @@
 }
 
-static ast::ObjectDecl * createExternVTable(
+ast::ObjectDecl * createExternVTable(
 		CodeLocation const & location,
 		std::string const & exceptionName,
@@ -453,5 +453,5 @@
 	std::string const & tableName = decl->name;
 
-    ast::ObjectDecl * retDecl;
+	ast::ObjectDecl * retDecl;
 	if ( decl->storage.is_extern ) {
 		// Unique type-ids are only needed for polymorphic instances.
@@ -475,9 +475,9 @@
 	}
 
-    for ( ast::ptr<ast::Attribute> const & attr : decl->attributes ) {
-        retDecl->attributes.push_back( attr );
-    }
-
-    return retDecl;
+	for ( ast::ptr<ast::Attribute> const & attr : decl->attributes ) {
+		retDecl->attributes.push_back( attr );
+	}
+
+	return retDecl;
 }
 
@@ -485,5 +485,5 @@
 	ast::StructInstType const * postvisit( ast::VTableType const * type ) {
 		auto inst = type->base.as<ast::BaseInstType>();
-        
+
 		std::string vtableName = Virtual::vtableTypeName( inst->name );
 
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ src/Parser/StatementNode.cc	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -10,7 +10,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 14:59:41 2015
-// Last Modified By : Andrew Beach
-// Last Modified On : Tue Apr 11 10:16:00 2023
-// Update Count     : 428
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Aug 11 11:44:15 2023
+// Update Count     : 429
 //
 
@@ -374,12 +374,4 @@
 }
 
-ast::WaitUntilStmt::ClauseNode * build_waituntil_timeout( const CodeLocation & loc, ExpressionNode * when, ExpressionNode * timeout, StatementNode * stmt ) {
-	ast::WhenClause * clause = new ast::WhenClause( loc );
-	clause->when_cond = notZeroExpr( maybeMoveBuild( when ) );
-	clause->stmt = maybeMoveBuild( stmt );
-	clause->target = maybeMoveBuild( timeout );
-	return new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::TIMEOUT, clause );
-}
-
 ast::WaitUntilStmt * build_waituntil_stmt( const CodeLocation & loc, ast::WaitUntilStmt::ClauseNode * root ) {
 	ast::WaitUntilStmt * retStmt = new ast::WaitUntilStmt( loc );
Index: src/Parser/StatementNode.h
===================================================================
--- src/Parser/StatementNode.h	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ src/Parser/StatementNode.h	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -9,7 +9,7 @@
 // Author           : Andrew Beach
 // Created On       : Wed Apr  5 11:42:00 2023
-// Last Modified By : Andrew Beach
-// Last Modified On : Tue Apr 11  9:43:00 2023
-// Update Count     : 1
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Aug 11 11:44:07 2023
+// Update Count     : 2
 //
 
@@ -102,5 +102,4 @@
 ast::WaitUntilStmt::ClauseNode * build_waituntil_clause( const CodeLocation &, ExpressionNode * when, ExpressionNode * targetExpr, StatementNode * stmt );
 ast::WaitUntilStmt::ClauseNode * build_waituntil_else( const CodeLocation &, ExpressionNode * when, StatementNode * stmt );
-ast::WaitUntilStmt::ClauseNode * build_waituntil_timeout( const CodeLocation &, ExpressionNode * when, ExpressionNode * timeout, StatementNode * stmt );
 ast::WaitUntilStmt * build_waituntil_stmt( const CodeLocation &, ast::WaitUntilStmt::ClauseNode * root );
 ast::Stmt * build_with( const CodeLocation &, ExpressionNode * exprs, StatementNode * stmt );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ src/Parser/parser.yy	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 12 23:06:44 2023
-// Update Count     : 6389
+// Last Modified On : Tue Jul 18 22:51:30 2023
+// Update Count     : 6391
 //
 
@@ -1708,23 +1708,9 @@
 	| wor_waituntil_clause wor when_clause_opt ELSE statement
 		{ $$ = new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::LEFT_OR, $1, build_waituntil_else( yylloc, $3, maybe_build_compound( yylloc, $5 ) ) ); }
-	| wor_waituntil_clause wor when_clause_opt timeout statement	%prec THEN
-		{ $$ = new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::LEFT_OR, $1, build_waituntil_timeout( yylloc, $3, $4, maybe_build_compound( yylloc, $5 ) ) ); }
-	// "else" must be conditional after timeout or timeout is never triggered (i.e., it is meaningless)
-	| wor_waituntil_clause wor when_clause_opt timeout statement wor ELSE statement // invalid syntax rule
-		{ SemanticError( yylloc, "syntax error, else clause must be conditional after timeout or timeout never triggered." ); $$ = nullptr; }
-	| wor_waituntil_clause wor when_clause_opt timeout statement wor when_clause ELSE statement
-		{ $$ = new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::LEFT_OR, $1,
-				new ast::WaitUntilStmt::ClauseNode( ast::WaitUntilStmt::ClauseNode::Op::OR, 
-					build_waituntil_timeout( yylloc, $3, $4, maybe_build_compound( yylloc, $5 ) ), 
-					build_waituntil_else( yylloc, $7, maybe_build_compound( yylloc, $9 ) ) ) ); }
 	;
 
 waituntil_statement:
 	wor_waituntil_clause								%prec THEN
-		// SKULLDUGGERY: create an empty compound statement to test parsing of waituntil statement.
-		{
-			$$ = new StatementNode( build_waituntil_stmt( yylloc, $1 ) );
-			// $$ = new StatementNode( build_compound( yylloc, nullptr ) );
-		}
+		{ $$ = new StatementNode( build_waituntil_stmt( yylloc, $1 ) );	}
 	;
 
Index: tests/collections/.expect/string-istream.txt
===================================================================
--- tests/collections/.expect/string-istream.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
+++ tests/collections/.expect/string-istream.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -0,0 +1,50 @@
+The
+quick
+brown
+fox
+jumps
+over...the
+lazy
+dog.
+=
+The
+-
+quick
+--
+brown
+---
+fox
+----
+jumps
+-----
+over...the
+------
+lazy
+-------
+dog.
+--------
+white-box-use-up-1000-char-heap-with-each-320-char-line5678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+---------
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+----------
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+-----------
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+------------
+=
+The
+-
+quick
+--
+brown
+---
+fox
+----
+jumps
+-----
+over...the
+------
+lazy
+-------
+dog.
+--------
Index: tests/collections/.in/string-istream.txt
===================================================================
--- tests/collections/.in/string-istream.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
+++ tests/collections/.in/string-istream.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -0,0 +1,34 @@
+The quick  brown
+
+fox
+ jumps
+ 
+over...the
+	lazy
+	
+dog.
+=
+The quick  brown
+
+fox
+ jumps
+ 
+over...the
+	lazy
+	
+dog.
+white-box-use-up-1000-char-heap-with-each-320-char-line5678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+=
+The quick  brown
+
+fox
+ jumps
+ 
+over...the
+	lazy
+	
+dog.
+=
Index: tests/collections/string-istream.cfa
===================================================================
--- tests/collections/string-istream.cfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
+++ tests/collections/string-istream.cfa	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -0,0 +1,61 @@
+#include <iostream.hfa>
+#include <containers/string.hfa>
+#include <containers/string_res.hfa>
+
+
+void istream_cstr(void) {
+    char s1[999], s2[999], s3[999], si[999];
+    sin | wdi(999,s1) | wdi(999,s2) | wdi(999,s3);
+    sout | s1;
+    sout | s2;
+    sout | s3;
+    for(;;) {
+        sin | wdi(999,si);
+      if (si[0] == '=') break;
+        sout | si;
+    }
+}
+
+string accumulator;
+
+void reset_otherStringAction(void) {
+    accumulator = "";
+}
+void step_otherStringAction(void) {
+    string localAction = "--";
+    accumulator += localAction(0,1);
+    sout | accumulator;
+}
+
+void istream_string_res(void) {
+    string_res s1, s2, s3, si;
+    sin | s1 | s2 | s3;
+    sout | s1;        step_otherStringAction();
+    sout | s2;        step_otherStringAction();
+    sout | s3;        step_otherStringAction();
+    for(;;) {
+        sin | si;
+      if (size(si) > 0 && si[0] == '=') break;
+        sout | si;    step_otherStringAction();
+    }
+}
+
+void istream_string(void) {
+    string s1, s2, s3, si;
+    sin | s1 | s2 | s3;
+    sout | s1;        step_otherStringAction();
+    sout | s2;        step_otherStringAction();
+    sout | s3;        step_otherStringAction();
+    for(;;) {
+        sin | si;
+      if (size(si) > 0 && si[0] == '=') break;
+        sout | si;    step_otherStringAction();
+    }
+}
+
+
+int main() {
+    istream_cstr();         sout | "=";
+    istream_string_res();   sout | "=";  reset_otherStringAction();
+    istream_string();
+}
Index: tests/io/.expect/manipulatorsOutput2.arm64.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput2.arm64.txt	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ tests/io/.expect/manipulatorsOutput2.arm64.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -4,7 +4,7 @@
 0 033 033 033 033
 0345 0177745 037777777745 01777777777777777777745
-0 0x1b 0x1b 0x1b 0x1b
+0x0 0x1b 0x1b 0x1b 0x1b
 0xe5 0xffe5 0xffffffe5 0xffffffffffffffe5
-0x0p+0. 0x1.b8p+4 0x1.b8p+4 0x1.b8p+4
+0x0p+0 0x1.b8p+4 0x1.b8p+4 0x1.b8p+4
 -0x1.b8p+4 -0x1.b8p+4 -0x1.b8p+4
 0.000000e+00 2.750000e+01 -2.750000e+01
Index: tests/io/.expect/manipulatorsOutput2.x86.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput2.x86.txt	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ tests/io/.expect/manipulatorsOutput2.x86.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -4,7 +4,7 @@
 0 033 033 033 033
 0345 0177745 037777777745 037777777745
-0 0x1b 0x1b 0x1b 0x1b
+0x0 0x1b 0x1b 0x1b 0x1b
 0xe5 0xffe5 0xffffffe5 0xffffffe5
-0x0p+0. 0x1.b8p+4 0x1.b8p+4 0xd.cp+1
+0x0p+0 0x1.b8p+4 0x1.b8p+4 0xd.cp+1
 -0x1.b8p+4 -0x1.b8p+4 -0xd.cp+1
 0.000000e+00 2.750000e+01 -2.750000e+01
Index: tests/io/.expect/manipulatorsOutput3.arm64.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput3.arm64.txt	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ tests/io/.expect/manipulatorsOutput3.arm64.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -246,5 +246,5 @@
 -1                   0xffffffffffffffffffffffffffffffff 03777777777777777777777777777777777777777777
 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
-+0                   0                    0                   
++0                   0x0                  0                   
 0b0                 
 +1                   0x1                  01                  
Index: sts/io/.expect/manipulatorsOutput3.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput3.txt	(revision 89bef9594bd88ab4ea6c26fc28e3256511af6421)
+++ 	(revision )
@@ -1,437 +1,0 @@
--1208907372870555465220095
--1208907372870555465220095
-+1208907372870555465220095
-
-base 2
-0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
-11111111111111110000000000000000000000000000000000000000000000001111111111111111
-             0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
-   0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
-0X0000000000FFFF000000000000FFFF
-
-0b1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-
-base 8
-0000000123
-0000000123
-0377776000000000000000177777
-377776000000000000000177777
-                                         0123
-     0000000000000000000000000000000000000123
-000000000000000000000000000000000000000000123
-                 0377776000000000000000177777
-     0000000000000377776000000000000000177777
-000000000000000000377776000000000000000177777
-0123                                         X
-0377776000000000000000177777                 X
-05000000000000000000123                      X
-0000000000000000000000000000000000000123     X
-0000000000000377776000000000000000177777     X
-0000000000000000005000000000000000000123     X
-000000000000000000000000000000000000000000123X
-000000000000000000377776000000000000000177777X
-000000000000000000000005000000000000000000123X
-0000000123X
-0000000123X
-0000000123                              X
-0000000123                              X
-0377776000000000000000177777            X
-05000000000000000000123                 X
-0000000000000000000000000000000000000123X
-0000000000000377776000000000000000177777X
-0000000000000000005000000000000000000123X
-0000000000000000000000000000000000000000001234567X
-03777777777777777777777777777777777776543211Y
-03777777777777777777777777777777777776543211Y
-
-0113166530623714330436400000
-          0113166530623714330436400000
-            0113166530623714330436400000
-  00000000000113166530623714330436400000
-          000113166530623714330436400000
-  00000000000113166530623714330436400000
-
-base 10
-355272055279601493606400
-355272055279601493606400
-355272055279601493606400
-355272055279601493606400
-355272055279601493606400
-              355272055279601493606400
-               355272055279601493606400
-                355272055279601493606400
-          000000355272055279601493606400
-  00000000000000355272055279601493606400
-0000000000000000355272055279601493606400
-0000000000000000355272055279601493606400
-+000000000000000355272055279601493606400
-
-base 16
-0xffff000000000000ffff
-0XFFFF000000000000FFFF
-ffff000000000000ffff
-                       0XFFFF000000000000FFFF
-   0X00000000000000000000FFFF000000000000FFFF
-0X00000000000000000000000000000FFFF000000000000FFFF
-0XFFFF000000000000FFFF                       X
-0X00000000000000000000FFFF000000000000FFFF   X
-0X00000000000000000000000000000FFFF000000000000FFFFX
-
-0X4B3B56327CC6C47A0000
-                0X4B3B56327CC6C47A0000
-                  0X4B3B56327CC6C47A0000
-0X0000000000000000004B3B56327CC6C47A0000
-        0X00000000004B3B56327CC6C47A0000
-0X0000000000000000004B3B56327CC6C47A0000
-
-extras
-0b1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
-0113166530623714330436400000
-0x4b3b56327cc6c47a0000
-0X4B3B56327CC6C47A0000
-1001011001110110101011000110010011111001100011011000100011110100000000000000000 113166530623714330436400000 4b3b56327cc6c47a0000
-+355272055279601493606400
--355272055279601493606400
--355272055279601493606400
-355272055279601493606400
-355272055279601493606400
-355272055279601493606400                X
-+355272055279601493606400               X
-+0000000000000000355272055279601493606400X
-+0000000000000000000000000000000123456789X
--1000 0xfffffffffffffffffffffffffffffc18 03777777777777777777777777777777777777776030
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011000
--999 0xfffffffffffffffffffffffffffffc19 03777777777777777777777777777777777777776031
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011001
--998 0xfffffffffffffffffffffffffffffc1a 03777777777777777777777777777777777777776032
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011010
--997 0xfffffffffffffffffffffffffffffc1b 03777777777777777777777777777777777777776033
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011011
--996 0xfffffffffffffffffffffffffffffc1c 03777777777777777777777777777777777777776034
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011100
--995 0xfffffffffffffffffffffffffffffc1d 03777777777777777777777777777777777777776035
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011101
--994 0xfffffffffffffffffffffffffffffc1e 03777777777777777777777777777777777777776036
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011110
--993 0xfffffffffffffffffffffffffffffc1f 03777777777777777777777777777777777777776037
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011111
--992 0xfffffffffffffffffffffffffffffc20 03777777777777777777777777777777777777776040
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100000
--991 0xfffffffffffffffffffffffffffffc21 03777777777777777777777777777777777777776041
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100001
-
-
--990                                                                                                                                                            
--990
-0xfffffffffffffffffffffffffffffc22
-03777777777777777777777777777777777777776042
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
--990
-0xfffffffffffffffffffffffffffffc22
-03777777777777777777777777777777777777776042
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
--990                            
-0xfffffffffffffffffffffffffffffc22
-03777777777777777777777777777777777777776042
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
--990                                                                                                                                                            
-0xfffffffffffffffffffffffffffffc22                                                                                                                              
-03777777777777777777777777777777777777776042                                                                                                                    
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010                              
--990                                                                                                                                                            
-0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC22                                                                                                                              
-03777777777777777777777777777777777777776042                                                                                                                    
-0B11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010                              
-22763282186957586699822X
-                   04644000000000000000013056X
-04644000000000000000013056                   X
-                   04644000000000000000013056X
-04644000000000000000013056                   X
-                   04644000000000000000013056X
-04644000000000000000013056                   X
-         000000000004644000000000000000013056X
-000000000004644000000000000000013056         X
-0000000000000000000004644000000000000000013056X
-0000000000000000000004644000000000000000013056X
-04644000000000000000013056                   X
-04644000000000000000013056                   X
-04644000000000000000013056                   X
-04644000000000000000013056                   X
-0004644000000000000000013056                 X
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722 Y
-0000003777777777777777773133777777777777777764722Y
-03777777777777777773133777777777777777764722 Y
-0123                                         X
-04644000000000000000013056                   X
-0000000000000000000000000000000000000123     X
-0000000000000004644000000000000000013056     X
-000000000000000000000000000000000000000000123X
-000000000000000000004644000000000000000013056X
-0000000123                              X
-04644000000000000000013056              X
-03777777777777777773133777777777777777764722X
-0000000000000000000000000000000000000123X
-0000000000000004644000000000000000013056X
-03777777777777777773133777777777777777764722X
-1777777777777777777777
-2777777777777777777777
-3777777777777777777777
-4777777777777777777777
-5777777777777777777777
-6777777777777777777777
-7777777777777777777777
-10777777777777777777777
-0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
-11111111111111110000000000000000000000000000000000000000000000001111111111111111
-             0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
-   0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
-0B00000000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
-0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
-11111111111111110000000000000000000000000000000000000000000000001111111111111111
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
-0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111   
-0B011111111111111110000000000000000000000000000000000000000000000001111111111111111            
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
-0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
-0B000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111   
-0B0000000000000000000000000000000000000000000000001111111111111111  
-0B00000000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
-   0X000000000000000000000FFFF
-   0X000000000000000000000FFFF
-0X00000000000000000000000000FFFF
-0X00000000000000000000000000FFFF
-05000000000000000000123
-                      05000000000000000000123
-05000000000000000000123                      X
-0000000123                              X
-0377776000000000000000177777            X
-05000000000000000000123                 X
-0000000000000000000000000000000000000123X
-0000000000000377776000000000000000177777X
-0000000000000000005000000000000000000123X
--10                  0xfffffffffffffffffffffffffffffff6 03777777777777777777777777777777777777777766
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110110
--9                   0xfffffffffffffffffffffffffffffff7 03777777777777777777777777777777777777777767
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110111
--8                   0xfffffffffffffffffffffffffffffff8 03777777777777777777777777777777777777777770
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000
--7                   0xfffffffffffffffffffffffffffffff9 03777777777777777777777777777777777777777771
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001
--6                   0xfffffffffffffffffffffffffffffffa 03777777777777777777777777777777777777777772
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010
--5                   0xfffffffffffffffffffffffffffffffb 03777777777777777777777777777777777777777773
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011
--4                   0xfffffffffffffffffffffffffffffffc 03777777777777777777777777777777777777777774
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100
--3                   0xfffffffffffffffffffffffffffffffd 03777777777777777777777777777777777777777775
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101
--2                   0xfffffffffffffffffffffffffffffffe 03777777777777777777777777777777777777777776
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110
--1                   0xffffffffffffffffffffffffffffffff 03777777777777777777777777777777777777777777
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
-+0                   0x0                  0                   
-0b0                 
-+1                   0x1                  01                  
-0b1                 
-+2                   0x2                  02                  
-0b10                
-+3                   0x3                  03                  
-0b11                
-+4                   0x4                  04                  
-0b100               
-+5                   0x5                  05                  
-0b101               
-+6                   0x6                  06                  
-0b110               
-+7                   0x7                  07                  
-0b111               
-+8                   0x8                  010                 
-0b1000              
-+9                   0x9                  011                 
-0b1001              
-+10                  0xa                  012                 
-0b1010              
-+11                  0xb                  013                 
-0b1011              
-+12                  0xc                  014                 
-0b1100              
-+13                  0xd                  015                 
-0b1101              
-+14                  0xe                  016                 
-0b1110              
-
-170141183460469231731687303715884105722
-+170141183460469231731687303715884105722       0x7ffffffffffffffffffffffffffffffa            01777777777777777777777777777777777777777772 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010
-170141183460469231731687303715884105723
-+170141183460469231731687303715884105723       0x7ffffffffffffffffffffffffffffffb            01777777777777777777777777777777777777777773 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011
-170141183460469231731687303715884105724
-+170141183460469231731687303715884105724       0x7ffffffffffffffffffffffffffffffc            01777777777777777777777777777777777777777774 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100
-170141183460469231731687303715884105725
-+170141183460469231731687303715884105725       0x7ffffffffffffffffffffffffffffffd            01777777777777777777777777777777777777777775 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101
-170141183460469231731687303715884105726
-+170141183460469231731687303715884105726       0x7ffffffffffffffffffffffffffffffe            01777777777777777777777777777777777777777776 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110
-170141183460469231731687303715884105727
-+170141183460469231731687303715884105727       0x7fffffffffffffffffffffffffffffff            01777777777777777777777777777777777777777777 
-0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
--170141183460469231731687303715884105728
--170141183460469231731687303715884105728       0x80000000000000000000000000000000            02000000000000000000000000000000000000000000 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
--170141183460469231731687303715884105727
--170141183460469231731687303715884105727       0x80000000000000000000000000000001            02000000000000000000000000000000000000000001 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
--170141183460469231731687303715884105726
--170141183460469231731687303715884105726       0x80000000000000000000000000000002            02000000000000000000000000000000000000000002 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010
--170141183460469231731687303715884105725
--170141183460469231731687303715884105725       0x80000000000000000000000000000003            02000000000000000000000000000000000000000003 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
--170141183460469231731687303715884105724
--170141183460469231731687303715884105724       0x80000000000000000000000000000004            02000000000000000000000000000000000000000004 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100
--170141183460469231731687303715884105723
--170141183460469231731687303715884105723       0x80000000000000000000000000000005            02000000000000000000000000000000000000000005 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101
--170141183460469231731687303715884105722
--170141183460469231731687303715884105722       0x80000000000000000000000000000006            02000000000000000000000000000000000000000006 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110
--170141183460469231731687303715884105721
--170141183460469231731687303715884105721       0x80000000000000000000000000000007            02000000000000000000000000000000000000000007 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111
--170141183460469231731687303715884105720
--170141183460469231731687303715884105720       0x80000000000000000000000000000008            02000000000000000000000000000000000000000010 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000
--170141183460469231731687303715884105719
--170141183460469231731687303715884105719       0x80000000000000000000000000000009            02000000000000000000000000000000000000000011 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001
--170141183460469231731687303715884105718
--170141183460469231731687303715884105718       0x8000000000000000000000000000000a            02000000000000000000000000000000000000000012 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010
--170141183460469231731687303715884105717
--170141183460469231731687303715884105717       0x8000000000000000000000000000000b            02000000000000000000000000000000000000000013 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011
--170141183460469231731687303715884105716
--170141183460469231731687303715884105716       0x8000000000000000000000000000000c            02000000000000000000000000000000000000000014 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100
--170141183460469231731687303715884105715
--170141183460469231731687303715884105715       0x8000000000000000000000000000000d            02000000000000000000000000000000000000000015 
-0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101
-
-170141183460469231731687303715884105722
-170141183460469231731687303715884105723
-170141183460469231731687303715884105724
-170141183460469231731687303715884105725
-170141183460469231731687303715884105726
-170141183460469231731687303715884105727
-170141183460469231731687303715884105728
-170141183460469231731687303715884105729
-170141183460469231731687303715884105730
-170141183460469231731687303715884105731
-170141183460469231731687303715884105732
-170141183460469231731687303715884105733
-170141183460469231731687303715884105734
-170141183460469231731687303715884105735
-170141183460469231731687303715884105736
-170141183460469231731687303715884105737
-170141183460469231731687303715884105738
-170141183460469231731687303715884105739
-170141183460469231731687303715884105740
-170141183460469231731687303715884105741
-
-340282366920938463463374607431768211450
-340282366920938463463374607431768211451
-340282366920938463463374607431768211452
-340282366920938463463374607431768211453
-340282366920938463463374607431768211454
-340282366920938463463374607431768211455
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-0xfffffffffffffffffffe
-0xfffffffffffffffffffe
-
-binary
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111110
-0b11111111111111111111111111111111
-0b1111111111111111111111111111111111111111111111111111111111111111
-0b111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
-0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
-0xa2345678
-0xa2345678a7654321
-0xa2345678a7654321c2345678
-0xa2345678a7654321c2345678d7554321
-
-octal
-0377777777777777777777777776
-0123456
-012345665432
-01234566543234567
-0123456654323456776543
-012345665432345677654323456
-01234566543234567765432345665432
-0123456654323456776543234566543234567
-012345665432345677654323456654323456776543
-01111111111111111111
-011111111111111111111
-0111111111111111111111
-
-decimal
-1208925819614629174706174
-42798 0123456
-1402432282 012345665432
-45954901031287 01234566543234567
-1505850196993244515 0123456654323456776543
-394749758663249135511342 0123456665432345677654323456
-12935154696204706112391834394 012345665432234567765432345665432
-423859149128410414395372834994551 01234566543234567776543234566543234567
-13889016598639747063234935497057631587 0123456654323456776543323456654323456776543
-1234567890123456789
-1234567890123456789
-170141183460469231731687303715884105727
-340282366920938463463374607431768211455
-9223372036854775808
-340282366920938463463374607431768211455
-170141183460469231731687303715884105727
-
-hexadecimal
-0xfffffffffffffffffffe
-0xffffffff
-0xffffffffffffffff
-0xffffffffffffffffffffffff
-0xffffffffffffffffffffffffffffffff
-0xa2345678
-0xa2345678b7654321
-0xa2345678b7654321c2345678
-0xa2345678b7654321c2345678d7654321
-
Index: tests/io/.expect/manipulatorsOutput3.x64.txt
===================================================================
--- tests/io/.expect/manipulatorsOutput3.x64.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
+++ tests/io/.expect/manipulatorsOutput3.x64.txt	(revision 8d96dee307a922ed57d62c8c2b069bd0bcf23dc5)
@@ -0,0 +1,437 @@
+-1208907372870555465220095
+-1208907372870555465220095
++1208907372870555465220095
+
+base 2
+0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
+11111111111111110000000000000000000000000000000000000000000000001111111111111111
+             0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
+   0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
+0X0000000000FFFF000000000000FFFF
+
+0b1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+
+base 8
+0000000123
+0000000123
+0377776000000000000000177777
+377776000000000000000177777
+                                         0123
+     0000000000000000000000000000000000000123
+000000000000000000000000000000000000000000123
+                 0377776000000000000000177777
+     0000000000000377776000000000000000177777
+000000000000000000377776000000000000000177777
+0123                                         X
+0377776000000000000000177777                 X
+05000000000000000000123                      X
+0000000000000000000000000000000000000123     X
+0000000000000377776000000000000000177777     X
+0000000000000000005000000000000000000123     X
+000000000000000000000000000000000000000000123X
+000000000000000000377776000000000000000177777X
+000000000000000000000005000000000000000000123X
+0000000123X
+0000000123X
+0000000123                              X
+0000000123                              X
+0377776000000000000000177777            X
+05000000000000000000123                 X
+0000000000000000000000000000000000000123X
+0000000000000377776000000000000000177777X
+0000000000000000005000000000000000000123X
+0000000000000000000000000000000000000000001234567X
+03777777777777777777777777777777777776543211Y
+03777777777777777777777777777777777776543211Y
+
+0113166530623714330436400000
+          0113166530623714330436400000
+            0113166530623714330436400000
+  00000000000113166530623714330436400000
+          000113166530623714330436400000
+  00000000000113166530623714330436400000
+
+base 10
+355272055279601493606400
+355272055279601493606400
+355272055279601493606400
+355272055279601493606400
+355272055279601493606400
+              355272055279601493606400
+               355272055279601493606400
+                355272055279601493606400
+          000000355272055279601493606400
+  00000000000000355272055279601493606400
+0000000000000000355272055279601493606400
+0000000000000000355272055279601493606400
++000000000000000355272055279601493606400
+
+base 16
+0xffff000000000000ffff
+0XFFFF000000000000FFFF
+ffff000000000000ffff
+                       0XFFFF000000000000FFFF
+   0X00000000000000000000FFFF000000000000FFFF
+0X00000000000000000000000000000FFFF000000000000FFFF
+0XFFFF000000000000FFFF                       X
+0X00000000000000000000FFFF000000000000FFFF   X
+0X00000000000000000000000000000FFFF000000000000FFFFX
+
+0X4B3B56327CC6C47A0000
+                0X4B3B56327CC6C47A0000
+                  0X4B3B56327CC6C47A0000
+0X0000000000000000004B3B56327CC6C47A0000
+        0X00000000004B3B56327CC6C47A0000
+0X0000000000000000004B3B56327CC6C47A0000
+
+extras
+0b1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0B1001011001110110101011000110010011111001100011011000100011110100000000000000000
+0113166530623714330436400000
+0x4b3b56327cc6c47a0000
+0X4B3B56327CC6C47A0000
+1001011001110110101011000110010011111001100011011000100011110100000000000000000 113166530623714330436400000 4b3b56327cc6c47a0000
++355272055279601493606400
+-355272055279601493606400
+-355272055279601493606400
+355272055279601493606400
+355272055279601493606400
+355272055279601493606400                X
++355272055279601493606400               X
++0000000000000000355272055279601493606400X
++0000000000000000000000000000000123456789X
+-1000 0xfffffffffffffffffffffffffffffc18 03777777777777777777777777777777777777776030
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011000
+-999 0xfffffffffffffffffffffffffffffc19 03777777777777777777777777777777777777776031
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011001
+-998 0xfffffffffffffffffffffffffffffc1a 03777777777777777777777777777777777777776032
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011010
+-997 0xfffffffffffffffffffffffffffffc1b 03777777777777777777777777777777777777776033
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011011
+-996 0xfffffffffffffffffffffffffffffc1c 03777777777777777777777777777777777777776034
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011100
+-995 0xfffffffffffffffffffffffffffffc1d 03777777777777777777777777777777777777776035
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011101
+-994 0xfffffffffffffffffffffffffffffc1e 03777777777777777777777777777777777777776036
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011110
+-993 0xfffffffffffffffffffffffffffffc1f 03777777777777777777777777777777777777776037
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000011111
+-992 0xfffffffffffffffffffffffffffffc20 03777777777777777777777777777777777777776040
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100000
+-991 0xfffffffffffffffffffffffffffffc21 03777777777777777777777777777777777777776041
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100001
+
+
+-990                                                                                                                                                            
+-990
+0xfffffffffffffffffffffffffffffc22
+03777777777777777777777777777777777777776042
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
+-990
+0xfffffffffffffffffffffffffffffc22
+03777777777777777777777777777777777777776042
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
+-990                            
+0xfffffffffffffffffffffffffffffc22
+03777777777777777777777777777777777777776042
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010
+-990                                                                                                                                                            
+0xfffffffffffffffffffffffffffffc22                                                                                                                              
+03777777777777777777777777777777777777776042                                                                                                                    
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010                              
+-990                                                                                                                                                            
+0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC22                                                                                                                              
+03777777777777777777777777777777777777776042                                                                                                                    
+0B11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000100010                              
+22763282186957586699822X
+                   04644000000000000000013056X
+04644000000000000000013056                   X
+                   04644000000000000000013056X
+04644000000000000000013056                   X
+                   04644000000000000000013056X
+04644000000000000000013056                   X
+         000000000004644000000000000000013056X
+000000000004644000000000000000013056         X
+0000000000000000000004644000000000000000013056X
+0000000000000000000004644000000000000000013056X
+04644000000000000000013056                   X
+04644000000000000000013056                   X
+04644000000000000000013056                   X
+04644000000000000000013056                   X
+0004644000000000000000013056                 X
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722 Y
+0000003777777777777777773133777777777777777764722Y
+03777777777777777773133777777777777777764722 Y
+0123                                         X
+04644000000000000000013056                   X
+0000000000000000000000000000000000000123     X
+0000000000000004644000000000000000013056     X
+000000000000000000000000000000000000000000123X
+000000000000000000004644000000000000000013056X
+0000000123                              X
+04644000000000000000013056              X
+03777777777777777773133777777777777777764722X
+0000000000000000000000000000000000000123X
+0000000000000004644000000000000000013056X
+03777777777777777773133777777777777777764722X
+1777777777777777777777
+2777777777777777777777
+3777777777777777777777
+4777777777777777777777
+5777777777777777777777
+6777777777777777777777
+7777777777777777777777
+10777777777777777777777
+0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
+11111111111111110000000000000000000000000000000000000000000000001111111111111111
+             0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
+   0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
+0B00000000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
+0b11111111111111110000000000000000000000000000000000000000000000001111111111111111
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111
+11111111111111110000000000000000000000000000000000000000000000001111111111111111
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
+0B000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111   
+0B011111111111111110000000000000000000000000000000000000000000000001111111111111111            
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
+0B11111111111111110000000000000000000000000000000000000000000000001111111111111111             
+0B000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111   
+0B0000000000000000000000000000000000000000000000001111111111111111  
+0B00000000000000011111111111111110000000000000000000000000000000000000000000000001111111111111111
+   0X000000000000000000000FFFF
+   0X000000000000000000000FFFF
+0X00000000000000000000000000FFFF
+0X00000000000000000000000000FFFF
+05000000000000000000123
+                      05000000000000000000123
+05000000000000000000123                      X
+0000000123                              X
+0377776000000000000000177777            X
+05000000000000000000123                 X
+0000000000000000000000000000000000000123X
+0000000000000377776000000000000000177777X
+0000000000000000005000000000000000000123X
+-10                  0xfffffffffffffffffffffffffffffff6 03777777777777777777777777777777777777777766
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110110
+-9                   0xfffffffffffffffffffffffffffffff7 03777777777777777777777777777777777777777767
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110111
+-8                   0xfffffffffffffffffffffffffffffff8 03777777777777777777777777777777777777777770
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000
+-7                   0xfffffffffffffffffffffffffffffff9 03777777777777777777777777777777777777777771
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111001
+-6                   0xfffffffffffffffffffffffffffffffa 03777777777777777777777777777777777777777772
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010
+-5                   0xfffffffffffffffffffffffffffffffb 03777777777777777777777777777777777777777773
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011
+-4                   0xfffffffffffffffffffffffffffffffc 03777777777777777777777777777777777777777774
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100
+-3                   0xfffffffffffffffffffffffffffffffd 03777777777777777777777777777777777777777775
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101
+-2                   0xfffffffffffffffffffffffffffffffe 03777777777777777777777777777777777777777776
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110
+-1                   0xffffffffffffffffffffffffffffffff 03777777777777777777777777777777777777777777
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
++0                   0x0                  0                   
+0b0                 
++1                   0x1                  01                  
+0b1                 
++2                   0x2                  02                  
+0b10                
++3                   0x3                  03                  
+0b11                
++4                   0x4                  04                  
+0b100               
++5                   0x5                  05                  
+0b101               
++6                   0x6                  06                  
+0b110               
++7                   0x7                  07                  
+0b111               
++8                   0x8                  010                 
+0b1000              
++9                   0x9                  011                 
+0b1001              
++10                  0xa                  012                 
+0b1010              
++11                  0xb                  013                 
+0b1011              
++12                  0xc                  014                 
+0b1100              
++13                  0xd                  015                 
+0b1101              
++14                  0xe                  016                 
+0b1110              
+
+170141183460469231731687303715884105722
++170141183460469231731687303715884105722       0x7ffffffffffffffffffffffffffffffa            01777777777777777777777777777777777777777772 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010
+170141183460469231731687303715884105723
++170141183460469231731687303715884105723       0x7ffffffffffffffffffffffffffffffb            01777777777777777777777777777777777777777773 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011
+170141183460469231731687303715884105724
++170141183460469231731687303715884105724       0x7ffffffffffffffffffffffffffffffc            01777777777777777777777777777777777777777774 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100
+170141183460469231731687303715884105725
++170141183460469231731687303715884105725       0x7ffffffffffffffffffffffffffffffd            01777777777777777777777777777777777777777775 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101
+170141183460469231731687303715884105726
++170141183460469231731687303715884105726       0x7ffffffffffffffffffffffffffffffe            01777777777777777777777777777777777777777776 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110
+170141183460469231731687303715884105727
++170141183460469231731687303715884105727       0x7fffffffffffffffffffffffffffffff            01777777777777777777777777777777777777777777 
+0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+-170141183460469231731687303715884105728
+-170141183460469231731687303715884105728       0x80000000000000000000000000000000            02000000000000000000000000000000000000000000 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+-170141183460469231731687303715884105727
+-170141183460469231731687303715884105727       0x80000000000000000000000000000001            02000000000000000000000000000000000000000001 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+-170141183460469231731687303715884105726
+-170141183460469231731687303715884105726       0x80000000000000000000000000000002            02000000000000000000000000000000000000000002 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010
+-170141183460469231731687303715884105725
+-170141183460469231731687303715884105725       0x80000000000000000000000000000003            02000000000000000000000000000000000000000003 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011
+-170141183460469231731687303715884105724
+-170141183460469231731687303715884105724       0x80000000000000000000000000000004            02000000000000000000000000000000000000000004 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100
+-170141183460469231731687303715884105723
+-170141183460469231731687303715884105723       0x80000000000000000000000000000005            02000000000000000000000000000000000000000005 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101
+-170141183460469231731687303715884105722
+-170141183460469231731687303715884105722       0x80000000000000000000000000000006            02000000000000000000000000000000000000000006 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110
+-170141183460469231731687303715884105721
+-170141183460469231731687303715884105721       0x80000000000000000000000000000007            02000000000000000000000000000000000000000007 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111
+-170141183460469231731687303715884105720
+-170141183460469231731687303715884105720       0x80000000000000000000000000000008            02000000000000000000000000000000000000000010 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000
+-170141183460469231731687303715884105719
+-170141183460469231731687303715884105719       0x80000000000000000000000000000009            02000000000000000000000000000000000000000011 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001
+-170141183460469231731687303715884105718
+-170141183460469231731687303715884105718       0x8000000000000000000000000000000a            02000000000000000000000000000000000000000012 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010
+-170141183460469231731687303715884105717
+-170141183460469231731687303715884105717       0x8000000000000000000000000000000b            02000000000000000000000000000000000000000013 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011
+-170141183460469231731687303715884105716
+-170141183460469231731687303715884105716       0x8000000000000000000000000000000c            02000000000000000000000000000000000000000014 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100
+-170141183460469231731687303715884105715
+-170141183460469231731687303715884105715       0x8000000000000000000000000000000d            02000000000000000000000000000000000000000015 
+0b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101
+
+170141183460469231731687303715884105722
+170141183460469231731687303715884105723
+170141183460469231731687303715884105724
+170141183460469231731687303715884105725
+170141183460469231731687303715884105726
+170141183460469231731687303715884105727
+170141183460469231731687303715884105728
+170141183460469231731687303715884105729
+170141183460469231731687303715884105730
+170141183460469231731687303715884105731
+170141183460469231731687303715884105732
+170141183460469231731687303715884105733
+170141183460469231731687303715884105734
+170141183460469231731687303715884105735
+170141183460469231731687303715884105736
+170141183460469231731687303715884105737
+170141183460469231731687303715884105738
+170141183460469231731687303715884105739
+170141183460469231731687303715884105740
+170141183460469231731687303715884105741
+
+340282366920938463463374607431768211450
+340282366920938463463374607431768211451
+340282366920938463463374607431768211452
+340282366920938463463374607431768211453
+340282366920938463463374607431768211454
+340282366920938463463374607431768211455
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+0xfffffffffffffffffffe
+0xfffffffffffffffffffe
+
+binary
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111110
+0b11111111111111111111111111111111
+0b1111111111111111111111111111111111111111111111111111111111111111
+0b111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+0xa2345678
+0xa2345678a7654321
+0xa2345678a7654321c2345678
+0xa2345678a7654321c2345678d7554321
+
+octal
+0377777777777777777777777776
+0123456
+012345665432
+01234566543234567
+0123456654323456776543
+012345665432345677654323456
+01234566543234567765432345665432
+0123456654323456776543234566543234567
+012345665432345677654323456654323456776543
+01111111111111111111
+011111111111111111111
+0111111111111111111111
+
+decimal
+1208925819614629174706174
+42798 0123456
+1402432282 012345665432
+45954901031287 01234566543234567
+1505850196993244515 0123456654323456776543
+394749758663249135511342 0123456665432345677654323456
+12935154696204706112391834394 012345665432234567765432345665432
+423859149128410414395372834994551 01234566543234567776543234566543234567
+13889016598639747063234935497057631587 0123456654323456776543323456654323456776543
+1234567890123456789
+1234567890123456789
+170141183460469231731687303715884105727
+340282366920938463463374607431768211455
+9223372036854775808
+340282366920938463463374607431768211455
+170141183460469231731687303715884105727
+
+hexadecimal
+0xfffffffffffffffffffe
+0xffffffff
+0xffffffffffffffff
+0xffffffffffffffffffffffff
+0xffffffffffffffffffffffffffffffff
+0xa2345678
+0xa2345678b7654321
+0xa2345678b7654321c2345678
+0xa2345678b7654321c2345678d7654321
+
