48 E_UTF16, E_UNICODE = E_UTF16
68 template<
typename TrueType,
typename FalseType>
69 struct Either {
typedef FalseType Type; };
71 enum { Result =
false };
75 template<
typename TrueType,
typename FalseType>
76 struct Either {
typedef TrueType Type; };
78 enum { Result =
true };
82 enum MarshalingDirection {
93 template<Encoding encoding,
typename SourceType>
94 static System::String ^marshal(
const SourceType &
string) {
96 return marshalCxxString<encoding, SourceType>(string);
99 template<Encoding encoding,
typename SourceType>
100 static System::String ^marshalCxxString(
104 size_t byteCount = cxxString.length() *
sizeof(SourceStringType::value_type);
108 return System::String::Empty;
112 array<unsigned char> ^bytes =
gcnew array<unsigned char>(byteCount);
113 { pin_ptr<unsigned char> pinnedBytes = &bytes[0];
114 memcpy(pinnedBytes, cxxString.c_str(), byteCount);
118 return decode<encoding>(bytes);
123 template<Encoding encoding>
static System::String ^decode(array<unsigned char> ^bytes);
124 template<>
static System::String ^decode<E_ANSI>(array<unsigned char> ^bytes) {
125 return System::Text::Encoding::Default->GetString(bytes);
127 template<>
static System::String ^decode<E_UTF8>(array<unsigned char> ^bytes) {
128 return System::Text::Encoding::UTF8->GetString(bytes);
130 template<>
static System::String ^decode<E_UTF16>(array<unsigned char> ^bytes) {
131 return System::Text::Encoding::Unicode->GetString(bytes);
138 template<Encoding encoding,
typename SourceType>
140 System::String ^
string 145 if(string->Length == 0) {
150 array<unsigned char> ^bytes = encode<encoding>(string);
153 pin_ptr<unsigned char> pinnedBytes(&bytes[0]);
155 reinterpret_cast<StringType::value_type *>(static_cast<unsigned char *>(pinnedBytes)),
156 bytes->Length /
sizeof(StringType::value_type)
160 template<>
static std::wstring marshal<E_UTF16, System::String ^>(
161 System::String ^string
164 pin_ptr<const wchar_t> pinnedChars(::PtrToStringChars(
string));
165 return std::wstring(pinnedChars, string->Length);
170 template<Encoding encoding>
static array<unsigned char> ^encode(System::String ^
string);
171 template<>
static array<unsigned char> ^encode<E_ANSI>(System::String ^string) {
172 return System::Text::Encoding::Default->GetBytes(
string);
174 template<>
static array<unsigned char> ^encode<E_UTF8>(System::String ^string) {
175 return System::Text::Encoding::UTF8->GetBytes(
string);
177 template<>
static array<unsigned char> ^encode<E_UTF16>(System::String ^string) {
178 return System::Text::Encoding::Unicode->GetBytes(
string);
196 template<Encoding encoding,
typename SourceType>
200 >::Type marshalString(SourceType
string) {
205 >::marshal<encoding, SourceType>(string);
Definition: EventStreamDetail.h:15