… | |
… | |
1188 | CALL_CALL ("cf::_log_backtrace", G_VOID); |
1188 | CALL_CALL ("cf::_log_backtrace", G_VOID); |
1189 | CALL_END; |
1189 | CALL_END; |
1190 | #endif |
1190 | #endif |
1191 | } |
1191 | } |
1192 | |
1192 | |
|
|
1193 | bool |
1193 | bool is_match_expr (const char *expr) |
1194 | is_match_expr (const char *expr) |
1194 | { |
1195 | { |
1195 | return !strncmp (expr, "match ", sizeof ("match ") - 1); |
1196 | return !strncmp (expr, "match ", sizeof ("match ") - 1); |
1196 | } |
1197 | } |
1197 | |
1198 | |
|
|
1199 | bool |
1198 | bool match (const char *expr, object *ob, object *self, object *source, object *originator) |
1200 | match (const char *expr, object *ob, object *self, object *source, object *originator) |
1199 | { |
1201 | { |
1200 | bool matched; |
1202 | if (!strncmp (expr, "match ", sizeof ("match ") - 1)) |
|
|
1203 | expr += sizeof ("match ") - 1; |
1201 | |
1204 | |
1202 | CALL_BEGIN (5); |
1205 | CALL_BEGIN (5); |
1203 | CALL_ARG (expr); |
1206 | CALL_ARG (expr); |
1204 | CALL_ARG (ob); |
1207 | CALL_ARG (ob); |
1205 | CALL_ARG (self); |
1208 | CALL_ARG (self); |
1206 | CALL_ARG (source); |
1209 | CALL_ARG (source); |
1207 | CALL_ARG (originator); |
1210 | CALL_ARG (originator); |
1208 | CALL_CALL ("cf::match::match", G_SCALAR); |
1211 | CALL_CALL ("cf::match::match", G_SCALAR); |
1209 | |
1212 | |
1210 | matched = count && SvTRUE (POPs); |
1213 | bool matched = count && SvTRUE (POPs); |
1211 | |
1214 | |
1212 | CALL_END; |
1215 | CALL_END; |
1213 | |
1216 | |
1214 | return matched; |
1217 | return matched; |
1215 | } |
1218 | } |