Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/collections/string.cfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep  2 12:05:57 2023
-// Update Count     : 206
+// Last Modified On : Wed Oct 18 21:52:09 2023
+// Update Count     : 208
 //
 
@@ -138,5 +138,5 @@
 
 void ?|?( ifstream & in, _Istream_Sstr f ) {
-    (ifstream &)(in | f); ends( in );
+    (ifstream &)(in | f);
 }
 
Index: libcfa/src/collections/string_res.cfa
===================================================================
--- libcfa/src/collections/string_res.cfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/collections/string_res.cfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 14 18:06:01 2023
-// Update Count     : 12
+// Last Modified On : Wed Oct 18 21:54:54 2023
+// Update Count     : 15
 //
 
@@ -253,5 +253,5 @@
 
 void ?|?( ifstream & in, string_res & this ) {
-    (ifstream &)(in | this); ends( in );
+    (ifstream &)(in | this);
 }
 
@@ -297,5 +297,5 @@
 
 void ?|?( ifstream & in, _Istream_Rstr f ) {
-    (ifstream &)(in | f); ends( in );
+    (ifstream &)(in | f);
 }
 
Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/fstream.cfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 17 08:38:49 2023
-// Update Count     : 544
+// Last Modified On : Wed Oct 18 22:05:54 2023
+// Update Count     : 549
 //
 
@@ -230,6 +230,4 @@
 void nlOff( ifstream & os ) { os.nlOnOff$ = false; }
 
-void ends( ifstream & is ) {}
-
 bool eof( ifstream & is ) { return feof( (FILE *)(is.file$) ) != 0; }
 
Index: libcfa/src/fstream.hfa
===================================================================
--- libcfa/src/fstream.hfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/fstream.hfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Oct 13 13:55:21 2023
-// Update Count     : 260
+// Last Modified On : Wed Oct 18 20:30:12 2023
+// Update Count     : 261
 //
 
@@ -117,5 +117,4 @@
 void nlOn( ifstream & );
 void nlOff( ifstream & );
-void ends( ifstream & );
 int fmt( ifstream &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
 ifstream & ungetc( ifstream & is, char c );
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/iostream.cfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 17 20:57:05 2023
-// Update Count     : 1795
+// Last Modified On : Thu Oct 19 19:29:54 2023
+// Update Count     : 1800
 //
 
@@ -47,5 +47,5 @@
 		return os;
 	} // ?|?
-	OSTYPE_VOID_IMPL( bool )
+	OSYPE_VOID_IMPL( bool )
 
 	ostype & ?|?( ostype & os, char c ) {
@@ -784,5 +784,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( bool & )
 
 	istype & ?|?( istype & is, char & c ) {
@@ -796,5 +795,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( char & )
 
 	istype & ?|?( istype & is, signed char & sc ) {
@@ -802,5 +800,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( signed char & )
 
 	istype & ?|?( istype & is, unsigned char & usc ) {
@@ -808,5 +805,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned char & )
 
 	istype & ?|?( istype & is, short int & si ) {
@@ -814,5 +810,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( short int & )
 
 	istype & ?|?( istype & is, unsigned short int & usi ) {
@@ -820,5 +815,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned short int & )
 
 	istype & ?|?( istype & is, int & i ) {
@@ -826,5 +820,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( int & )
 
 	istype & ?|?( istype & is, unsigned int & ui ) {
@@ -832,5 +825,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned int & )
 
 	istype & ?|?( istype & is, long int & li ) {
@@ -838,5 +830,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( long int & )
 
 	istype & ?|?( istype & is, unsigned long int & ulli ) {
@@ -844,5 +835,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned long int & )
 
 	istype & ?|?( istype & is, long long int & lli ) {
@@ -850,5 +840,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( long long int & )
 
 	istype & ?|?( istype & is, unsigned long long int & ulli ) {
@@ -856,5 +845,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned long long int & )
 
 	#if defined( __SIZEOF_INT128__ )
@@ -862,5 +850,4 @@
 		return (istype &)(is | (unsigned int128 &)llli);
 	} // ?|?
-	ISTYPE_VOID_IMPL( int128 & )
 
 	istype & ?|?( istype & is, unsigned int128 & ullli ) {
@@ -879,5 +866,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( unsigned int128 & )
 	#endif // __SIZEOF_INT128__
 
@@ -886,5 +872,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( float & )
 
 	istype & ?|?( istype & is, double & d ) {
@@ -892,5 +877,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( double & )
 
 	istype & ?|?( istype & is, long double & ld ) {
@@ -898,5 +882,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( long double & )
 
 	istype & ?|?( istype & is, float _Complex & fc ) {
@@ -906,5 +889,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( float _Complex & )
 
 	istype & ?|?( istype & is, double _Complex & dc ) {
@@ -914,5 +896,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( double _Complex & )
 
 	istype & ?|?( istype & is, long double _Complex & ldc ) {
@@ -922,5 +903,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( long double _Complex & )
 
 	istype & ?|?( istype & is, const char fmt[] ) {
@@ -928,5 +908,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( const char * )
 
 	// manipulators
@@ -936,5 +915,5 @@
 
 	void ?|?( istype & is, istype & (* manip)( istype & ) ) {
-		manip( is ); ends( is );
+		manip( is );
 	} // ?|?
 
@@ -980,5 +959,4 @@
 		return is;
 	}
-	ISTYPE_VOID_IMPL( _Istream_Cskip )
 
 	istype & ?|?( istype & is, _Istream_Cstr f ) {
@@ -1070,5 +1048,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( _Istream_Cstr )
 
 	istype & ?|?( istype & is, _Istream_Char f ) {
@@ -1076,5 +1053,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( _Istream_Char )
 } // distribution
 
@@ -1093,5 +1069,4 @@
 		return is; \
 	} /* ?|? */ \
-	ISTYPE_VOID_IMPL( _Istream_Manip(T) ) \
 } // distribution
 
@@ -1121,5 +1096,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( _Istream_Manip(float _Complex) )
 
 	istype & ?|?( istype & is, _Istream_Manip(double _Complex) dc ) {
@@ -1132,5 +1106,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( _Istream_Manip(double _Complex) )
 
 	istype & ?|?( istype & is, _Istream_Manip(long double _Complex) ldc ) {
@@ -1143,5 +1116,4 @@
 		return is;
 	} // ?|?
-	ISTYPE_VOID_IMPL( _Istream_Manip(long double _Complex) )
 } // distribution
 
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision e0dc038fbe4972034fd6a262cc70c8bb4258cd32)
+++ libcfa/src/iostream.hfa	(revision f842032a0a09c7dcfe63ef8705bff30bf6b1b1b0)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct 16 21:12:01 2023
-// Update Count     : 573
+// Last Modified On : Wed Oct 18 21:21:20 2023
+// Update Count     : 583
 //
 
@@ -306,10 +306,4 @@
 // *********************************** istream ***********************************
 
-#define ISTYPE_VOID( T ) void ?|?( istype &, T )
-#define ISTYPE_VOID_IMPL( T ) \
-	void ?|?( istype & is, T t ) { \
-		(istype &)(is | t); ends( is ); \
-	} // ?|?
-
 forall( istype & )
 trait basic_istream {
@@ -320,5 +314,4 @@
 	void nlOn( istype & );								// read newline
 	void nlOff( istype & );								// scan newline
-	void ends( istype & os );							// end of output statement
 	int fmt( istype &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
 	istype & ungetc( istype &, char );
@@ -343,56 +336,34 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype &, bool & );
-	ISTYPE_VOID( bool & );
 
 	istype & ?|?( istype &, char & );
-	ISTYPE_VOID( char & );
 	istype & ?|?( istype &, signed char & );
-	ISTYPE_VOID( signed char & );
 	istype & ?|?( istype &, unsigned char & );
-	ISTYPE_VOID( unsigned char & );
 
 	istype & ?|?( istype &, short int & );
-	ISTYPE_VOID( short int & );
 	istype & ?|?( istype &, unsigned short int & );
-	ISTYPE_VOID( unsigned short int & );
 	istype & ?|?( istype &, int & );
-	ISTYPE_VOID( int & );
 	istype & ?|?( istype &, unsigned int & );
-	ISTYPE_VOID( unsigned int & );
 	istype & ?|?( istype &, long int & );
-	ISTYPE_VOID( long int & );
 	istype & ?|?( istype &, unsigned long int & );
-	ISTYPE_VOID( unsigned long int & );
 	istype & ?|?( istype &, long long int & );
-	ISTYPE_VOID( long long int & );
 	istype & ?|?( istype &, unsigned long long int & );
-	ISTYPE_VOID( unsigned long long int & );
 	#if defined( __SIZEOF_INT128__ )
 	istype & ?|?( istype &, int128 & );
-	ISTYPE_VOID( int128 & );
 	istype & ?|?( istype &, unsigned int128 & );
-	ISTYPE_VOID( unsigned int128 & );
 	#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype &, float & );
-	ISTYPE_VOID( float & );
 	istype & ?|?( istype &, double & );
-	ISTYPE_VOID( double & );
 	istype & ?|?( istype &, long double & );
-	ISTYPE_VOID( long double & );
 
 	istype & ?|?( istype &, float _Complex & );
-	ISTYPE_VOID( float _Complex & );
 	istype & ?|?( istype &, double _Complex & );
-	ISTYPE_VOID( double _Complex & );
 	istype & ?|?( istype &, long double _Complex & );
-	ISTYPE_VOID( long double _Complex & );
 
 	istype & ?|?( istype &, const char [] );
-	ISTYPE_VOID( const char [] );
 
 	// manipulators
 	istype & ?|?( istype &, istype & (*)( istype & ) );
-	ISTYPE_VOID( istype & (*)( istype & ) );
 	istype & nl( istype & is );
 	istype & nlOn( istype & );
@@ -419,5 +390,4 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Cskip f );
-	ISTYPE_VOID( _Istream_Cskip );
 }
 
@@ -461,5 +431,4 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Cstr f );
-	ISTYPE_VOID( _Istream_Cstr );
 }
 
@@ -474,5 +443,4 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Char f );
-	ISTYPE_VOID( _Istream_Char );
 }
 
@@ -493,5 +461,4 @@
 forall( istype & | basic_istream( istype ) ) { \
 	istype & ?|?( istype & is, _Istream_Manip(T) f ); \
-	ISTYPE_VOID( _Istream_Manip(T) ); \
 } // ?|?
 
