Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/shared/Utils.cpp

Issue 4806567450902528: Issue 1794 - add handling of std::vector<std::string> by Communication::{Input,Output}Buffer (Closed)
Patch Set: remove WriteStrings and ReadStrings Created Feb. 9, 2015, 2:04 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include <memory> 1 #include <memory>
2 #include <stdexcept> 2 #include <stdexcept>
3 #include <vector> 3 #include <vector>
4 4
5 #include <Windows.h> 5 #include <Windows.h>
6 #include <ShlObj.h> 6 #include <ShlObj.h>
7 7
8 #include "Utils.h" 8 #include "Utils.h"
9 9
10 namespace 10 namespace
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 59
60 int utf16StringLength = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), length, N ULL, 0); 60 int utf16StringLength = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), length, N ULL, 0);
61 if (utf16StringLength == 0) 61 if (utf16StringLength == 0)
62 throw std::runtime_error("ToUTF16String failed. Can't determine the length o f the buffer needed."); 62 throw std::runtime_error("ToUTF16String failed. Can't determine the length o f the buffer needed.");
63 63
64 std::wstring utf16String(utf16StringLength, L'\0'); 64 std::wstring utf16String(utf16StringLength, L'\0');
65 MultiByteToWideChar(CP_UTF8, 0, str.c_str(), length, &utf16String[0], utf16Str ingLength); 65 MultiByteToWideChar(CP_UTF8, 0, str.c_str(), length, &utf16String[0], utf16Str ingLength);
66 return utf16String; 66 return utf16String;
67 } 67 }
68 68
69 std::vector<std::wstring> ToUtf16Strings(const std::vector<std::string>& values)
70 {
71 std::vector<std::wstring> result;
72 result.reserve(values.size());
73 transform(values.begin(), values.end(), back_inserter(result), ToUtf16String);
74 return result;
75 }
76
69 std::wstring GetDllDir() 77 std::wstring GetDllDir()
70 { 78 {
71 std::vector<WCHAR> path(MAX_PATH); 79 std::vector<WCHAR> path(MAX_PATH);
72 int length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast <DWORD>(path.size())); 80 int length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast <DWORD>(path.size()));
73 81
74 while (length == path.size()) 82 while (length == path.size())
75 { 83 {
76 // Buffer too small, double buffer size 84 // Buffer too small, double buffer size
77 path.resize(path.size() * 2); 85 path.resize(path.size() * 2);
78 length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast<D WORD>(path.size())); 86 length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast<D WORD>(path.size()));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 } 131 }
124 132
125 void ReplaceString(std::wstring& input, const std::wstring placeholder, const st d::wstring replacement) 133 void ReplaceString(std::wstring& input, const std::wstring placeholder, const st d::wstring replacement)
126 { 134 {
127 size_t replaceStart = input.find(placeholder); 135 size_t replaceStart = input.find(placeholder);
128 if (replaceStart != std::string::npos) 136 if (replaceStart != std::string::npos)
129 { 137 {
130 input.replace(replaceStart, placeholder.length(), replacement); 138 input.replace(replaceStart, placeholder.length(), replacement);
131 } 139 }
132 } 140 }
OLDNEW

Powered by Google App Engine
This is Rietveld