Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision ca22a7c7bf8925f9a2cc31e3ab27ecd4e46c0099)
+++ libcfa/src/iostream.cfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 29 10:12:39 2023
-// Update Count     : 1380
+// Last Modified On : Tue Jul 18 10:42:51 2023
+// Update Count     : 1401
 //
 
@@ -34,4 +34,5 @@
 #pragma GCC visibility push(default)
 
+
 // *********************************** ostream ***********************************
 
@@ -43,7 +44,5 @@
 		return os;
 	} // ?|?
-	void ?|?( ostype & os, bool b ) {
-		(ostype &)(os | b); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( bool )
 
 	ostype & ?|?( ostype & os, char c ) {
@@ -52,7 +51,5 @@
 		return nosep( os );
 	} // ?|?
-	void ?|?( ostype & os, char c ) {
-		(ostype &)(os | c); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( char )
 
 	ostype & ?|?( ostype & os, signed char sc ) {
@@ -61,7 +58,5 @@
 		return os;
 	} // ?|?
-	void ?|?( ostype & os, signed char sc ) {
-		(ostype &)(os | sc); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( signed char )
 
 	ostype & ?|?( ostype & os, unsigned char usc ) {
@@ -70,7 +65,5 @@
 		return os;
 	} // ?|?
-	void ?|?( ostype & os, unsigned char usc ) {
-		(ostype &)(os | usc); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned char )
 
 	ostype & ?|?( ostype & os, short int si ) {
@@ -79,7 +72,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, short int si ) {
-		(ostype &)(os | si); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( short int )
 
 	ostype & ?|?( ostype & os, unsigned short int usi ) {
@@ -88,7 +79,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, unsigned short int usi ) {
-		(ostype &)(os | usi); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned short int )
 
 	ostype & ?|?( ostype & os, int i ) {
@@ -97,7 +86,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, int i ) {
-		(ostype &)(os | i); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( int )
 
 	ostype & ?|?( ostype & os, unsigned int ui ) {
@@ -106,7 +93,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, unsigned int ui ) {
-		(ostype &)(os | ui); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned int )
 
 	ostype & ?|?( ostype & os, long int li ) {
@@ -115,7 +100,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, long int li ) {
-		(ostype &)(os | li); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( long int )
 
 	ostype & ?|?( ostype & os, unsigned long int uli ) {
@@ -124,7 +107,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, unsigned long int uli ) {
-		(ostype &)(os | uli); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned long int )
 
 	ostype & ?|?( ostype & os, long long int lli ) {
@@ -133,7 +114,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, long long int lli ) {
-		(ostype &)(os | lli); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( long long int )
 
 	ostype & ?|?( ostype & os, unsigned long long int ulli ) {
@@ -142,7 +121,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, unsigned long long int ulli ) {
-		(ostype &)(os | ulli); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned long long int )
 
 	#if defined( __SIZEOF_INT128__ )
@@ -176,7 +153,5 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, int128 llli ) {
-		(ostype &)(os | llli); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( int128 )
 
 	ostype & ?|?( ostype & os, unsigned int128 ullli ) {
@@ -185,10 +160,8 @@
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, unsigned int128 ullli ) {
-		(ostype &)(os | ullli); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( unsigned int128 )
 	#endif // __SIZEOF_INT128__
 
-	#define PrintWithDP( os, format, val, ... ) \
+	#define PRINT_WITH_DP( os, format, val, ... ) \
 		{ \
 			enum { size = 48 }; \
@@ -206,64 +179,52 @@
 	ostype & ?|?( ostype & os, float f ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
-		PrintWithDP( os, "%'g", f );
-		return os;
-	} // ?|?
-	void & ?|?( ostype & os, float f ) {
-		(ostype &)(os | f); ends( os );
-	} // ?|?
+		PRINT_WITH_DP( os, "%'g", f );
+		return os;
+	} // ?|?
+	OSTYPE_VOID_IMPL( float )
 
 	ostype & ?|?( ostype & os, double d ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
-		PrintWithDP( os, "%'.*lg", d, DBL_DIG );
-		return os;
-	} // ?|?
-	void & ?|?( ostype & os, double d ) {
-		(ostype &)(os | d); ends( os );
-	} // ?|?
+		PRINT_WITH_DP( os, "%'.*lg", d, DBL_DIG );
+		return os;
+	} // ?|?
+	OSTYPE_VOID_IMPL( double )
 
 	ostype & ?|?( ostype & os, long double ld ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
-		PrintWithDP( os, "%'.*Lg", ld, LDBL_DIG );
-		return os;
-	} // ?|?
-	void & ?|?( ostype & os, long double ld ) {
-		(ostype &)(os | ld); ends( os );
-	} // ?|?
+		PRINT_WITH_DP( os, "%'.*Lg", ld, LDBL_DIG );
+		return os;
+	} // ?|?
+	OSTYPE_VOID_IMPL( long double )
 
 	ostype & ?|?( ostype & os, float _Complex fc ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
 //		os | crealf( fc ) | nonl;
-		PrintWithDP( os, "%'g", crealf( fc ) );
-		PrintWithDP( os, "%'+g", cimagf( fc ) );
+		PRINT_WITH_DP( os, "%'g", crealf( fc ) );
+		PRINT_WITH_DP( os, "%'+g", cimagf( fc ) );
 		fmt( os, "i" );
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, float _Complex fc ) {
-		(ostype &)(os | fc); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( float _Complex )
 
 	ostype & ?|?( ostype & os, double _Complex dc ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
 //		os | creal( dc ) | nonl;
-		PrintWithDP( os, "%'.*lg", creal( dc ), DBL_DIG );
-		PrintWithDP( os, "%'+.*lg", cimag( dc ), DBL_DIG );
+		PRINT_WITH_DP( os, "%'.*lg", creal( dc ), DBL_DIG );
+		PRINT_WITH_DP( os, "%'+.*lg", cimag( dc ), DBL_DIG );
 		fmt( os, "i" );
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, double _Complex dc ) {
-		(ostype &)(os | dc); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( double _Complex )
 
 	ostype & ?|?( ostype & os, long double _Complex ldc ) {
 		if ( sepPrt$( os ) ) fmt( os, "%s", sepGetCur$( os ) );
 //		os | creall( ldc ) || nonl;
-		PrintWithDP( os, "%'.*Lg", creall( ldc ), LDBL_DIG );
-		PrintWithDP( os, "%'+.*Lg", cimagl( ldc ), LDBL_DIG );
+		PRINT_WITH_DP( os, "%'.*Lg", creall( ldc ), LDBL_DIG );
+		PRINT_WITH_DP( os, "%'+.*Lg", cimagl( ldc ), LDBL_DIG );
 		fmt( os, "i" );
 		return os;
 	} // ?|?
-	void & ?|?( ostype & os, long double _Complex ldc ) {
-		(ostype &)(os | ldc); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( long double _Complex )
 
 	ostype & ?|?( ostype & os, const char s[] ) {
@@ -308,7 +269,5 @@
 //		return write( os, s, len );
 	} // ?|?
-	void ?|?( ostype & os, const char s[] ) {
-		(ostype &)(os | s); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( const char * )
 
 // 	ostype & ?|?( ostype & os, const char16_t * s ) {
@@ -337,7 +296,5 @@
 		return os;
 	} // ?|?
-	void ?|?( ostype & os, const void * p ) {
-		(ostype &)(os | p); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( const void * )
 
 	// manipulators
@@ -442,5 +399,5 @@
 
 // Default prefix for non-decimal prints is 0b, 0, 0x.
-#define IntegralFMTImpl( T, IFMTNP, IFMTP ) \
+#define INTEGRAL_FMT_IMPL( T, IFMTNP, IFMTP ) \
 forall( ostype & | basic_ostream( ostype ) ) { \
 	ostype & ?|?( ostype & os, _Ostream_Manip(T) f ) { \
@@ -519,19 +476,17 @@
 		return os; \
 	} /* ?|? */ \
-	void ?|?( ostype & os, _Ostream_Manip(T) f ) { \
-		(ostype &)(os | f); ends( os ); \
-	} /* ?|? */ \
-} // distribution
-
-IntegralFMTImpl( signed char,            "      *hh ", "      *.*hh " )
-IntegralFMTImpl( unsigned char,          "      *hh ", "      *.*hh " )
-IntegralFMTImpl( signed short int,       "      *h ",  "      *.*h " )
-IntegralFMTImpl( unsigned short int,     "      *h ",  "      *.*h " )
-IntegralFMTImpl( signed int,             "      * ",   "      *.* " )
-IntegralFMTImpl( unsigned int,           "      * ",   "      *.* " )
-IntegralFMTImpl( signed long int,        "      *l ",  "      *.*l " )
-IntegralFMTImpl( unsigned long int,      "      *l ",  "      *.*l " )
-IntegralFMTImpl( signed long long int,   "      *ll ", "      *.*ll " )
-IntegralFMTImpl( unsigned long long int, "      *ll ", "      *.*ll " )
+	OSTYPE_VOID_IMPL( _Ostream_Manip(T) ) \
+} // distribution
+
+INTEGRAL_FMT_IMPL( signed char,            "      *hh ", "      *.*hh " )
+INTEGRAL_FMT_IMPL( unsigned char,          "      *hh ", "      *.*hh " )
+INTEGRAL_FMT_IMPL( signed short int,       "      *h ",  "      *.*h " )
+INTEGRAL_FMT_IMPL( unsigned short int,     "      *h ",  "      *.*h " )
+INTEGRAL_FMT_IMPL( signed int,             "      * ",   "      *.* " )
+INTEGRAL_FMT_IMPL( unsigned int,           "      * ",   "      *.* " )
+INTEGRAL_FMT_IMPL( signed long int,        "      *l ",  "      *.*l " )
+INTEGRAL_FMT_IMPL( unsigned long int,      "      *l ",  "      *.*l " )
+INTEGRAL_FMT_IMPL( signed long long int,   "      *ll ", "      *.*ll " )
+INTEGRAL_FMT_IMPL( unsigned long long int, "      *ll ", "      *.*ll " )
 
 
@@ -602,5 +557,5 @@
 } // base_128
 
-#define IntegralFMTImpl128( T ) \
+#define INTEGRAL_FMT_IMPL128( T ) \
 forall( ostype & | basic_ostream( ostype ) ) { \
 	ostype & ?|?( ostype & os, _Ostream_Manip(T) f ) { \
@@ -619,9 +574,9 @@
 		return os; \
 	} /* ?|? */ \
-	void ?|?( ostype & os, _Ostream_Manip(T) f ) { (ostype &)(os | f); ends( os ); } \
-} // distribution
-
-IntegralFMTImpl128( int128 )
-IntegralFMTImpl128( unsigned int128 )
+	OSTYPE_VOID_IMPL( _Ostream_Manip(T) ) \
+} // distribution
+
+INTEGRAL_FMT_IMPL128( int128 )
+INTEGRAL_FMT_IMPL128( unsigned int128 )
 #endif // __SIZEOF_INT128__
 
@@ -635,5 +590,5 @@
 #define SUFFIXES_END (SUFFIXES_START + (int)((sizeof(suffixes) / sizeof(char *) - 1) * 3))
 
-#define PrintWithDP2( os, format, ... ) \
+#define PRINT_WITH_DP2( os, format, ... ) \
 	{ \
 		if ( ! f.flags.eng ) { \
@@ -676,5 +631,5 @@
 	}
 
-#define FloatingPointFMTImpl( T, DFMTNP, DFMTP ) \
+#define FLOATING_POINT_FMT_IMPL( T, DFMTNP, DFMTP ) \
 forall( ostype & | basic_ostream( ostype ) ) { \
 	static void eng( T &value, int & pc, int & exp10 ) { \
@@ -707,18 +662,18 @@
 			fmtstr[sizeof(DFMTNP)-2] = f.base;			/* sizeof includes '\0' */ \
 			/* printf( "%g %d %s\n", f.val, f.wd, &fmtstr[star] ); */ \
-			PrintWithDP2( os, &fmtstr[star], f.wd, f.val ) \
+			PRINT_WITH_DP2( os, &fmtstr[star], f.wd, f.val ) \
 		} else {										/* precision */ \
 			fmtstr[sizeof(DFMTP)-2] = f.base;			/* sizeof includes '\0' */ \
 			/* printf( "%g %d %d %s\n", f.val, f.wd, f.pc, &fmtstr[star] ); */ \
-			PrintWithDP2( os, &fmtstr[star], f.wd, f.pc, f.val ) \
+			PRINT_WITH_DP2( os, &fmtstr[star], f.wd, f.pc, f.val ) \
 		} /* if */ \
 		return os; \
 	} /* ?|? */ \
 \
-	void ?|?( ostype & os, _Ostream_Manip(T) f ) { (ostype &)(os | f); ends( os ); } \
-} // distribution
-
-FloatingPointFMTImpl( double,      "      * ",  "      *.* " )
-FloatingPointFMTImpl( long double, "      *L ", "      *.*L " )
+	OSTYPE_VOID_IMPL( _Ostream_Manip(T) ) \
+} // distribution
+
+FLOATING_POINT_FMT_IMPL( double,      "      * ",  "      *.* " )
+FLOATING_POINT_FMT_IMPL( long double, "      *L ", "      *.*L " )
 
 // *********************************** character ***********************************
@@ -751,6 +706,5 @@
 		return os;
 	} // ?|?
-
-	void ?|?( ostype & os, _Ostream_Manip(char) f ) { (ostype &)(os | f); ends( os ); }
+	OSTYPE_VOID_IMPL( _Ostream_Manip(char) )
 } // distribution
 
@@ -799,6 +753,5 @@
 		return os;
 	} // ?|?
-
-	void ?|?( ostype & os, _Ostream_Manip(const char *) f ) { (ostype &)(os | f); ends( os ); }
+	OSTYPE_VOID_IMPL( _Ostream_Manip(const char *) )
 } // distribution
 
@@ -806,4 +759,9 @@
 // *********************************** istream ***********************************
 
+
+#define ISTYPE_VOID_VAL_IMPL( T ) \
+	void ?|?( istype & is, T t ) { \
+		(istype &)(is | t); ends( is ); \
+	} // ?|?
 
 forall( istype & | basic_istream( istype ) ) {
@@ -819,7 +777,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, bool & b ) {
-		(istype &)(is | b); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( bool )
 
 	istype & ?|?( istype & is, char & c ) {
@@ -833,7 +789,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, char & c ) {
-		(istype &)(is | c); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( char )
 
 	istype & ?|?( istype & is, signed char & sc ) {
@@ -841,7 +795,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, signed char & sc ) {
-		(istype &)(is | sc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( signed char )
 
 	istype & ?|?( istype & is, unsigned char & usc ) {
@@ -849,7 +801,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, unsigned char & usc ) {
-		(istype &)(is | usc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned char )
 
 	istype & ?|?( istype & is, short int & si ) {
@@ -857,7 +807,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, short int & si ) {
-		(istype &)(is | si); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( short int )
 
 	istype & ?|?( istype & is, unsigned short int & usi ) {
@@ -865,7 +813,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, unsigned short int & usi ) {
-		(istype &)(is | usi); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned short int )
 
 	istype & ?|?( istype & is, int & i ) {
@@ -873,7 +819,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, int & i ) {
-		(istype &)(is | i); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( int )
 
 	istype & ?|?( istype & is, unsigned int & ui ) {
@@ -881,7 +825,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, unsigned int & ui ) {
-		(istype &)(is | ui); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned int )
 
 	istype & ?|?( istype & is, long int & li ) {
@@ -889,7 +831,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, long int & li ) {
-		(istype &)(is | li); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( long int )
 
 	istype & ?|?( istype & is, unsigned long int & ulli ) {
@@ -897,7 +837,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, unsigned long int & ulli ) {
-		(istype &)(is | ulli); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned long int )
 
 	istype & ?|?( istype & is, long long int & lli ) {
@@ -905,7 +843,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, long long int & lli ) {
-		(istype &)(is | lli); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( long long int )
 
 	istype & ?|?( istype & is, unsigned long long int & ulli ) {
@@ -913,7 +849,5 @@
 		return is;
 	} // ?|?
-	void & ?|?( istype & is, unsigned long long int & ulli ) {
-		(istype &)(is | ulli); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned long long int )
 
 	#if defined( __SIZEOF_INT128__ )
@@ -921,7 +855,5 @@
 		return (istype &)(is | (unsigned int128 &)llli);
 	} // ?|?
-	void ?|?( istype & is, int128 & llli ) {
-		(istype &)(is | llli); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( int128 )
 
 	istype & ?|?( istype & is, unsigned int128 & ullli ) {
@@ -940,7 +872,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, unsigned int128 & ullli ) {
-		(istype &)(is | ullli); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( unsigned int128 )
 	#endif // __SIZEOF_INT128__
 
@@ -949,7 +879,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, float & f ) {
-		(istype &)(is | f); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( float )
 
 	istype & ?|?( istype & is, double & d ) {
@@ -957,7 +885,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, double & d ) {
-		(istype &)(is | d); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( double )
 
 	istype & ?|?( istype & is, long double & ld ) {
@@ -965,7 +891,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, long double & ld ) {
-		(istype &)(is | ld); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( long double )
 
 	istype & ?|?( istype & is, float _Complex & fc ) {
@@ -975,7 +899,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, float _Complex & fc ) {
-		(istype &)(is | fc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( float _Complex )
 
 	istype & ?|?( istype & is, double _Complex & dc ) {
@@ -985,7 +907,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, double _Complex & dc ) {
-		(istype &)(is | dc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( double _Complex )
 
 	istype & ?|?( istype & is, long double _Complex & ldc ) {
@@ -995,7 +915,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, long double _Complex & ldc ) {
-		(istype &)(is | ldc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_IMPL( long double _Complex )
 
 	// istype & ?|?( istype & is, const char fmt[] ) {
@@ -1008,7 +926,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, char s[] ) {
-		(istype &)(is | s); ends( is );
-	} // ?|?
+	ISTYPE_VOID_VAL_IMPL( char * )
 
 	// manipulators
@@ -1072,7 +988,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, _Istream_Cstr f ) {
-		(istype &)(is | f); ends( is );
-	} // ?|?
+	ISTYPE_VOID_VAL_IMPL( _Istream_Cstr )
 
 	istype & ?|?( istype & is, _Istream_Char f ) {
@@ -1080,10 +994,8 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, _Istream_Char f ) {
-		(istype &)(is | f); ends( is );
-	} // ?|?
-} // distribution
-
-#define InputFMTImpl( T, CODE ) \
+	ISTYPE_VOID_VAL_IMPL( _Istream_Char )
+} // distribution
+
+#define INPUT_FMT_IMPL( T, CODE ) \
 forall( istype & | basic_istream( istype ) ) { \
 	istype & ?|?( istype & is, _Istream_Manip(T) f ) { \
@@ -1099,23 +1011,21 @@
 		return is; \
 	} /* ?|? */ \
-	void ?|?( istype & is, _Istream_Manip(T) f ) { \
-		(istype &)(is | f); ends( is ); \
-	} /* ?|? */ \
-} // distribution
-
-InputFMTImpl( signed char, "hhi" )
-InputFMTImpl( unsigned char, "hhi" )
-InputFMTImpl( signed short int, "hi" )
-InputFMTImpl( unsigned short int, "hi" )
-InputFMTImpl( signed int, "i" )
-InputFMTImpl( unsigned int, "i" )
-InputFMTImpl( signed long int, "li" )
-InputFMTImpl( unsigned long int, "li" )
-InputFMTImpl( signed long long int, "lli" )
-InputFMTImpl( unsigned long long int, "lli" )
-
-InputFMTImpl( float, "f" )
-InputFMTImpl( double, "lf" )
-InputFMTImpl( long double, "Lf" )
+	ISTYPE_VOID_VAL_IMPL( _Istream_Manip(T) ) \
+} // distribution
+
+INPUT_FMT_IMPL( signed char, "hhi" )
+INPUT_FMT_IMPL( unsigned char, "hhi" )
+INPUT_FMT_IMPL( signed short int, "hi" )
+INPUT_FMT_IMPL( unsigned short int, "hi" )
+INPUT_FMT_IMPL( signed int, "i" )
+INPUT_FMT_IMPL( unsigned int, "i" )
+INPUT_FMT_IMPL( signed long int, "li" )
+INPUT_FMT_IMPL( unsigned long int, "li" )
+INPUT_FMT_IMPL( signed long long int, "lli" )
+INPUT_FMT_IMPL( unsigned long long int, "lli" )
+
+INPUT_FMT_IMPL( float, "f" )
+INPUT_FMT_IMPL( double, "lf" )
+INPUT_FMT_IMPL( long double, "Lf" )
 
 forall( istype & | basic_istream( istype ) ) {
@@ -1129,7 +1039,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, _Istream_Manip(float _Complex) fc ) {
-		(istype &)(is | fc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_VAL_IMPL( _Istream_Manip(float _Complex) )
 
 	istype & ?|?( istype & is, _Istream_Manip(double _Complex) dc ) {
@@ -1142,7 +1050,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, _Istream_Manip(double _Complex) dc ) {
-		(istype &)(is | dc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_VAL_IMPL( _Istream_Manip(double _Complex) )
 
 	istype & ?|?( istype & is, _Istream_Manip(long double _Complex) ldc ) {
@@ -1155,7 +1061,5 @@
 		return is;
 	} // ?|?
-	void ?|?( istype & is, _Istream_Manip(long double _Complex) ldc ) {
-		(istype &)(is | ldc); ends( is );
-	} // ?|?
+	ISTYPE_VOID_VAL_IMPL( _Istream_Manip(long double _Complex) )
 } // distribution
 
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision ca22a7c7bf8925f9a2cc31e3ab27ecd4e46c0099)
+++ libcfa/src/iostream.hfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jun 29 11:07:25 2023
-// Update Count     : 427
+// Last Modified On : Tue Jul 18 10:42:52 2023
+// Update Count     : 438
 //
 
@@ -74,54 +74,60 @@
 // implement writable for intrinsic types
 
+#define OSTYPE_VOID( T ) void ?|?( ostype &, T )
+#define OSTYPE_VOID_IMPL( T ) \
+	void ?|?( ostype & os, T t ) { \
+		(ostype &)(os | t); ends( os ); \
+	} // ?|?
+
 forall( ostype & | basic_ostream( ostype ) ) {
 	ostype & ?|?( ostype &, bool );
-	void ?|?( ostype &, bool );
+	OSTYPE_VOID( bool );
 
 	ostype & ?|?( ostype &, char );
-	void ?|?( ostype &, char );
+	OSTYPE_VOID( char );
 	ostype & ?|?( ostype &, signed char );
-	void ?|?( ostype &, signed char );
+	OSTYPE_VOID( signed char );
 	ostype & ?|?( ostype &, unsigned char );
-	void ?|?( ostype &, unsigned char );
+	OSTYPE_VOID( unsigned char );
 
 	ostype & ?|?( ostype &, short int );
-	void ?|?( ostype &, short int );
+	OSTYPE_VOID( short int );
 	ostype & ?|?( ostype &, unsigned short int );
-	void ?|?( ostype &, unsigned short int );
+	OSTYPE_VOID( unsigned short int );
 	ostype & ?|?( ostype &, int );
-	void ?|?( ostype &, int );
+	OSTYPE_VOID( int );
 	ostype & ?|?( ostype &, unsigned int );
-	void ?|?( ostype &, unsigned int );
+	OSTYPE_VOID( unsigned int );
 	ostype & ?|?( ostype &, long int );
-	void ?|?( ostype &, long int );
+	OSTYPE_VOID( long int );
 	ostype & ?|?( ostype &, long long int );
-	void ?|?( ostype &, long long int );
+	OSTYPE_VOID( long long int );
 	ostype & ?|?( ostype &, unsigned long int );
-	void ?|?( ostype &, unsigned long int );
+	OSTYPE_VOID( unsigned long int );
 	ostype & ?|?( ostype &, unsigned long long int );
-	void ?|?( ostype &, unsigned long long int );
+	OSTYPE_VOID( unsigned long long int );
 	#if defined( __SIZEOF_INT128__ )
 	ostype & ?|?( ostype &, int128 );
-	void ?|?( ostype &, int128 );
+	OSTYPE_VOID( int128 );
 	ostype & ?|?( ostype &, unsigned int128 );
-	void ?|?( ostype &, unsigned int128 );
+	OSTYPE_VOID( unsigned int128 );
 	#endif // __SIZEOF_INT128__
 
 	ostype & ?|?( ostype &, float );
-	void ?|?( ostype &, float );
+	OSTYPE_VOID( float );
 	ostype & ?|?( ostype &, double );
-	void ?|?( ostype &, double );
+	OSTYPE_VOID( double );
 	ostype & ?|?( ostype &, long double );
-	void ?|?( ostype &, long double );
+	OSTYPE_VOID( long double );
 
 	ostype & ?|?( ostype &, float _Complex );
-	void ?|?( ostype &, float _Complex );
+	OSTYPE_VOID( float _Complex );
 	ostype & ?|?( ostype &, double _Complex );
-	void ?|?( ostype &, double _Complex );
+	OSTYPE_VOID( double _Complex );
 	ostype & ?|?( ostype &, long double _Complex );
-	void ?|?( ostype &, long double _Complex );
+	OSTYPE_VOID( long double _Complex );
 
 	ostype & ?|?( ostype &, const char [] );
-	void ?|?( ostype &, const char [] );
+	OSTYPE_VOID( const char [] );
 	// ostype & ?|?( ostype &, const char16_t * );
 	#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
@@ -130,9 +136,9 @@
 	// ostype & ?|?( ostype &, const wchar_t * );
 	ostype & ?|?( ostype &, const void * );
-	void ?|?( ostype &, const void * );
+	OSTYPE_VOID( const void * );
 
 	// manipulators
 	ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
-	void ?|?( ostype &, ostype & (*)( ostype & ) );
+	OSTYPE_VOID( ostype & (*)( ostype & ) );
 
 	ostype & nl( ostype & );
@@ -190,5 +196,5 @@
 // initialized explicitly shall be initialized implicitly the same as objects that have static storage duration.***
 
-#define IntegralFMTDecl( T, CODE ) \
+#define INTEGRAL_FMT_DECL( T, CODE ) \
 static inline { \
 	_Ostream_Manip(T) bin( T val ) { return (_Ostream_Manip(T))@{ val, 1, 0, 'b', { .all : 0 } }; } \
@@ -211,17 +217,17 @@
 } // ?|?
 
-IntegralFMTDecl( signed char, 'd' )
-IntegralFMTDecl( unsigned char, 'u' )
-IntegralFMTDecl( signed short int, 'd' )
-IntegralFMTDecl( unsigned short int, 'u' )
-IntegralFMTDecl( signed int, 'd' )
-IntegralFMTDecl( unsigned int, 'u' )
-IntegralFMTDecl( signed long int, 'd' )
-IntegralFMTDecl( unsigned long int, 'u' )
-IntegralFMTDecl( signed long long int, 'd' )
-IntegralFMTDecl( unsigned long long int, 'u' )
+INTEGRAL_FMT_DECL( signed char, 'd' )
+INTEGRAL_FMT_DECL( unsigned char, 'u' )
+INTEGRAL_FMT_DECL( signed short int, 'd' )
+INTEGRAL_FMT_DECL( unsigned short int, 'u' )
+INTEGRAL_FMT_DECL( signed int, 'd' )
+INTEGRAL_FMT_DECL( unsigned int, 'u' )
+INTEGRAL_FMT_DECL( signed long int, 'd' )
+INTEGRAL_FMT_DECL( unsigned long int, 'u' )
+INTEGRAL_FMT_DECL( signed long long int, 'd' )
+INTEGRAL_FMT_DECL( unsigned long long int, 'u' )
 #if defined( __SIZEOF_INT128__ )
-IntegralFMTDecl( int128, 'd' )
-IntegralFMTDecl( unsigned int128, 'u' )
+INTEGRAL_FMT_DECL( int128, 'd' )
+INTEGRAL_FMT_DECL( unsigned int128, 'u' )
 #endif // __SIZEOF_INT128__
 
@@ -229,5 +235,5 @@
 
 // Default suffix for values with no fraction is "."
-#define FloatingPointFMTDecl( T ) \
+#define FLOATING_POINT_FMT_DECL( T ) \
 static inline { \
 	_Ostream_Manip(T) hex( T val ) { return (_Ostream_Manip(T))@{ val, 1, 0, 'a', { .all : 0 } }; } \
@@ -256,6 +262,6 @@
 } // ?|?
 
-FloatingPointFMTDecl( double )
-FloatingPointFMTDecl( long double )
+FLOATING_POINT_FMT_DECL( double )
+FLOATING_POINT_FMT_DECL( long double )
 
 // *********************************** character ***********************************
@@ -297,4 +303,10 @@
 // *********************************** 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 & )
@@ -327,49 +339,49 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype &, bool & );
-	void ?|?( istype &, bool & );
+	ISTYPE_VOID( bool & );
 
 	istype & ?|?( istype &, char & );
-	void ?|?( istype &, char & );
+	ISTYPE_VOID( char & );
 	istype & ?|?( istype &, signed char & );
-	void ?|?( istype &, signed char & );
+	ISTYPE_VOID( signed char & );
 	istype & ?|?( istype &, unsigned char & );
-	void ?|?( istype &, unsigned char & );
+	ISTYPE_VOID( unsigned char & );
 
 	istype & ?|?( istype &, short int & );
-	void ?|?( istype &, short int & );
+	ISTYPE_VOID( short int & );
 	istype & ?|?( istype &, unsigned short int & );
-	void ?|?( istype &, unsigned short int & );
+	ISTYPE_VOID( unsigned short int & );
 	istype & ?|?( istype &, int & );
-	void ?|?( istype &, int & );
+	ISTYPE_VOID( int & );
 	istype & ?|?( istype &, unsigned int & );
-	void ?|?( istype &, unsigned int & );
+	ISTYPE_VOID( unsigned int & );
 	istype & ?|?( istype &, long int & );
-	void ?|?( istype &, long int & );
+	ISTYPE_VOID( long int & );
 	istype & ?|?( istype &, unsigned long int & );
-	void ?|?( istype &, unsigned long int & );
+	ISTYPE_VOID( unsigned long int & );
 	istype & ?|?( istype &, long long int & );
-	void ?|?( istype &, long long int & );
+	ISTYPE_VOID( long long int & );
 	istype & ?|?( istype &, unsigned long long int & );
-	void ?|?( istype &, unsigned long long int & );
+	ISTYPE_VOID( unsigned long long int & );
 	#if defined( __SIZEOF_INT128__ )
 	istype & ?|?( istype &, int128 & );
-	void ?|?( istype &, int128 & );
+	ISTYPE_VOID( int128 & );
 	istype & ?|?( istype &, unsigned int128 & );
-	void ?|?( istype &, unsigned int128 & );
+	ISTYPE_VOID( unsigned int128 & );
 	#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype &, float & );
-	void ?|?( istype &, float & );
+	ISTYPE_VOID( float & );
 	istype & ?|?( istype &, double & );
-	void ?|?( istype &, double & );
+	ISTYPE_VOID( double & );
 	istype & ?|?( istype &, long double & );
-	void ?|?( istype &, long double & );
+	ISTYPE_VOID( long double & );
 
 	istype & ?|?( istype &, float _Complex & );
-	void ?|?( istype &, float _Complex & );
+	ISTYPE_VOID( float _Complex & );
 	istype & ?|?( istype &, double _Complex & );
-	void ?|?( istype &, double _Complex & );
+	ISTYPE_VOID( double _Complex & );
 	istype & ?|?( istype &, long double _Complex & );
-	void ?|?( istype &, long double _Complex & );
+	ISTYPE_VOID( long double _Complex & );
 
 //	istype & ?|?( istype &, const char [] );
@@ -379,5 +391,5 @@
 	// manipulators
 	istype & ?|?( istype &, istype & (*)( istype & ) );
-	void ?|?( istype &, istype & (*)( istype & ) );
+	ISTYPE_VOID( istype & (*)( istype & ) );
 	istype & nl( istype & is );
 	istype & nlOn( istype & );
@@ -437,5 +449,5 @@
 }; // _Istream_Manip
 
-#define InputFMTDecl( T ) \
+#define INPUT_FMT_DECL( T ) \
 static inline { \
 	_Istream_Manip(T) ignore( const T & val ) { return (_Istream_Manip(T))@{ (T &)val, -1, true }; } \
@@ -449,22 +461,22 @@
 } // ?|?
 
-InputFMTDecl( signed char )
-InputFMTDecl( unsigned char )
-InputFMTDecl( signed short int )
-InputFMTDecl( unsigned short int )
-InputFMTDecl( signed int )
-InputFMTDecl( unsigned int )
-InputFMTDecl( signed long int )
-InputFMTDecl( unsigned long int )
-InputFMTDecl( signed long long int )
-InputFMTDecl( unsigned long long int )
-
-InputFMTDecl( float )
-InputFMTDecl( double )
-InputFMTDecl( long double )
-
-InputFMTDecl( float _Complex )
-InputFMTDecl( double _Complex )
-InputFMTDecl( long double _Complex )
+INPUT_FMT_DECL( signed char )
+INPUT_FMT_DECL( unsigned char )
+INPUT_FMT_DECL( signed short int )
+INPUT_FMT_DECL( unsigned short int )
+INPUT_FMT_DECL( signed int )
+INPUT_FMT_DECL( unsigned int )
+INPUT_FMT_DECL( signed long int )
+INPUT_FMT_DECL( unsigned long int )
+INPUT_FMT_DECL( signed long long int )
+INPUT_FMT_DECL( unsigned long long int )
+
+INPUT_FMT_DECL( float )
+INPUT_FMT_DECL( double )
+INPUT_FMT_DECL( long double )
+
+INPUT_FMT_DECL( float _Complex )
+INPUT_FMT_DECL( double _Complex )
+INPUT_FMT_DECL( long double _Complex )
 
 
