Ejemplo n.º 1
0
Archivo: lncky.c Proyecto: mjpost/cky
static vindex
read_terms(FILE *fp, si_t si)
{
  size_t i = 0, nsize = 10;
  vindex v = make_vindex(nsize);
  si_index term;

  while ((term = read_cat(fp, si))) {
    if (i >= nsize) {
      nsize *= 2;
      vindex_resize(v, nsize);
    }
    assert(i < nsize);
    vindex_ref(v,i++) = term;
  }
 
  if (i > 0) {
    v->n = i;
    vindex_resize(v, v->n);
    return (v);
  }
  else {
    vindex_free(v);
    return(NULL);
  }
}
Ejemplo n.º 2
0
static vindex
read_terms(int weighted_yields_flag, FILE *fp, si_t si, float *yieldweight)
{
  *yieldweight = 1.0;
  if (weighted_yields_flag) {
    int result = fscanf(fp, "%g", yieldweight);

    if (result == EOF) 
      return(NULL);
    if (result != 1) {
      fprintf(stderr, "Error in read_terms in expected_counts.c: "
	      "Unable to read a weight for yield\n");
      exit(EXIT_FAILURE);
    }
  }
  
  {
    size_t i = 0, nsize = 10;
    vindex v = make_vindex(nsize);
    si_index term;

    while ((term = read_cat(fp, si))) {
      if (i >= nsize) {
	nsize *= 2;
	vindex_resize(v, nsize);
      }
      assert(i < nsize);
      vindex_ref(v,i++) = term;
    }
    
    if (i > 0) {
      v->n = i;
      vindex_resize(v, v->n);
      return (v);
    }
    else {
      vindex_free(v);
      return(NULL);
    }
  }
}