Exemplo n.º 1
0
//////////////////////////////////////////////////////////////////////////////////
// If variable "var" already instantiated, returns -1. Otherwise,
// instantiates the unification variable "var" to category "cat" and value "val". 
// Returns 1 or -1 in case of error, 0 otherwise.
int unif_instantiate(unif_vars_T* UNIF_VARS,unichar* var, l_category_T* cat, unichar* val) {
  int i;
  int v;
  //Check if not yet instantiated.
  if (unif_instantiated(UNIF_VARS,var))
      return -1;
 
  i = UNIF_VARS->no_vars;

  //Category
  UNIF_VARS->vars[i].cat = cat;

  //value
  v = is_valid_val(cat,val);
  if (v == -1) {
    error("Instantiation impossible: %S is an invalid value in category %S.\n",val,cat->name);
    return 1;    
  }
  UNIF_VARS->vars[i].val = v;

  //id
  UNIF_VARS->vars[i].id = u_strdup(var);

  UNIF_VARS->no_vars++;
  return 0;
}
Exemplo n.º 2
0
//////////////////////////////////////////////////////////////////////////////////
// If variable "var" already instantiated, returns -1. Otherwise,
// instantiates the unification variable "var" to category "cat" and value "val". 
// Returns 1 or -1 in case of error, 0 otherwise.
int unif_instantiate(MultiFlex_ctx* p_multiFlex_ctx,unichar* var, l_category_T* cat, unichar* val) {
  int i;
  int v;
  //Check if not yet instantiated.
  if (unif_instantiated(p_multiFlex_ctx,var))
      return -1;
 
  i = (p_multiFlex_ctx->UNIF_VARS).no_vars;

  //Category
  (p_multiFlex_ctx->UNIF_VARS).vars[i].cat = cat;

  //value
  v = is_valid_val(cat,val);
  if (v == -1) {
    error("Instantiation impossible: %S is an invalid value in category %S.\n",val,cat->name);
    return 1;    
  }
  (p_multiFlex_ctx->UNIF_VARS).vars[i].val = v;

  //id
  (p_multiFlex_ctx->UNIF_VARS).vars[i].id = u_strdup(var);

  (p_multiFlex_ctx->UNIF_VARS).no_vars++;
  return 0;
}
Exemplo n.º 3
0
//////////////////////////////////////////////////////////////////////////////////
// If variable "var" already instantiated, returns -1. Otherwise,
// instantiates the unification variable "var" to category "cat" and value whole index in the domain of "cat" is "val". 
// Returns 1 or -1 in case of error, 0 otherwise.
int unif_instantiate_index(unif_vars_T* UNIF_VARS,unichar* var, l_category_T* cat, int val) {
  //Check if not yet instantiated.
  if (unif_instantiated(UNIF_VARS,var))
      return -1;
  
  //Check if the value is in the domain of "cat"
  if (cat->no_values <= val)
    return -1;
 
  int i = UNIF_VARS->no_vars;
  //Category
  UNIF_VARS->vars[i].cat = cat;
  //Value
  UNIF_VARS->vars[i].val = val;
  //Variable's id
  UNIF_VARS->vars[i].id = u_strdup(var);

  UNIF_VARS->no_vars++;
  return 0;

}
Exemplo n.º 4
0
//////////////////////////////////////////////////////////////////////////////////
// If variable "var" already instantiated, returns -1. Otherwise,
// instantiates the unification variable "var" to category "cat" and value whole index in the domain of "cat" is "val". 
// Returns 1 or -1 in case of error, 0 otherwise.
int unif_instantiate_index(MultiFlex_ctx* p_multiFlex_ctx,unichar* var, l_category_T* cat, int val) {
  //Check if not yet instantiated.
  if (unif_instantiated(p_multiFlex_ctx,var))
      return -1;
  
  //Check if the value is in the domain of "cat"
  if (cat->no_values <= val)
    return -1;
 
  int i = (p_multiFlex_ctx->UNIF_VARS).no_vars;
  //Category
  (p_multiFlex_ctx->UNIF_VARS).vars[i].cat = cat;
  //Value
  (p_multiFlex_ctx->UNIF_VARS).vars[i].val = val;
  //Variable's id
  (p_multiFlex_ctx->UNIF_VARS).vars[i].id = u_strdup(var);

  (p_multiFlex_ctx->UNIF_VARS).no_vars++;
  return 0;

}