Exemple #1
0
void script_parse_op_free (script_op_t *op)
{
  if (!op) return;
  switch (op->type)
    {
      case SCRIPT_OP_TYPE_EXPRESSION:
        script_parse_exp_free (op->data.exp);
        break;

      case SCRIPT_OP_TYPE_OP_BLOCK:
        script_parse_op_list_free (op->data.list);
        break;

      case SCRIPT_OP_TYPE_IF:
      case SCRIPT_OP_TYPE_WHILE:
      case SCRIPT_OP_TYPE_DO_WHILE:
      case SCRIPT_OP_TYPE_FOR:
        script_parse_exp_free (op->data.cond_op.cond);
        script_parse_op_free  (op->data.cond_op.op1);
        script_parse_op_free  (op->data.cond_op.op2);
        break;

      case SCRIPT_OP_TYPE_RETURN:
        if (op->data.exp) script_parse_exp_free (op->data.exp);
        break;

      case SCRIPT_OP_TYPE_FAIL:
      case SCRIPT_OP_TYPE_BREAK:
      case SCRIPT_OP_TYPE_CONTINUE:
        break;
    }
  script_debug_remove_element (op);
  free (op);
}
Exemple #2
0
static void script_parse_op_list_free (ply_list_t *op_list)
{
  ply_list_node_t *node;

  for (node = ply_list_get_first_node (op_list);
       node;
       node = ply_list_get_next_node (op_list, node))
    {
      script_op_t *op = ply_list_node_get_data (node);
      script_parse_op_free (op);
    }
  ply_list_free (op_list);
  return;
}
Exemple #3
0
static void
stop_animation (ply_boot_splash_plugin_t *plugin)
{
  assert (plugin != NULL);
  assert (plugin->loop != NULL);

  if (!plugin->is_animating)
    return;
  plugin->is_animating = false;

  stop_script_animation (plugin);

  script_parse_op_free (plugin->script_main_op);
}
void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data)
{
        script_parse_op_free (data->script_main_op);
        script_obj_unref (data->script_refresh_func);
        script_obj_unref (data->script_boot_progress_func);
        script_obj_unref (data->script_root_mounted_func);
        script_obj_unref (data->script_keyboard_input_func);
        script_obj_unref (data->script_update_status_func);
        script_obj_unref (data->script_display_normal_func);
        script_obj_unref (data->script_display_password_func);
        script_obj_unref (data->script_display_question_func);
        script_obj_unref (data->script_display_message_func);
        script_obj_unref (data->script_hide_message_func);
        script_obj_unref (data->script_quit_func);
        free (data);
}
Exemple #5
0
static void script_parse_exp_free (script_exp_t *exp)
{
  if (!exp) return;
  switch (exp->type)
    {
      case SCRIPT_EXP_TYPE_PLUS:
      case SCRIPT_EXP_TYPE_MINUS:
      case SCRIPT_EXP_TYPE_MUL:
      case SCRIPT_EXP_TYPE_DIV:
      case SCRIPT_EXP_TYPE_MOD:
      case SCRIPT_EXP_TYPE_EQ:
      case SCRIPT_EXP_TYPE_NE:
      case SCRIPT_EXP_TYPE_GT:
      case SCRIPT_EXP_TYPE_GE:
      case SCRIPT_EXP_TYPE_LT:
      case SCRIPT_EXP_TYPE_LE:
      case SCRIPT_EXP_TYPE_AND:
      case SCRIPT_EXP_TYPE_OR:
      case SCRIPT_EXP_TYPE_EXTEND:
      case SCRIPT_EXP_TYPE_ASSIGN:
      case SCRIPT_EXP_TYPE_ASSIGN_PLUS:
      case SCRIPT_EXP_TYPE_ASSIGN_MINUS:
      case SCRIPT_EXP_TYPE_ASSIGN_MUL:
      case SCRIPT_EXP_TYPE_ASSIGN_DIV:
      case SCRIPT_EXP_TYPE_ASSIGN_MOD:
      case SCRIPT_EXP_TYPE_ASSIGN_EXTEND:
      case SCRIPT_EXP_TYPE_HASH:
        script_parse_exp_free (exp->data.dual.sub_a);
        script_parse_exp_free (exp->data.dual.sub_b);
        break;

      case SCRIPT_EXP_TYPE_NOT:
      case SCRIPT_EXP_TYPE_POS:
      case SCRIPT_EXP_TYPE_NEG:
      case SCRIPT_EXP_TYPE_PRE_INC:
      case SCRIPT_EXP_TYPE_PRE_DEC:
      case SCRIPT_EXP_TYPE_POST_INC:
      case SCRIPT_EXP_TYPE_POST_DEC:
        script_parse_exp_free (exp->data.sub);
        break;

      case SCRIPT_EXP_TYPE_TERM_NUMBER:
      case SCRIPT_EXP_TYPE_TERM_NULL:
      case SCRIPT_EXP_TYPE_TERM_LOCAL:
      case SCRIPT_EXP_TYPE_TERM_GLOBAL:
      case SCRIPT_EXP_TYPE_TERM_THIS:
        break;
      case SCRIPT_EXP_TYPE_TERM_SET:
        {
          ply_list_node_t *node;
          for (node = ply_list_get_first_node (exp->data.parameters);
               node;
               node = ply_list_get_next_node (exp->data.parameters, node))
            {
              script_exp_t *sub = ply_list_node_get_data (node);
              script_parse_exp_free (sub);
            }
          ply_list_free (exp->data.parameters);
          break;
        }
      case SCRIPT_EXP_TYPE_FUNCTION_EXE:
        {
          ply_list_node_t *node;
          for (node = ply_list_get_first_node (exp->data.function_exe.parameters);
               node;
               node = ply_list_get_next_node (exp->data.function_exe.parameters, node))
            {
              script_exp_t *sub = ply_list_node_get_data (node);
              script_parse_exp_free (sub);
            }
          ply_list_free (exp->data.function_exe.parameters);
          script_parse_exp_free (exp->data.function_exe.name);
          break;
        }
      case SCRIPT_EXP_TYPE_FUNCTION_DEF:   /* FIXME merge the frees with one from op_free */
        {
          if (exp->data.function_def->type == SCRIPT_FUNCTION_TYPE_SCRIPT) 
            script_parse_op_free (exp->data.function_def->data.script);
          ply_list_node_t *node;
          for (node = ply_list_get_first_node (exp->data.function_def->parameters);
               node;
               node = ply_list_get_next_node (exp->data.function_def->parameters, node))
            {
              char *arg = ply_list_node_get_data (node);
              free (arg);
            }
          ply_list_free (exp->data.function_def->parameters);
          free (exp->data.function_def);
          break;
        }

      case SCRIPT_EXP_TYPE_TERM_STRING:
      case SCRIPT_EXP_TYPE_TERM_VAR:
        free (exp->data.string);
        break;
    }
  script_debug_remove_element (exp);
  free (exp);
}
Exemple #6
0
void script_lib_math_destroy (script_lib_math_data_t *data)
{
  script_parse_op_free (data->script_main_op);
  free (data);
}