1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stlport_prefix.h"
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <string>
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined(_STLP_USE_WIDE_INTERFACE)
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_PRIV_NAMESPACE
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwstring __ASCIIToWide(const char *ascii) {
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    size_t size = strlen(ascii);
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    wchar_t* buff = new wchar_t[size+1];
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    mbstowcs(buff, ascii, size);
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    buff[size] = 0x00;
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    wstring ret(buff);
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    delete[] buff;
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    return ret;
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstring __WideToASCII(const wchar_t *wide) {
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    size_t size = wcslen(wide);
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    char* buff = new char[size+1];
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    wcstombs(buff, wide, size);
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    buff[size] = 0;
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    string ret(buff);
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    delete[] buff;
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    return ret;
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_STD_NAMESPACE
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_FORCE_INSTANTIATE)
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC allocator<char>;
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_PRIV_NAMESPACE
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<char*, char, allocator<char> >;
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC _String_base<char, allocator<char> >;
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_DEBUG) && !defined (__SUNPRO_CC) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define basic_string _STLP_NON_DBG_NAME(str)
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC basic_string<char, char_traits<char>, allocator<char> >;
44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC __construct_checker<basic_string<char, char_traits<char>, allocator<char> > >;
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    undef basic_string
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define basic_string _STLP_NO_MEM_T_NAME(str)
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_STD_NAMESPACE
53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC basic_string<char, char_traits<char>, allocator<char> >;
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (basic_string)
58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_STD_NAMESPACE
59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    undef basic_string
60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_WCHAR_T)
63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC allocator<wchar_t>;
64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_PRIV_NAMESPACE
66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC _String_base<wchar_t, allocator<wchar_t> >;
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if defined (_STLP_DEBUG) && !defined (__SUNPRO_CC) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      define basic_string _STLP_NON_DBG_NAME(str)
71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >;
73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC __construct_checker<basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > >;
74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      undef basic_string
76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      define basic_string _STLP_NO_MEM_T_NAME(str)
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    else
81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_STD_NAMESPACE
82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate class _STLP_CLASS_DECLSPEC basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >;
85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if defined (basic_string)
87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_MOVE_TO_STD_NAMESPACE
88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      undef basic_string
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE
94