int chm_dump(cmph_t *mphf, FILE *fd) { char *buf = NULL; cmph_uint32 buflen; cmph_uint32 two = 2; //number of hash functions chm_data_t *data = (chm_data_t *)mphf->data; register size_t nbytes; __cmph_dump(mphf, fd); nbytes = fwrite(&two, sizeof(cmph_uint32), (size_t)1, fd); hash_state_dump(data->hashes[0], &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); hash_state_dump(data->hashes[1], &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); nbytes = fwrite(&(data->n), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(data->g, sizeof(cmph_uint32)*data->n, (size_t)1, fd); /* #ifdef DEBUG fprintf(stderr, "G: "); for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", data->g[i]); fprintf(stderr, "\n"); #endif*/ return 1; }
int fch_dump(cmph_t *mphf, FILE *fd) { char *buf = NULL; cmph_uint32 buflen; fch_data_t *data = (fch_data_t *)mphf->data; __cmph_dump(mphf, fd); hash_state_dump(data->h1, &buf, &buflen); //DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); hash_state_dump(data->h2, &buf, &buflen); //DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd); fwrite(&(data->c), sizeof(double), (size_t)1, fd); fwrite(&(data->b), sizeof(cmph_uint32), (size_t)1, fd); fwrite(&(data->p1), sizeof(double), (size_t)1, fd); fwrite(&(data->p2), sizeof(double), (size_t)1, fd); fwrite(data->g, sizeof(cmph_uint32)*(data->b), (size_t)1, fd); #ifdef DEBUG cmph_uint32 i; fprintf(stderr, "G: "); for (i = 0; i < data->b; ++i) fprintf(stderr, "%u ", data->g[i]); fprintf(stderr, "\n"); #endif return 1; }
int chd_ph_dump(cmph_t *mphf, FILE *fd) { char *buf = NULL; cmph_uint32 buflen; register size_t nbytes; chd_ph_data_t *data = (chd_ph_data_t *)mphf->data; __cmph_dump(mphf, fd); hash_state_dump(data->hl, &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); compressed_seq_dump(data->cs, &buf, &buflen); DEBUGP("Dumping compressed sequence structure with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); // dumping n and nbuckets nbytes = fwrite(&(data->n), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(&(data->nbuckets), sizeof(cmph_uint32), (size_t)1, fd); if (nbytes == 0 && ferror(fd)) { fprintf(stderr, "ERROR: %s\n", strerror(errno)); return 0; } return 1; }
int bmz_dump(cmph_t *mphf, FILE *fd) { char *buf = NULL; cmph_uint32 buflen; cmph_uint32 two = 2; //number of hash functions bmz_data_t *data = (bmz_data_t *)mphf->data; register size_t nbytes; #ifdef DEBUG cmph_uint32 i; #endif __cmph_dump(mphf, fd); nbytes = fwrite(&two, sizeof(cmph_uint32), (size_t)1, fd); hash_state_dump(data->hashes[0], &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); hash_state_dump(data->hashes[1], &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); nbytes = fwrite(&(data->n), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(data->g, sizeof(cmph_uint32)*(data->n), (size_t)1, fd); if (nbytes == 0 && ferror(fd)) { fprintf(stderr, "ERROR: %s\n", strerror(errno)); return 0; } #ifdef DEBUG fprintf(stderr, "G: "); for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", data->g[i]); fprintf(stderr, "\n"); #endif return 1; }
static char * brz_copy_partial_bmz8_mphf(brz_config_data_t *brz, bmz8_data_t * bmzf, cmph_uint32 index, cmph_uint32 *buflen) { cmph_uint32 buflenh1 = 0; cmph_uint32 buflenh2 = 0; char * bufh1 = NULL; char * bufh2 = NULL; char * buf = NULL; cmph_uint32 n = (cmph_uint32)ceil(brz->c * brz->size[index]); hash_state_dump(bmzf->hashes[0], &bufh1, &buflenh1); hash_state_dump(bmzf->hashes[1], &bufh2, &buflenh2); *buflen = buflenh1 + buflenh2 + n + 2U * (cmph_uint32)sizeof(cmph_uint32); buf = (char *)malloc((size_t)(*buflen)); memcpy(buf, &buflenh1, sizeof(cmph_uint32)); memcpy(buf+sizeof(cmph_uint32), bufh1, (size_t)buflenh1); memcpy(buf+sizeof(cmph_uint32)+buflenh1, &buflenh2, sizeof(cmph_uint32)); memcpy(buf+2*sizeof(cmph_uint32)+buflenh1, bufh2, (size_t)buflenh2); memcpy(buf+2*sizeof(cmph_uint32)+buflenh1+buflenh2,bmzf->g, (size_t)n); free(bufh1); free(bufh2); return buf; }
static char * brz_copy_partial_fch_mphf(brz_config_data_t *brz, fch_data_t * fchf, cmph_uint32 index, cmph_uint32 *buflen) { cmph_uint32 i = 0; cmph_uint32 buflenh1 = 0; cmph_uint32 buflenh2 = 0; char * bufh1 = NULL; char * bufh2 = NULL; char * buf = NULL; cmph_uint32 n = fchf->b;//brz->size[index]; hash_state_dump(fchf->h1, &bufh1, &buflenh1); hash_state_dump(fchf->h2, &bufh2, &buflenh2); *buflen = buflenh1 + buflenh2 + n + 2U * (cmph_uint32)sizeof(cmph_uint32); buf = (char *)malloc((size_t)(*buflen)); memcpy(buf, &buflenh1, sizeof(cmph_uint32)); memcpy(buf+sizeof(cmph_uint32), bufh1, (size_t)buflenh1); memcpy(buf+sizeof(cmph_uint32)+buflenh1, &buflenh2, sizeof(cmph_uint32)); memcpy(buf+2*sizeof(cmph_uint32)+buflenh1, bufh2, (size_t)buflenh2); for (i = 0; i < n; i++) memcpy(buf+2*sizeof(cmph_uint32)+buflenh1+buflenh2+i,(fchf->g + i), (size_t)1); free(bufh1); free(bufh2); return buf; }
int brz_dump(cmph_t *mphf, FILE *fd) { brz_data_t *data = (brz_data_t *)mphf->data; char *buf = NULL; cmph_uint32 buflen; register size_t nbytes; DEBUGP("Dumping brzf\n"); // The initial part of the MPHF have already been dumped to disk during construction // Dumping h0 hash_state_dump(data->h0, &buf, &buflen); DEBUGP("Dumping hash state with %u bytes to disk\n", buflen); nbytes = fwrite(&buflen, sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(buf, (size_t)buflen, (size_t)1, fd); free(buf); // Dumping m and the vector offset. nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd); nbytes = fwrite(data->offset, sizeof(cmph_uint32)*(data->k), (size_t)1, fd); return 1; }