1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-01-31 09:57:14 +01:00

Some changes on user options.

This commit is contained in:
Sandu Liviu Catalin 2020-05-10 12:56:23 +03:00
parent bb74e92fc1
commit 018a2de97b
5 changed files with 27 additions and 14 deletions

View File

@ -298,6 +298,14 @@ String & NullString()
return s; return s;
} }
// ------------------------------------------------------------------------------------------------
String & StringRef(const SQChar * str)
{
static String s;
s.assign(str);
return s;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
CSStr ConvNum< Int8 >::ToStr(Int8 v) CSStr ConvNum< Int8 >::ToStr(Int8 v)
{ {

View File

@ -137,6 +137,11 @@ Function & NullFunction();
*/ */
String & NullString(); String & NullString();
/* ------------------------------------------------------------------------------------------------
* Retrieve a reference to a static string with a specific value.
*/
String & StringRef(const SQChar * str);
/* ------------------------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------------------------
* Compute the next power of two for the specified number. * Compute the next power of two for the specified number.
*/ */

View File

@ -581,21 +581,21 @@ void Core::EnableNullEntities()
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
CSStr Core::GetOption(CSStr name) const const String & Core::GetOption(const String & name) const
{ {
auto elem = m_Options.find(name); auto elem = m_Options.find(name);
return (elem == m_Options.end()) ? _SC("") : elem->second.c_str(); return (elem == m_Options.end()) ? NullString() : elem->second;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
CSStr Core::GetOption(CSStr name, CSStr value) const const String & Core::GetOption(const String & name, const String & value) const
{ {
auto elem = m_Options.find(name); auto elem = m_Options.find(name);
return (elem == m_Options.end()) ? value : elem->second.c_str(); return (elem == m_Options.end()) ? value : elem->second;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void Core::SetOption(CSStr name, CSStr value) void Core::SetOption(const String & name, const String & value)
{ {
m_Options[name] = value; m_Options[name] = value;
} }

View File

@ -811,17 +811,17 @@ public:
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Retrieve the value of the specified option. * Retrieve the value of the specified option.
*/ */
CSStr GetOption(CSStr name) const; const String & GetOption(const String & name) const;
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Retrieve the value of the specified option or the fall back value if it doesn't exist. * Retrieve the value of the specified option or the fall back value if it doesn't exist.
*/ */
CSStr GetOption(CSStr name, CSStr value) const; const String & GetOption(const String & name, const String & value) const;
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Modify the value of the specified option. * Modify the value of the specified option.
*/ */
void SetOption(CSStr name, CSStr value); void SetOption(const String & name, const String & value);
/* -------------------------------------------------------------------------------------------- /* --------------------------------------------------------------------------------------------
* Retrieve the script source associated with a certain path in the scripts list. * Retrieve the script source associated with a certain path in the scripts list.

View File

@ -145,21 +145,21 @@ static void SqSetAreasEnabled(bool toggle)
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static CSStr SqGetOption(CSStr name) static const String & SqGetOption(StackStrF & name)
{ {
return Core::Get().GetOption(name); return Core::Get().GetOption(String(name.mPtr, name.mLen));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static CSStr SqGetOptionOr(CSStr name, CSStr value) static const String & SqGetOptionOr(StackStrF & name, StackStrF & value)
{ {
return Core::Get().GetOption(name, value); return Core::Get().GetOption(String(name.mPtr, name.mLen), StringRef(value.mPtr));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
static void SqSetOption(CSStr name, CSStr value) static void SqSetOption(StackStrF & name, StackStrF & value)
{ {
return Core::Get().SetOption(name, value); Core::Get().SetOption(String(name.mPtr, name.mLen), String(value.mPtr, value.mLen));
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------