diff --git a/Source/kwsys/kwsys_ios_iostream.h.in b/Source/kwsys/kwsys_ios_iostream.h.in index c00596f8f..2cc4b0678 100644 --- a/Source/kwsys/kwsys_ios_iostream.h.in +++ b/Source/kwsys/kwsys_ios_iostream.h.in @@ -28,17 +28,67 @@ # include #endif +// The HP implementation of iostream defines cin, cout, cerr, and clog +// as macros in order to do thread-private streams. +// See /opt/aCC/include/iostream/iostream.h for details. +// This block redefines the macros in a safe way that is also compatible +// with the HP definitions and the using declarations below. + +#if !@KWSYS_NAMESPACE@_IOS_USE_SSTREAM +# if defined(__HP_aCC) && (defined(HP_THREAD_SAFE) || defined(_THREAD_SAFE)) +# if defined(cin) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CIN) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CIN +# undef cin +# define cin __tcin.ref() +# endif +# if defined(cout) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_COUT) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_COUT +# undef cout +# define cout __tcout.ref() +# endif +# if defined(cerr) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CERR) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CERR +# undef cerr +# define cerr __tcerr.ref() +# endif +# if defined(clog) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG +# undef clog +# define clog __tclog.ref() +# endif +# endif +#endif + +// If using our own sstream emulation code, put the standard +// streams in the same namespace. #if !@KWSYS_NAMESPACE@_IOS_USE_SSTREAM namespace @KWSYS_NAMESPACE@_ios { using @KWSYS_NAMESPACE@_ios_namespace::ostream; using @KWSYS_NAMESPACE@_ios_namespace::istream; using @KWSYS_NAMESPACE@_ios_namespace::ios; - using @KWSYS_NAMESPACE@_ios_namespace::cout; - using @KWSYS_NAMESPACE@_ios_namespace::cerr; - using @KWSYS_NAMESPACE@_ios_namespace::cin; using @KWSYS_NAMESPACE@_ios_namespace::endl; using @KWSYS_NAMESPACE@_ios_namespace::flush; +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CIN) + using @KWSYS_NAMESPACE@_ios_namespace::__tcin; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cin; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_COUT) + using @KWSYS_NAMESPACE@_ios_namespace::__tcout; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cout; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CERR) + using @KWSYS_NAMESPACE@_ios_namespace::__tcerr; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cerr; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG) + using @KWSYS_NAMESPACE@_ios_namespace::__tclog; +# else + using @KWSYS_NAMESPACE@_ios_namespace::clog; +# endif } #endif