Оптимизируем работу со строками через параметры функции

This commit is contained in:
2022-11-04 16:47:46 +03:00
parent 72c8321695
commit a7f49cdd5b
2 changed files with 5 additions and 5 deletions

View File

@@ -8,7 +8,7 @@ class ExprAST {
virtual ~ExprAST(); virtual ~ExprAST();
virtual IoTValue *exec(); virtual IoTValue *exec();
virtual int setValue(IoTValue *val, bool generateEvent); // ret 0 - установка значения не поддерживается наследником virtual int setValue(IoTValue *val, bool generateEvent); // ret 0 - установка значения не поддерживается наследником
virtual bool hasEventIdName(String eventIdName); virtual bool hasEventIdName(const String& eventIdName);
}; };
class IoTScenario { class IoTScenario {
@@ -93,7 +93,7 @@ class IoTScenario {
public: public:
void loadScenario(String fileName); void loadScenario(String fileName);
void exec(String eventIdName); void exec(const String& eventIdName);
IoTScenario(); IoTScenario();
~IoTScenario(); ~IoTScenario();

View File

@@ -37,7 +37,7 @@ enum Token {
ExprAST::~ExprAST() {} ExprAST::~ExprAST() {}
IoTValue *ExprAST::exec() { return nullptr; } IoTValue *ExprAST::exec() { return nullptr; }
int ExprAST::setValue(IoTValue *val, bool generateEvent) { return 0; } // 0 - установка значения не поддерживается наследником int ExprAST::setValue(IoTValue *val, bool generateEvent) { return 0; } // 0 - установка значения не поддерживается наследником
bool ExprAST::hasEventIdName(String eventIdName) { return false; } // по умолчанию все узлы не связаны с ИД события, для которого выполняется сценарий bool ExprAST::hasEventIdName(const String& eventIdName) { return false; } // по умолчанию все узлы не связаны с ИД события, для которого выполняется сценарий
// struct IoTValue zeroIotVal; // struct IoTValue zeroIotVal;
/// NumberExprAST - Класс узла выражения для числовых литералов (Например, "1.0"). /// NumberExprAST - Класс узла выражения для числовых литералов (Например, "1.0").
@@ -543,7 +543,7 @@ class IfExprAST : public ExprAST {
_IDNames = ""; _IDNames = "";
} }
bool hasEventIdName(String eventIdName) { bool hasEventIdName(const String& eventIdName) {
// Serial.printf("Call from BinaryExprAST _IDNames:%s\n", _IDNames.c_str()); // Serial.printf("Call from BinaryExprAST _IDNames:%s\n", _IDNames.c_str());
return _IDNames.indexOf(" " + eventIdName + " ") >= 0; // определяем встречался ли ИД, для которого исполняем сценарий в выражении IF return _IDNames.indexOf(" " + eventIdName + " ") >= 0; // определяем встречался ли ИД, для которого исполняем сценарий в выражении IF
} }
@@ -1026,7 +1026,7 @@ void IoTScenario::loadScenario(String fileName) { // подготавливае
} }
} }
void IoTScenario::exec(String eventIdName) { // посимвольно считываем и сразу интерпретируем сценарий в дерево AST void IoTScenario::exec(const String& eventIdName) { // посимвольно считываем и сразу интерпретируем сценарий в дерево AST
if (mode == 0 && !file) return; if (mode == 0 && !file) return;
LastChar = 0; LastChar = 0;