minor tweaks of the dpitester tool

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2022-07-18 18:02:15 +08:00
parent 56499c7028
commit 2fb842e4a9
2 changed files with 25 additions and 14 deletions

View File

@ -43,10 +43,8 @@ if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release) set(CMAKE_BUILD_TYPE Release)
endif() endif()
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug")) if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE)
if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
endif()
endif() endif()
if(NOT DEFINED CMAKE_DEBUG_POSTFIX) if(NOT DEFINED CMAKE_DEBUG_POSTFIX)

View File

@ -159,11 +159,11 @@ static const auto DPI_COUNT = int(std::size(DPI_TABLE));
EXTERN_C int WINAPI wmain(int argc, wchar_t *argv[]) EXTERN_C int WINAPI wmain(int argc, wchar_t *argv[])
{ {
std::vector<std::wstring> options = {}; std::map<std::wstring, std::wstring> options = {};
std::vector<std::wstring> metrics = {}; std::vector<std::wstring> metrics = {};
if (argc > 1) { if (argc > 1) {
for (int i = 1; i != argc; ++i) { for (int i = 1; i != argc; ++i) {
std::wstring arg = argv[i]; const std::wstring arg = argv[i];
if (arg.starts_with(L"SM_CX") || arg.starts_with(L"SM_CY")) { if (arg.starts_with(L"SM_CX") || arg.starts_with(L"SM_CY")) {
if (SYSTEM_METRIC_TABLE.contains(arg)) { if (SYSTEM_METRIC_TABLE.contains(arg)) {
if (std::find(std::begin(metrics), std::end(metrics), arg) == std::end(metrics)) { if (std::find(std::begin(metrics), std::end(metrics), arg) == std::end(metrics)) {
@ -172,11 +172,24 @@ EXTERN_C int WINAPI wmain(int argc, wchar_t *argv[])
} else { } else {
std::wcerr << L"Unrecognized system metric value: " << arg << std::endl; std::wcerr << L"Unrecognized system metric value: " << arg << std::endl;
} }
} else if (arg.starts_with(L"/") || arg.starts_with(L"--")) { } else if (arg.starts_with(L'/') || arg.starts_with(L"--")) {
const int len = arg.starts_with(L"/") ? 1 : 2; const int length = arg.starts_with(L'/') ? 1 : 2;
arg.erase(0, len); const std::wstring option = std::wstring(arg).erase(0, length);
if (std::find(std::begin(options), std::end(options), arg) == std::end(options)) { if (options.contains(option)) {
options.push_back(arg); std::wcerr << L"Duplicated option: " << option << std::endl;
} else {
const std::wstring param = [&option, i, argc, argv]() -> std::wstring {
const std::wstring::size_type pos = option.find_first_of(L'=');
if (pos == std::wstring::npos) {
const int index = i + 1;
if (index < argc) {
return argv[index];
}
return {};
}
return option.substr(pos, option.length() - pos - 1);
}();
options.insert({option, param});
} }
} else { } else {
std::wcerr << L"Unrecognized parameter: " << arg << std::endl; std::wcerr << L"Unrecognized parameter: " << arg << std::endl;
@ -195,7 +208,7 @@ EXTERN_C int WINAPI wmain(int argc, wchar_t *argv[])
for (int i = 0; i != DPI_COUNT; ++i) { for (int i = 0; i != DPI_COUNT; ++i) {
text += std::to_wstring(DPI_TABLE[i]); text += std::to_wstring(DPI_TABLE[i]);
if (i == (DPI_COUNT - 1)) { if (i == (DPI_COUNT - 1)) {
text += L"\n"; text += L'\n';
} else { } else {
text += L", "; text += L", ";
} }
@ -215,9 +228,9 @@ EXTERN_C int WINAPI wmain(int argc, wchar_t *argv[])
} }
} }
if (i != (metrics_count - 1)) { if (i != (metrics_count - 1)) {
text += L","; text += L',';
} }
text += L"\n"; text += L'\n';
} }
text += L"};"; text += L"};";
std::wcout << text << std::endl; std::wcout << text << std::endl;