Skip to content

Commit

Permalink
GetRCFloat and GetRCDouble
Browse files Browse the repository at this point in the history
  • Loading branch information
alur committed Aug 3, 2013
1 parent ec660ca commit 02ae62c
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lsapi/SettingsManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,27 @@ class SettingsManager
* @return setting value
*/
int GetRCInt(LPCWSTR pwzKeyName, int nDefault);

/**
* Retrieves a floating point value from the global settings. Returns
* <code>fDefault</code> if the setting does not exist.
*
* @param pwzKeyName setting name
* @param fDefault default value
* @return setting value
*/
float GetRCFloat (LPCWSTR pwzKeyName, float fDefault);

/**
* Retrieves a double-precision floating point value from the
* global settings. Return <code>dDefault</code> if the setting
* does not exist.
*
* @param pwzKeyName setting name
* @param dDefault default value
* @return setting value
*/
double GetRCDouble(LPCWSTR pwzKeyName, double dDefault);

/**
* Retrieves a raw string value from the global settings. If setting does
Expand Down
36 changes: 36 additions & 0 deletions lsapi/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,42 @@ int GetRCIntA(LPCSTR pszKeyName, int nDefault)
}


float GetRCFloatW(LPCWSTR pwzKeyName, float fDefault)
{
if (g_LSAPIManager.IsInitialized())
{
return g_LSAPIManager.GetSettingsManager()->GetRCFloat(
pwzKeyName, fDefault);
}

return fDefault;
}


float GetRCFloatA(LPCSTR pszKeyName, float fDefault)
{
return GetRCFloatW(std::unique_ptr<wchar_t>(WCSFromMBS(pszKeyName)).get(), fDefault);
}


double GetRCDoubleW(LPCWSTR pwzKeyName, double dDefault)
{
if (g_LSAPIManager.IsInitialized())
{
return g_LSAPIManager.GetSettingsManager()->GetRCDouble(
pwzKeyName, dDefault);
}

return dDefault;
}


double GetRCDoubleA(LPCSTR pszKeyName, double dDefault)
{
return GetRCDoubleW(std::unique_ptr<wchar_t>(WCSFromMBS(pszKeyName)).get(), dDefault);
}


BOOL GetRCBoolW(LPCWSTR pwzKeyName, BOOL ifFound)
{
if (g_LSAPIManager.IsInitialized())
Expand Down
50 changes: 50 additions & 0 deletions lsapi/settingsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,56 @@ int SettingsManager::GetRCInt(LPCWSTR pszKeyName, int nDefault)
}


float SettingsManager::GetRCFloat(LPCWSTR pszKeyName, float fDefault)
{
SettingsMap::iterator it;
float fValue = fDefault;

if (pszKeyName && _FindLine(pszKeyName, it))
{
wchar_t wzToken[MAX_LINE_LENGTH] = { 0 };
wchar_t wzExpanded[MAX_LINE_LENGTH] = { 0 };

StringSet recursiveVarSet;
recursiveVarSet.insert(pszKeyName);
VarExpansionEx(wzExpanded, it->second.c_str(),
MAX_LINE_LENGTH, recursiveVarSet);

if (GetTokenW(wzExpanded, wzToken, nullptr, FALSE))
{
fValue = wcstof(wzToken, nullptr);
}
}

return fValue;
}


double SettingsManager::GetRCDouble(LPCWSTR pszKeyName, double dDefault)
{
SettingsMap::iterator it;
double dValue = dDefault;

if (pszKeyName && _FindLine(pszKeyName, it))
{
wchar_t wzToken[MAX_LINE_LENGTH] = { 0 };
wchar_t wzExpanded[MAX_LINE_LENGTH] = { 0 };

StringSet recursiveVarSet;
recursiveVarSet.insert(pszKeyName);
VarExpansionEx(wzExpanded, it->second.c_str(),
MAX_LINE_LENGTH, recursiveVarSet);

if (GetTokenW(wzExpanded, wzToken, nullptr, FALSE))
{
dValue = wcstod(wzToken, nullptr);
}
}

return dValue;
}


COLORREF SettingsManager::GetRCColor(LPCWSTR pszKeyName, COLORREF crDefault)
{
COLORREF crReturn = crDefault;
Expand Down

0 comments on commit 02ae62c

Please sign in to comment.