FEI  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
fei_sstream.hpp
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2005 Sandia Corporation. */
3 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
4 /* non-exclusive license for use of this work by or on behalf */
5 /* of the U.S. Government. Export of this program may require */
6 /* a license from the United States Government. */
7 /*--------------------------------------------------------------------*/
8 
9 #ifndef _fei_sstream_hpp_
10 #define _fei_sstream_hpp_
11 
12 #include "fei_macros.hpp"
13 
14 //
15 //The stuff in this file somewhat protects us from the fact that some
16 //platforms may not put stream-related stuff in the std namespace,
17 //even though most do.
18 //These days (2007) perhaps all platforms do put everything in std and
19 //perhaps no platforms still have iostream.h without having <iostream>, etc.
20 //But historically we've had to account for these possibilities and I see
21 //little to be gained from removing this flexibility at this point.
22 //
23 //The basic mechanism here is to use macros that are defined differently
24 //for certain situations. An alternative approach would be to import
25 //symbols into our namespace, but we choose not to do that since it is
26 //a well-known sin to perform namespace pollution from within a header.
27 //
28 
29 #ifdef FEI_HAVE_SSTREAM
30 #include <sstream>
31 #define FEI_ISTRINGSTREAM std::istringstream
32 #define FEI_OSTRINGSTREAM std::ostringstream
33 #elif defined(FEI_HAVE_SSTREAM_H)
34 #include <sstream.h>
35 #define FEI_ISTRINGSTREAM istringstream
36 #define FEI_OSTRINGSTREAM ostringstream
37 #else
38 #error "must have <sstream> or <sstream.h>"
39 #endif
40 
41 
42 #endif
43