Home | History | Annotate | Download | only in unicode
      1 /*
      2 **********************************************************************
      3 *   Copyright (C) 2001-2010 International Business Machines
      4 *   Corporation and others.  All Rights Reserved.
      5 **********************************************************************
      6 *  FILE NAME : ustream.h
      7 *
      8 *   Modification History:
      9 *
     10 *   Date        Name        Description
     11 *   06/25/2001  grhoten     Move iostream from unistr.h
     12 ******************************************************************************
     13 */
     14 
     15 #ifndef USTREAM_H
     16 #define USTREAM_H
     17 
     18 #include "unicode/unistr.h"
     19 
     20 /**
     21  * \file
     22  * \brief C++ API: Unicode iostream like API
     23  *
     24  * At this time, this API is very limited. It contains
     25  * operator<< and operator>> for UnicodeString manipulation with the
     26  * C++ I/O stream API.
     27  */
     28 
     29 #if U_IOSTREAM_SOURCE >= 199711
     30 #if (__GNUC__ == 2)
     31 #include <iostream>
     32 #else
     33 #include <istream>
     34 #include <ostream>
     35 #endif
     36 
     37 U_NAMESPACE_BEGIN
     38 
     39 /**
     40  * Write the contents of a UnicodeString to a C++ ostream. This functions writes
     41  * the characters in a UnicodeString to an ostream. The UChars in the
     42  * UnicodeString are converted to the char based ostream with the default
     43  * converter.
     44  * @stable 3.0
     45  */
     46 U_IO_API std::ostream & U_EXPORT2 operator<<(std::ostream& stream, const UnicodeString& s);
     47 
     48 /**
     49  * Write the contents from a C++ istream to a UnicodeString. The UChars in the
     50  * UnicodeString are converted from the char based istream with the default
     51  * converter.
     52  * @stable 3.0
     53  */
     54 U_IO_API std::istream & U_EXPORT2 operator>>(std::istream& stream, UnicodeString& s);
     55 U_NAMESPACE_END
     56 
     57 #elif U_IOSTREAM_SOURCE >= 198506
     58 /* <istream.h> and <ostream.h> don't exist. */
     59 #include <iostream.h>
     60 
     61 U_NAMESPACE_BEGIN
     62 U_IO_API ostream & U_EXPORT2 operator<<(ostream& stream, const UnicodeString& s);
     63 
     64 U_IO_API istream & U_EXPORT2 operator>>(istream& stream, UnicodeString& s);
     65 U_NAMESPACE_END
     66 
     67 #endif
     68 
     69 /* No operator for UChar because it can conflict with wchar_t  */
     70 
     71 #endif
     72