int crfsuite_instance_append(crfsuite_instance_t* inst, const crfsuite_item_t* item, int label) { if (inst->cap_items <= inst->num_items) { inst->cap_items = (inst->cap_items + 1) * 2; inst->items = (crfsuite_item_t*)realloc(inst->items, sizeof(crfsuite_item_t) * inst->cap_items); inst->labels = (int*)realloc(inst->labels, sizeof(int) * inst->cap_items); } crfsuite_item_copy(&inst->items[inst->num_items], item); inst->labels[inst->num_items] = label; ++inst->num_items; return 0; }
void crfsuite_instance_copy(crfsuite_instance_t* dst, const crfsuite_instance_t* src) { int i; dst->num_items = src->num_items; dst->cap_items = src->cap_items; dst->items = (crfsuite_item_t*)calloc(dst->num_items, sizeof(crfsuite_item_t)); dst->labels = (int*)calloc(dst->num_items, sizeof(int)); dst->weight = src->weight; dst->group = src->group; for (i = 0;i < dst->num_items;++i) { crfsuite_item_copy(&dst->items[i], &src->items[i]); dst->labels[i] = src->labels[i]; } }
int crfsuite_instance_append(crfsuite_instance_t* inst, const crfsuite_item_t* item, const crfsuite_fuzzy_labels_t* labels, int lid) { if (inst->cap_items <= inst->num_items) { inst->cap_items = (inst->cap_items + 1) * 2; inst->items = (crfsuite_item_t*)realloc(inst->items, sizeof(crfsuite_item_t) * inst->cap_items); inst->labels = (int*)realloc(inst->labels, sizeof(int) * inst->cap_items); inst->fuzzy = (crfsuite_fuzzy_labels_t*)realloc(inst->fuzzy, sizeof(crfsuite_fuzzy_labels_t) * inst->cap_items); } crfsuite_item_copy(&inst->items[inst->num_items], item); if (labels) { crfsuite_fuzzy_labels_copy(&inst->fuzzy[inst->num_items], labels); } else { crfsuite_fuzzy_labels_init(&inst->fuzzy[inst->num_items]); } inst->labels[inst->num_items] = lid; ++inst->num_items; return 0; }