Trisurf Monte Carlo simulator
Samo Penic
2019-10-19 4ca00dc38c72f67dc714fbb45b3006afec097c9c
Compression except of trisurf header is done. Preparing for decompression
2 files modified
23 ■■■■■ changed files
src/b64zlib_compression.c 13 ●●●●● patch | view | raw | blame | history
src/snapshot.c 10 ●●●● patch | view | raw | blame | history
src/b64zlib_compression.c
@@ -78,7 +78,6 @@
    free(compr);
    ts_uint header[4]={1, data_len, data_len, number_of_compressed_bytes};
    fprintf(stderr,"Header before encoding: %d, %d, %d, %d\n", header[0],header[1],header[2], header[3]);
    char *encoded_header=(char *)base64_encode((unsigned char *)header, 4*sizeof(ts_uint), &nbase2);
    char *return_value=malloc((nbase1+nbase2+1)*sizeof(char));
    strncpy(return_value,encoded_header,nbase2);
@@ -89,8 +88,13 @@
    free(encoded_header);
    //test decoding and decompression
    char *test_data = ts_decompress((unsigned char *)return_value, nbase1+nbase2, data_len);
    free(test_data);
    //char *test_data = ts_decompress((unsigned char *)return_value, nbase1+nbase2, data_len);
    //for(int i=0;i<data_len;i++){
    //    if(data[i]!=test_data[i]){
    //        fprintf(stderr,"(DE)COMPRESSION ERROR!\n");
    //    }
    //}
    //free(test_data);
    return return_value;
}
@@ -100,12 +104,11 @@
    size_t nbase1=0,nbase2=0;
    header=(ts_uint *)base64_decode((const char *)compressed_data, encoded_header_len, &nbase2);
    if(header==NULL) fprintf(stderr, "Error decoding header\n");
    fprintf(stderr,"Header=%d, %d, %d, %d\n", header[0],header[1], header[2], header[3]);
    //fprintf(stderr,"Header=%d, %d, %d, %d\n", header[0],header[1], header[2], header[3]);
    unsigned char *decoded_data=base64_decode((const char *)&compressed_data[encoded_header_len], data_len-encoded_header_len, &nbase1);
    if(decoded_data==NULL) fprintf(stderr, "Error decoding compressed data\n");
    unsigned char *return_value=(unsigned char *)malloc(result_len*sizeof(char));
    uncompress(return_value, (unsigned long *)&result_len, decoded_data, header[3]);
//    fprintf(stderr,"RESULT_LEN=%d\n",result_len);
    free(decoded_data);
    free(header);
    return (char *)return_value;
src/snapshot.c
@@ -37,12 +37,12 @@
    xml_trisurf_nucleus(data,vesicle);
    xml_trisurf_constvolarea(data,V0,A0);
//#ifdef COMPRESSION
    char *compressed;
    ts_uint nbytes=ts_compress_string64(data->string, data->beg-1, &compressed); //suppress null character at the end with by substracting 1
    fwrite(compressed, sizeof(unsigned char), nbytes, fh);
    free (compressed);
//    char *compressed;
//    ts_uint nbytes=ts_compress_string64(data->string, data->beg-1, &compressed); //suppress null character at the end with by substracting 1
//    fwrite(compressed, sizeof(unsigned char), nbytes, fh);
//    free (compressed);
//#else
//    fprintf(fh,"%s", data->string);
    fprintf(fh,"%s", data->string);
//#endif
    free(data->string);  /* TODO: valgrind is not ok with this! */
    free(data);