mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 00:55:50 +00:00
Merge branch 'copycompiler' into 'master'
Avoid a few copies in mwscript See merge request OpenMW/openmw!4215
This commit is contained in:
commit
045bccb3e9
@ -25,11 +25,11 @@ namespace MWScript
|
||||
{
|
||||
class OpSetControl : public Interpreter::Opcode0
|
||||
{
|
||||
std::string mControl;
|
||||
std::string_view mControl;
|
||||
bool mEnable;
|
||||
|
||||
public:
|
||||
OpSetControl(const std::string& control, bool enable)
|
||||
OpSetControl(std::string_view control, bool enable)
|
||||
: mControl(control)
|
||||
, mEnable(enable)
|
||||
{
|
||||
@ -43,10 +43,10 @@ namespace MWScript
|
||||
|
||||
class OpGetDisabled : public Interpreter::Opcode0
|
||||
{
|
||||
std::string mControl;
|
||||
std::string_view mControl;
|
||||
|
||||
public:
|
||||
OpGetDisabled(const std::string& control)
|
||||
OpGetDisabled(std::string_view control)
|
||||
: mControl(control)
|
||||
{
|
||||
}
|
||||
|
@ -51,11 +51,11 @@ namespace Compiler
|
||||
}
|
||||
|
||||
void Extensions::registerFunction(
|
||||
const std::string& keyword, ScriptReturn returnType, const ScriptArgs& argumentType, int code, int codeExplicit)
|
||||
std::string_view keyword, ScriptReturn returnType, std::string_view argumentType, int code, int codeExplicit)
|
||||
{
|
||||
Function function;
|
||||
|
||||
if (argumentType.find('/') == std::string::npos)
|
||||
if (argumentType.find('/') == std::string_view::npos)
|
||||
{
|
||||
function.mSegment = 5;
|
||||
assert(code >= 33554432 && code <= 67108863);
|
||||
@ -70,22 +70,22 @@ namespace Compiler
|
||||
|
||||
int keywordIndex = mNextKeywordIndex--;
|
||||
|
||||
mKeywords.insert(std::make_pair(keyword, keywordIndex));
|
||||
mKeywords.emplace(keyword, keywordIndex);
|
||||
|
||||
function.mReturn = returnType;
|
||||
function.mArguments = argumentType;
|
||||
function.mCode = code;
|
||||
function.mCodeExplicit = codeExplicit;
|
||||
|
||||
mFunctions.insert(std::make_pair(keywordIndex, function));
|
||||
mFunctions.emplace(keywordIndex, std::move(function));
|
||||
}
|
||||
|
||||
void Extensions::registerInstruction(
|
||||
const std::string& keyword, const ScriptArgs& argumentType, int code, int codeExplicit)
|
||||
std::string_view keyword, std::string_view argumentType, int code, int codeExplicit)
|
||||
{
|
||||
Instruction instruction;
|
||||
|
||||
if (argumentType.find('/') == std::string::npos)
|
||||
if (argumentType.find('/') == std::string_view::npos)
|
||||
{
|
||||
instruction.mSegment = 5;
|
||||
assert(code >= 33554432 && code <= 67108863);
|
||||
@ -100,13 +100,13 @@ namespace Compiler
|
||||
|
||||
int keywordIndex = mNextKeywordIndex--;
|
||||
|
||||
mKeywords.insert(std::make_pair(keyword, keywordIndex));
|
||||
mKeywords.emplace(keyword, keywordIndex);
|
||||
|
||||
instruction.mArguments = argumentType;
|
||||
instruction.mCode = code;
|
||||
instruction.mCodeExplicit = codeExplicit;
|
||||
|
||||
mInstructions.insert(std::make_pair(keywordIndex, instruction));
|
||||
mInstructions.emplace(keywordIndex, std::move(instruction));
|
||||
}
|
||||
|
||||
void Extensions::generateFunctionCode(int keyword, std::vector<Interpreter::Type_Code>& code, Literals& literals,
|
||||
|
@ -80,7 +80,7 @@ namespace Compiler
|
||||
/// \param explicitReference In: has explicit reference; Out: set to false, if
|
||||
/// explicit reference is not available for this instruction.
|
||||
|
||||
void registerFunction(const std::string& keyword, ScriptReturn returnType, const ScriptArgs& argumentType,
|
||||
void registerFunction(std::string_view keyword, ScriptReturn returnType, std::string_view argumentType,
|
||||
int code, int codeExplicit = -1);
|
||||
///< Register a custom function
|
||||
/// - keyword must be all lower case.
|
||||
@ -89,7 +89,7 @@ namespace Compiler
|
||||
/// \note Currently only segment 3 and segment 5 opcodes are supported.
|
||||
|
||||
void registerInstruction(
|
||||
const std::string& keyword, const ScriptArgs& argumentType, int code, int codeExplicit = -1);
|
||||
std::string_view keyword, std::string_view argumentType, int code, int codeExplicit = -1);
|
||||
///< Register a custom instruction
|
||||
/// - keyword must be all lower case.
|
||||
/// - keyword must be unique
|
||||
|
Loading…
Reference in New Issue
Block a user