static void savenode (vpnode *node, int bsize, FILE *f) { char hoja = node->hoja ? '1' : '0'; putc (hoja,f); if (node->hoja) { fwrite (&node->u.hoja.size,sizeof(int),1,f); savebucket (node->u.hoja.bucket,node->u.hoja.size,f); } else { fwrite(&node->u.interno.query,sizeof(int), 1, f); fwrite (&node->u.interno.dist, sizeof(Tdist),1,f); savenode(node->u.interno.child1,bsize,f); savenode(node->u.interno.child2,bsize,f); } }
void savevarnode(varnode *head, FILE *fp) { while (head) { fwrite(head, sizeof(varnode), 1, fp); savenode(head->head, fp); head = head->next; } }
void saveIndex (Index S, char *fname) { FILE *f = fopen(fname,"w"); vpt *tree = (vpt*)S; fwrite (tree->descr,strlen(tree->descr)+1,1,f); fwrite (&tree->bsize,sizeof(int),1,f); savenode (&tree->node,tree->bsize,f); fclose (f); }