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