CINT iostream

From: Pasha Murat (murat@cdfsga.fnal.gov)
Date: Tue Aug 17 1999 - 17:19:51 MEST


Hi - the questions about CINT are certainly welcome on this list, no doubt 
about it. I believe that Masa answered this question some time ago in

	http://pcroot.cern.ch/root-bugs/Enhancement?id=80

As full text of his answer is not available there I'm taking the freedom of
forwarding it to this list. 
				-Best, Pasha
-----------------------------------------------------------------------------

From: Masaharu Goto <MXJ02154@nifty.ne.jp>
To: murat@cdfsga.fnal.gov
Subject: RE:Error: Can't call ostream::width() in
Date: Sun, 24 Jan 1999 15:58:34 +0900

Pasha,

I think I should add this QA to FAQ.

There are several versions of iostream library support in CINT.

 1) Old ANSI C++ 3.0 iostream version - precompiled
     This is the most common version which is used currently. Following
     platforms use this version.

       Win32    Visual C++, Symantec C++, old Borland C++
       Linux    gcc
       FreeBSD  gcc
       BSDOS    gcc
       HP-UX    CC,aCC,gcc
       Solaris  SUNWspro-CC,gcc
       AIX      xlC,gcc
       SGI      CC,gcc
       AlphaOSF cxx,gcc
       etc...

 2) New template base iostream version - precompiled
     Template base iostream library is still on its' way of completeness.
     Major compilers provides template base iostream library, however, their
     implementation and ANSI/ISO comformance is not uniform. Currently, cint
     only supports template base precompiled iostream library for following
     platform

       Win32    C++ Builder

     Extending this support for other compiler is possible but not easy. 
     Because of inconsistent compiler implementation, I must do some cut&try
     on particular platform.

 3) Fake iostream version - interpreted
     There are a few compilers which precompiled iostream library is not
     supported.

      Linux,HP-UX,SGI,etc...     KAI-CC, egcs

     Those compilers only have template base iostream library. As described
     above, support for template base iostream library is still on the way.
     For these environment, CINT provides fake iostream version which is 
     interpreted. The fake version only supports very basic io functionality.
     No support for library details.


Platforms you have problem with fall into category 3). GSI/EGCS and SGI/KCC.
I'm sorry for inconvenience for the time being. 

Mashaaru Goto

--------------------------------------------------------------------------
Dear ROOT developers, 
        I'm having a problem with rebuilding CINT (and therefore - ROOT) 
in SGI/EGCS-1.1.1 configuration. THe build finishes successfully, however 
the following doesn't work:

/data69/upgrade/root/v2_21_01/GCC_2_8>bin/root -b
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   2.21/01   14 January 1999   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

CINT/ROOT C/C++ Interpreter version 5.13.83, Dec 2 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] cout << setw(10) << 10.345 << endl;
Error: Can't call ostream::width() in current scope FILE:iomanip.h LINE:76
Error: L Illegal operator for real number FILE:/var/tmp/aaaa0078a LINE:1
(class G__CINT_ENDL)273087296
*** Interpreter error recovered ***
root [1] cout << setw(10) << 10 << endl;    
Error: Can't call ostream::width() in current scope FILE:iomanip.h LINE:76
*** Interpreter error recovered ***
-----------------------------------------------------------------------------
Christopher A. Stevens writes:
 > Could someone else try this and let me know if you get the same result,
 > so I can find out if it's just me or not.
 > 
 > root [1] int a=20;
 > root [2] cout << hex << a << endl;
 > 20   (not 14 hex as expected)
 > root [3] cout.setf(ios::hex);
 > root [4] cout << a << endl;
 > 20  (again not 14 hex as expected)
 > 
 > Using ROOT 2.22/10 with CINT 5.14.10 under Redhat 6.0.
 > Thanks.
 > 
 > P.S. If questions like this, about CINT, are not approved on this mail
 > list, let me know that too, so I can look elsewhere for an answer.
 > 
 > -- 
 > Christopher A. Stevens
 > Navigation/Data Reduction
 > Voice (301) 342-3181 x263 Fax   (301) 342-4745



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:38 MET