Lines Matching refs:condition

152 static int CompareValue(const char *condition, const char *value)

154 if (strcmp(condition, "*") == 0) {
157 if (strcmp(condition, value) == 0) {
160 char *tmp = strstr(condition, "*");
161 if (tmp != NULL && (strncmp(value, condition, tmp - condition) == 0)) {
167 static int ComputeSubCondition(const LogicCalculator *calculator, LogicData *data, const char *condition)
174 char *subStr = strstr(condition + data->startIndex, "=");
175 if (subStr != NULL && ((uint32_t)(subStr - condition) > data->endIndex)) {
176 if (strncmp(condition + data->startIndex, calculator->triggerContent, triggerContentSize) == 0) {
181 int ret = GetValueFromContent(condition + data->startIndex,
184 ret = GetValueFromContent(condition + data->startIndex, data->endIndex - data->startIndex,
219 int ComputeCondition(LogicCalculator *calculator, const char *condition)
221 PARAM_CHECK(calculator != NULL && condition != NULL, return -1, "Invalid calculator");
224 size_t conditionLen = strlen(condition);
230 if (condition[currIndex] == '|' || condition[currIndex] == '&') {
236 ret = ComputeSubCondition(calculator, &data1, condition);
238 if (condition[currIndex] == '|' && ret == 1) {
240 } else if ((condition[currIndex] == '|' || ret == 1) &&
241 (ComputeSubCondition(calculator, &data2, condition) == 1)) {
247 } else if (isspace(condition[currIndex])) {
264 data1.endIndex = strlen(condition);
269 return ComputeSubCondition(calculator, &data1, condition);
272 int ConvertInfixToPrefix(const char *condition, char *prefix, uint32_t prefixLen)
274 PARAM_CHECK(condition != NULL && prefix != NULL, return -1, "Invalid condition");
279 size_t conditionLen = strlen(condition);
284 if (condition[curr] == ')') {
292 } else if (condition[curr] == '|') {
293 PARAM_CHECK(condition[curr + 1] == '|',
294 CalculatorFree(&calculator); return -1, "Invalid condition");
299 } else if (condition[curr] == '&') {
300 PARAM_CHECK(condition[curr + 1] == '&',
301 CalculatorFree(&calculator); return -1, "Invalid condition");
303 CalculatorPushChar(&calculator, condition[curr]);
305 } else if (condition[curr] == '(') {
306 CalculatorPushChar(&calculator, condition[curr]);
308 prefix[prefixIndex++] = condition[curr];
327 int CheckMatchSubCondition(const char *condition, const char *input, int length)
329 PARAM_CHECK(condition != NULL, return 0, "Invalid condition");
331 const char *tmp = strstr(condition, input);
333 PARAM_LOGV("CheckMatchSubCondition Condition: '%s' content: '%s' length %d", condition, input, length);
337 // for condition: parameter = 1
338 if (tmp == condition) {
341 // for condition: parameter1 = 1 && parameter2 = 1