int tail_write (const Tail *t, FILE *file) { TrieIndex i; if (!file_write_int32 (file, TAIL_SIGNATURE) || !file_write_int32 (file, t->first_free) || !file_write_int32 (file, t->num_tails)) { return -1; } for (i = 0; i < t->num_tails; i++) { int16 length; if (!file_write_int32 (file, t->tails[i].next_free) || !file_write_int32 (file, t->tails[i].data)) { return -1; } length = t->tails[i].suffix ? strlen ((const char *)t->tails[i].suffix) : 0; if (!file_write_int16 (file, length)) return -1; if (length > 0 && !file_write_chars (file, (char *)t->tails[i].suffix, length)) { return -1; } } return 0; }
/** * @brief Write double-array data * * @param d : the double-array data * @param file : the file to write to * * @return 0 on success, non-zero on failure * * Write double-array data to the given @a file, starting from the current * file pointer. On return, the file pointer is left after the double-array * data block. */ int da_fwrite (const DArray *d, FILE *file) { TrieIndex i; for (i = 0; i < d->num_cells; i++) { if (!file_write_int32 (file, d->cells[i].base) || !file_write_int32 (file, d->cells[i].check)) { return -1; } } return 0; }
int alpha_map_fwrite_bin (const AlphaMap *alpha_map, FILE *file) { AlphaRange *range; if (!file_write_int32 (file, ALPHAMAP_SIGNATURE) || !file_write_int32 (file, alpha_map_get_total_ranges (alpha_map))) { return -1; } for (range = alpha_map->first_range; range; range = range->next) { if (!file_write_int32 (file, range->begin) || !file_write_int32 (file, range->end)) { return -1; } } return 0; }