1f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne//===----------------------------------------------------------------------===// 2f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// 3f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// The LLVM Compiler Infrastructure 4f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// 5f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// This file is dual licensed under the MIT and the University of Illinois Open 6f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// Source Licenses. See LICENSE.TXT for details. 7f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// 8f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne//===----------------------------------------------------------------------===// 9f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne 10f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// <fstream> 11f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne 12f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// template <class charT, class traits = char_traits<charT> > 13f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// class basic_ofstream 14f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne 15f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne// void open(const wchar_t* s, ios_base::openmode mode = ios_base::out); 16f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne 17f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne#include <fstream> 18f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne#include <cassert> 19f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne#include "platform_support.h" 20f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne 21f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourneint main() 22f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne{ 23f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne#ifdef _LIBCPP_HAS_OPEN_WITH_WCHAR 24f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne std::wstring temp = get_wide_temp_file_name(); 25f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne { 26f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne std::ofstream fs; 27f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(!fs.is_open()); 28f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne char c = 'a'; 29f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs << c; 30f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(fs.fail()); 31f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs.open(temp.c_str()); 32f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(fs.is_open()); 33f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs << c; 34f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne } 35f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne { 36f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne std::ifstream fs(temp.c_str()); 37f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne char c = 0; 38f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs >> c; 39f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(c == 'a'); 40f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne } 41f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne _wremove(temp.c_str()); 42f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne { 43f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne std::wofstream fs; 44f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(!fs.is_open()); 45f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne wchar_t c = L'a'; 46f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs << c; 47f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(fs.fail()); 48f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs.open(temp.c_str()); 49f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(fs.is_open()); 50f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs << c; 51f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne } 52f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne { 53f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne std::wifstream fs(temp.c_str()); 54f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne wchar_t c = 0; 55f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne fs >> c; 56f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne assert(c == L'a'); 57f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne } 58f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne _wremove(temp.c_str()); 59f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne#endif 60f493c2fed6cbe9e4a9a2891d730f1387bda5a91cPeter Collingbourne} 61