diff options
Diffstat (limited to 'src/analysis/scan/grammar.y')
-rw-r--r-- | src/analysis/scan/grammar.y | 135 |
1 files changed, 43 insertions, 92 deletions
diff --git a/src/analysis/scan/grammar.y b/src/analysis/scan/grammar.y index 8298855..2d985a7 100644 --- a/src/analysis/scan/grammar.y +++ b/src/analysis/scan/grammar.y @@ -1356,15 +1356,17 @@ relational_expr : cexpression "<" cexpression pattern_set : "them" { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, NULL, &__count); - $$ = g_scan_set_match_counter_new(__patterns, __count); + if (__patterns == NULL) + { + raise_error(_("No pattern found for \"them\"")); + YYERROR; + } - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_set_match_counter_new_shared(__patterns, __count); free(__patterns); @@ -1377,7 +1379,7 @@ relational_expr : cexpression "<" cexpression pattern_set_items : BYTES_ID { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1397,20 +1399,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_set_match_counter_new((GSearchPattern *[]) { __pat }, 1); - - g_object_unref(G_OBJECT(__pat)); + $$ = g_scan_set_match_counter_new_shared((const GSearchPattern *[]) { __pat }, 1); } | BYTES_FUZZY_ID { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1426,17 +1425,14 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_set_match_counter_new(__patterns, __count); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_set_match_counter_new_shared(__patterns, __count); free(__patterns); } | pattern_set_items "," BYTES_ID { - GSearchPattern *__pat; + const GSearchPattern *__pat; GScanSetMatchCounter *__counter; __pat = g_scan_rule_get_local_variable(*built_rule, $3.data); @@ -1458,9 +1454,8 @@ relational_expr : cexpression "<" cexpression } __counter = G_SCAN_SET_MATCH_COUNTER($1); - g_scan_set_match_counter_add_extra_patterns(__counter, (GSearchPattern *[]) { __pat }, 1); - - g_object_unref(G_OBJECT(__pat)); + g_scan_set_match_counter_add_extra_shared_patterns(__counter, + (const GSearchPattern *[]) { __pat }, 1); $$ = $1; @@ -1468,13 +1463,12 @@ relational_expr : cexpression "<" cexpression | pattern_set_items "," BYTES_FUZZY_ID { size_t __count; - GSearchPattern **__patterns; + const GSearchPattern **__patterns; GScanSetMatchCounter *__counter; - size_t __i; __patterns = g_scan_rule_get_local_variables(*built_rule, $3.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1491,10 +1485,7 @@ relational_expr : cexpression "<" cexpression } __counter = G_SCAN_SET_MATCH_COUNTER($1); - g_scan_set_match_counter_add_extra_patterns(__counter, __patterns, __count); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + g_scan_set_match_counter_add_extra_shared_patterns(__counter, __patterns, __count); free(__patterns); @@ -1567,7 +1558,7 @@ relational_expr : cexpression "<" cexpression _pattern_handler : BYTES_ID { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1587,22 +1578,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - else - { - $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_RAW); - g_object_unref(G_OBJECT(__pat)); - } + $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_RAW); } | BYTES_FUZZY_ID { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1618,17 +1604,14 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_RAW); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_RAW); free(__patterns); } | BYTES_ID_COUNTER { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1648,22 +1631,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - else - { - $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_COUNTER); - g_object_unref(G_OBJECT(__pat)); - } + $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_COUNTER); } | BYTES_FUZZY_ID_COUNTER { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1679,17 +1657,14 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_COUNTER); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_COUNTER); free(__patterns); } | BYTES_ID_START { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1709,22 +1684,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - else - { - $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_START); - g_object_unref(G_OBJECT(__pat)); - } + $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_START); } | BYTES_FUZZY_ID_START { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1740,17 +1710,14 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_START); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_START); free(__patterns); } | BYTES_ID_LENGTH { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1770,22 +1737,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - else - { - $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_LENGTH); - g_object_unref(G_OBJECT(__pat)); - } + $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_LENGTH); } | BYTES_FUZZY_ID_LENGTH { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1801,17 +1763,14 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_LENGTH); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_LENGTH); free(__patterns); } | BYTES_ID_END { - GSearchPattern *__pat; + const GSearchPattern *__pat; __pat = g_scan_rule_get_local_variable(*built_rule, $1.data); @@ -1831,22 +1790,17 @@ relational_expr : cexpression "<" cexpression YYERROR; } - else - { - $$ = g_scan_pattern_handler_new((GSearchPattern *[]) { __pat }, 1, SHT_END); - g_object_unref(G_OBJECT(__pat)); - } + $$ = g_scan_pattern_handler_new_shared((const GSearchPattern *[]) { __pat }, 1, SHT_END); } | BYTES_FUZZY_ID_END { size_t __count; - GSearchPattern **__patterns; - size_t __i; + const GSearchPattern **__patterns; __patterns = g_scan_rule_get_local_variables(*built_rule, $1.data, &__count); - if (__count == 0) + if (__patterns == NULL) { char *_msg; int _ret; @@ -1862,10 +1816,7 @@ relational_expr : cexpression "<" cexpression YYERROR; } - $$ = g_scan_pattern_handler_new(__patterns, __count, SHT_END); - - for (__i = 0; __i < __count; __i++) - g_object_unref(G_OBJECT(__patterns[__i])); + $$ = g_scan_pattern_handler_new_shared(__patterns, __count, SHT_END); free(__patterns); |