コード例 #1
0
ファイル: ap_abstract1.c プロジェクト: nberth/apron4opam
bool ap_abstract1_check_env_array(ap_funid_t funid,ap_manager_t* man,
				  ap_abstract1_t* tab, size_t size)
{
  bool res;
  if (size==0){
    ap_manager_raise_exception(man,
			       AP_EXC_INVALID_ARGUMENT,
			       funid,"array of abstract values of size 0");
    res = false;
  }
  else {
    size_t i;
    ap_environment_t* env0 = tab[0].env;
    for (i=1;i<size; i++){
      if (!ap_environment_is_eq(env0,tab[i].env)){
	res = false;
	break;

	char str[160];
	snprintf(str,159,"The %luth abstract value of the array has not \
the same environement as the 0th abstract value\
",(unsigned long)i);
	ap_manager_raise_exception(man,
				   AP_EXC_INVALID_ARGUMENT,
				   funid,str);
	return false;
      }
    }
    res = true;
  }
コード例 #2
0
ファイル: shad.c プロジェクト: mihasighi/celia-tools
void
sh_push (sh_formula_t* f, bool sign)
{
  sh_formula_t** sh = (sign == true) ? &sh_pos : &sh_neg;
  if (!f)
    {
      fprintf (stderr, "Sh_push: NULL formula of sign %d pushed.\n", sign);
      return;
    }

  if (!(*sh))
    {
      (*sh) = f;
    }
  else if (ap_environment_is_eq ((*sh)->env, f->env))
    {
      /* TODO: check f->dw */
      sh_push2 ((*sh), f); /* free f->form */
      ap_environment_free (f->env);
      free (f);
    }
  else
    fprintf (stderr, "Sh_push: formula with different environments.\n");
  return;
}
コード例 #3
0
ファイル: ap_abstract1.c プロジェクト: nberth/apron4opam
bool ap_abstract1_check_env2(ap_funid_t funid,
			     ap_manager_t* man,
			     ap_abstract1_t* a1, ap_abstract1_t* a2)
{
  if (ap_environment_is_eq(a1->env,a2->env))
    return true;
  else {
    ap_manager_raise_exception(man,
			       AP_EXC_INVALID_ARGUMENT,
			       funid,
			       "The two abstract values have different environments");
    return false;
  }
}