From 8d30e71e8bc60f6ff4e090a85980430f5577d987 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 24 Mar 2014 10:58:48 -0400 Subject: [PATCH] edje_cc prevents sequence users from failing to sequence --- src/bin/edje/edje_cc_handlers.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index ccf8928972..270210315f 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -9121,6 +9121,15 @@ st_collections_group_parts_part_description_params_choice(void) _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_CHOICE); } +static void +_program_sequence_check(void) +{ + if (sequencing != current_program) return; + ERR("parse error %s:%i. cannot set sequence parent program attributes within sequence block", + file_in, line - 1); + exit(-1); +} + static void _program_after(const char *name) { @@ -9245,6 +9254,8 @@ st_collections_group_programs_program_name(void) check_arg_count(1); + _program_sequence_check(); + pc = eina_list_data_get(eina_list_last(edje_collections)); if (current_program->name) free((void *)current_program->name); current_program->name = parse_str(0); @@ -9281,6 +9292,8 @@ st_collections_group_programs_program_signal(void) check_arg_count(1); + _program_sequence_check(); + pc = eina_list_data_get(eina_list_last(edje_collections)); _edje_program_remove(pc, current_program); @@ -9307,6 +9320,8 @@ st_collections_group_programs_program_source(void) check_arg_count(1); + _program_sequence_check(); + pc = eina_list_data_get(eina_list_last(edje_collections)); _edje_program_remove(pc, current_program); @@ -9331,6 +9346,8 @@ st_collections_group_programs_program_filter(void) { check_min_arg_count(1); + _program_sequence_check(); + if(is_param(1)) { current_program->filter.part = parse_str(0); current_program->filter.state = parse_str(1); @@ -9355,6 +9372,8 @@ st_collections_group_programs_program_in(void) { check_arg_count(2); + _program_sequence_check(); + current_program->in.from = parse_float_range(0, 0.0, 999999999.0); current_program->in.range = parse_float_range(1, 0.0, 999999999.0); } @@ -9654,6 +9673,8 @@ st_collections_group_programs_program_transition(void) { check_min_arg_count(2); + _program_sequence_check(); + current_program->tween.mode = parse_enum(0, // short names "LIN", EDJE_TWEEN_MODE_LINEAR, @@ -9824,6 +9845,8 @@ st_collections_group_programs_program_target(void) { check_arg_count(1); + _program_sequence_check(); + _program_target_add(parse_str(0)); } @@ -9845,6 +9868,10 @@ st_collections_group_programs_program_targets(void) { int n, argc; + check_min_arg_count(1); + + _program_sequence_check(); + for (n = 0, argc = get_arg_count(); n < argc; n++) _program_target_add(parse_str(n)); } @@ -9867,6 +9894,7 @@ st_collections_group_programs_program_after(void) char *name; check_arg_count(1); + _program_sequence_check(); name = parse_str(0); _program_after(name); free(name); @@ -9890,6 +9918,8 @@ st_collections_group_programs_program_api(void) { check_min_arg_count(1); + _program_sequence_check(); + current_program->api.name = parse_str(0); if (is_param(1)) @@ -9975,6 +10005,8 @@ ob_collections_group_programs_program_script(void) Edje_Part_Collection *pc; Code *cd; + _program_sequence_check(); + pc = eina_list_data_get(eina_list_last(edje_collections)); cd = eina_list_data_get(eina_list_last(codes));