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); } }
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); } } }