Code tweaks and cosmetics

This commit is contained in:
spx 2012-08-01 14:47:10 -07:00
parent 06f625c91c
commit 66c52d6d80
2 changed files with 42 additions and 50 deletions

View File

@ -207,41 +207,47 @@ bool CConfigParser::GetSectionVariables(const std::wstring& strVariable, std::ws
CMeasure* measure = m_MeterWindow->GetMeasure(strToken[0]); CMeasure* measure = m_MeterWindow->GetMeasure(strToken[0]);
if (measure) if (measure)
{ {
_snwprintf_s(buffer, _TRUNCATE, L"%lli", (LONGLONG)measure->GetValue()); int len = _snwprintf_s(buffer, _TRUNCATE, L"%lli", (LONGLONG)measure->GetValue());
strValue = buffer; strValue.assign(buffer, len);
return true; return true;
} }
} }
else if (strToken.size() == 2) else if (strToken.size() == 2)
{ {
std::wstring args = strToken[1]; auto stripSpaces = [](std::wstring& str)
{
// Strip off leading and trailing spaces
size_t startPos = str.find_first_not_of(L" \t");
size_t endPos = str.find_last_not_of(L" \t");
if (std::wstring::npos != startPos || std::wstring::npos != endPos)
{
str = str.substr(startPos, endPos - startPos + 1);
}
};
// strip off leading and trailing spaces std::wstring args = strToken[1];
size_t startPos = args.find_first_not_of(L" \t"); stripSpaces(args);
size_t endPos = args.find_last_not_of(L" \t");
if (std::wstring::npos != startPos || std::wstring::npos != endPos)
args = args.substr(startPos, endPos - startPos + 1);
// Check meters first // Check meters first
// Format: [MeterName:X] // Format: [MeterName:X]
CMeter* meter = m_MeterWindow->GetMeter(strToken[0]); CMeter* meter = m_MeterWindow->GetMeter(strToken[0]);
if (meter) if (meter)
{ {
WCHAR buffer[MAX_LINE_LENGTH]; const WCHAR* arg = args.c_str();
if (_wcsicmp(args.c_str(), L"X") == 0) if (_wcsicmp(arg, L"X") == 0)
{ {
_itow_s(meter->GetX(), buffer, 10); _itow_s(meter->GetX(), buffer, 10);
} }
else if (_wcsicmp(args.c_str(), L"Y") == 0) else if (_wcsicmp(arg, L"Y") == 0)
{ {
_itow_s(meter->GetY(), buffer, 10); _itow_s(meter->GetY(), buffer, 10);
} }
else if (_wcsicmp(args.c_str(), L"W") == 0) else if (_wcsicmp(arg, L"W") == 0)
{ {
_itow_s(meter->GetW(), buffer, 10); _itow_s(meter->GetW(), buffer, 10);
} }
else if (_wcsicmp(args.c_str(), L"H") == 0) else if (_wcsicmp(arg, L"H") == 0)
{ {
_itow_s(meter->GetH(), buffer, 10); _itow_s(meter->GetH(), buffer, 10);
} }
@ -266,46 +272,37 @@ bool CConfigParser::GetSectionVariables(const std::wstring& strVariable, std::ws
WCHAR format[32]; WCHAR format[32];
std::vector<std::wstring> measureOptions = Tokenize(args, L","); std::vector<std::wstring> measureOptions = Tokenize(args, L",");
std::wstring tempStr;
if (_wcsicmp(measureOptions[0].c_str(), L"%") == 0) // Percentual if (wcscmp(measureOptions[0].c_str(), L"%") == 0) // Percentual
{ {
percentual = true; percentual = true;
} }
else if (_wcsicmp(measureOptions[0].substr(0,1).c_str(), L"/") == 0) // Scale else if (!measureOptions[0].empty() && measureOptions[0][0] == L'/') // Scale
{ {
std::wstring tempScale = measureOptions[0].substr(1, measureOptions[0].length() - 1); tempStr = measureOptions[0].substr(1, measureOptions[0].length() - 1);
stripSpaces(tempStr);
// strip off leading and trailing spaces errno = 0;
size_t startPos = tempScale.find_first_not_of(L" \t"); scale = _wtoi(tempStr.c_str());
size_t endPos = tempScale.find_last_not_of(L" \t");
if ((std::wstring::npos != startPos) || (std::wstring::npos != endPos)) if (errno == EINVAL)
{ {
tempScale = tempScale.substr(startPos, endPos - startPos + 1);
}
scale = _wtoi(tempScale.c_str());
// _wtoi returns 0 if there is an error.
if (scale == 0 && tempScale != L"0")
scale = 1.0; scale = 1.0;
}
} }
else // NumOfDecimals else // NumOfDecimals
{ {
std::wstring tempStr = measureOptions[0]; tempStr = measureOptions[0];
stripSpaces(tempStr);
// strip off leading and trailing spaces
size_t startPos = tempStr.find_first_not_of(L" \t");
size_t endPos = tempStr.find_last_not_of(L" \t");
if ((std::wstring::npos != startPos) || (std::wstring::npos != endPos))
{
tempStr = tempStr.substr(startPos, endPos - startPos + 1);
}
errno = 0;
numOfDecimals = _wtoi(tempStr.c_str()); numOfDecimals = _wtoi(tempStr.c_str());
// _wtoi returns 0 if there is an error. if (errno == EINVAL || numOfDecimals < -1)
if ((numOfDecimals == 0 && tempStr != L"0") || numOfDecimals < -1) {
numOfDecimals = -1; numOfDecimals = -1;
}
foundDecimal = true; foundDecimal = true;
} }
@ -313,21 +310,17 @@ bool CConfigParser::GetSectionVariables(const std::wstring& strVariable, std::ws
// NumOfDecimals (for Percentual and Scale) // NumOfDecimals (for Percentual and Scale)
if (measureOptions.size() == 2 && !foundDecimal) if (measureOptions.size() == 2 && !foundDecimal)
{ {
std::wstring tempStr = measureOptions[1]; tempStr = measureOptions[1];
stripSpaces(tempStr);
// strip off leading and trailing spaces errno = 0;
size_t startPos = tempStr.find_first_not_of(L" \t");
size_t endPos = tempStr.find_last_not_of(L" \t");
if ((std::wstring::npos != startPos) || (std::wstring::npos != endPos))
{
tempStr = tempStr.substr(startPos, endPos - startPos + 1);
}
numOfDecimals = _wtoi(tempStr.c_str()); numOfDecimals = _wtoi(tempStr.c_str());
// _wtoi returns 0 if there is an error. // _wtoi returns 0 if there is an error.
if ((numOfDecimals == 0 && tempStr != L"0") || numOfDecimals < -1) if (errno == EINVAL || numOfDecimals < -1)
{
numOfDecimals = -1; numOfDecimals = -1;
}
} }
if (percentual) if (percentual)

View File

@ -292,8 +292,6 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section)
} }
bool oldWDefined = m_WDefined; bool oldWDefined = m_WDefined;
bool oldHDefined = m_HDefined;
m_W = parser.ReadInt(section, L"W", m_W); m_W = parser.ReadInt(section, L"W", m_W);
m_WDefined = parser.GetLastValueDefined(); m_WDefined = parser.GetLastValueDefined();
if (!m_WDefined && oldWDefined) if (!m_WDefined && oldWDefined)
@ -302,6 +300,7 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section)
parser.SetValue(section, L"W", L"0"); parser.SetValue(section, L"W", L"0");
} }
bool oldHDefined = m_HDefined;
m_H = parser.ReadInt(section, L"H", m_H); m_H = parser.ReadInt(section, L"H", m_H);
m_HDefined = parser.GetLastValueDefined(); m_HDefined = parser.GetLastValueDefined();
if (!m_HDefined && oldHDefined) if (!m_HDefined && oldHDefined)