Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / libc++ / trunk / test / support / platform_support.h
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // Define a bunch of macros that can be used in the tests instead of
11 //  implementation defined assumptions:
12 //   - locale names
13 //   - floating point number string output
14
15 #ifndef PLATFORM_SUPPORT_H
16 #define PLATFORM_SUPPORT_H
17
18 // locale names
19 #ifdef _WIN32
20 // WARNING: Windows does not support UTF-8 codepages.
21 // Locales are "converted" using http://docs.moodle.org/dev/Table_of_locales
22 #define LOCALE_en_US_UTF_8     "English_United States.1252"
23 #define LOCALE_cs_CZ_ISO8859_2 "Czech_Czech Republic.1250"
24 #define LOCALE_fr_FR_UTF_8     "French_France.1252"
25 #define LOCALE_fr_CA_ISO8859_1 "French_Canada.1252"
26 #define LOCALE_ru_RU_UTF_8     "Russian_Russia.1251"
27 #define LOCALE_zh_CN_UTF_8     "Chinese_China.936"
28 #else
29 #define LOCALE_en_US_UTF_8     "en_US.UTF-8"
30 #define LOCALE_fr_FR_UTF_8     "fr_FR.UTF-8"
31 #ifdef __linux__
32 #define LOCALE_fr_CA_ISO8859_1 "fr_CA.ISO-8859-1"
33 #define LOCALE_cs_CZ_ISO8859_2 "cs_CZ.ISO-8859-2"
34 #else
35 #define LOCALE_fr_CA_ISO8859_1 "fr_CA.ISO8859-1"
36 #define LOCALE_cs_CZ_ISO8859_2 "cs_CZ.ISO8859-2"
37 #endif
38 #define LOCALE_ru_RU_UTF_8     "ru_RU.UTF-8"
39 #define LOCALE_zh_CN_UTF_8     "zh_CN.UTF-8"
40 #endif
41
42 #include <stdio.h>
43 #include <stdlib.h>
44 #include <string>
45 #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
46 #include <io.h> // _mktemp
47 #else
48 #include <unistd.h> // close
49 #endif
50
51 inline
52 std::string
53 get_temp_file_name()
54 {
55 #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
56     char Path[MAX_PATH+1];
57     char FN[MAX_PATH+1];
58     do { } while (0 == GetTempPath(MAX_PATH+1, Path));
59     do { } while (0 == GetTempFileName(Path, "libcxx", 0, FN));
60     return FN;
61 #else
62     std::string Name;
63     int FD = -1;
64     do {
65       Name = "libcxx.XXXXXX";
66       FD = mkstemp(&Name[0]);
67       assert(errno != EINVAL && "Something is wrong with the mkstemp's argument");
68     } while (FD == -1 || errno == EEXIST);
69     close(FD);
70     return Name;
71 #endif
72 }
73
74 #endif // PLATFORM_SUPPORT_H