Debugged all the leaks. Decompression still not working
| | |
| | | fprintf(fh, " <UnstructuredGrid>\n"); |
| | | fprintf(fh, "<Piece NumberOfPoints=\"%u\" NumberOfCells=\"%u\">\n",vlist->n+monono*polyno+fonono*filno, blist->n+monono*polyno+filno*(fonono-1)+vesicle->tlist->n); |
| | | fprintf(fh,"<PointData Scalars=\"vertices_idx\">\n<DataArray type=\"Int64\" Name=\"vertices_idx\" format=\"binary\">"); |
| | | int *int_vector=(int *)malloc((vlist->n+monono*polyno+fonono*filno)*sizeof(ts_uint)); |
| | | long *int_vector=(long *)malloc((vlist->n+monono*polyno+fonono*filno)*sizeof(long)); |
| | | // sizes are as expected 4 bytes for int and 1 byte for char |
| | | // printf("size of ts_uint %ld, of int %ld, of char %ld",sizeof(ts_uint), sizeof(int), sizeof(char)); |
| | | int offset=0; |
| | | for(i=0;i<vlist->n;i++){ |
| | | // fprintf(fh,"%u ",vtx[i]->idx); |
| | | int_vector[i+offset]=vtx[i]->idx; |
| | | } |
| | | offset=offset+i; |
| | | //polymeres |
| | | if(poly){ |
| | | poly_idx=vlist->n; |
| | | offset=offset+i; |
| | | for(i=0;i<vesicle->poly_list->n;i++){ |
| | | for(j=0;j<vesicle->poly_list->poly[i]->vlist->n;j++,poly_idx++){ |
| | | //fprintf(fh,"%u ", poly_idx); |
| | |
| | | offset=offset+j; |
| | | } |
| | | } |
| | | char *printout=ts_compress_intlist(int_vector,(vlist->n+monono*polyno+fonono*filno)*sizeof(ts_uint)); |
| | | printf("Offset in the end is %d, should be %d",offset,(vlist->n+monono*polyno+fonono*filno) ); |
| | | char *printout=ts_compress((char *)int_vector,offset*sizeof(long), offset); |
| | | fprintf(fh,"%s",printout); |
| | | free(printout); |
| | | |
| | |
| | | char *compr=(char *)malloc(data_len*sizeof(char)); |
| | | defstream.avail_out = data_len+1; |
| | | defstream.next_out = (unsigned char *)compr; |
| | | deflateInit(&defstream, Z_BEST_COMPRESSION); |
| | | deflateInit(&defstream, 6); |
| | | // deflateInit(&defstream, Z_BEST_COMPRESSION); |
| | | deflate(&defstream, Z_FINISH); |
| | | deflateEnd(&defstream); |
| | | *compressed=compr; |
| | |
| | | return nbase; |
| | | } |
| | | |
| | | char *ts_compress_intlist(int *data, ts_uint data_len){ |
| | | char *ts_compress(char *data, ts_uint data_len, ts_uint original_len){ |
| | | size_t nbase1, nbase2; |
| | | char *compr; |
| | | size_t number_of_compressed_bytes=ts_compress_data((char *)data, data_len*sizeof(int), &compr); |
| | | size_t number_of_compressed_bytes=ts_compress_data(data, data_len, &compr); |
| | | char *encoded_compressed=base64_encode((unsigned char *)compr,number_of_compressed_bytes,&nbase1); |
| | | free(compr); |
| | | ts_uint header[4]={1, data_len, data_len, nbase1}; |
| | | ts_uint header[4]={1, original_len, original_len, number_of_compressed_bytes}; |
| | | char *encoded_header=(char *)base64_encode((unsigned char *)header, 4*sizeof(ts_uint), &nbase2); |
| | | encoded_header=realloc(encoded_header, nbase1+nbase2); |
| | | encoded_header=strcat(encoded_header,encoded_compressed); |
| | | fprintf(stderr,"WAS HERE %d\n", data_len); |
| | | char *return_value=malloc((nbase1+nbase2+1)*sizeof(char)); |
| | | strncpy(return_value,encoded_header,nbase2); |
| | | strncpy(return_value+nbase2,encoded_compressed,nbase1); |
| | | *(return_value+nbase1+nbase2)=0; |
| | | printf("Compressed size in bytes= %ld, size of encoded header= %ld, size of encoded compressed= %ld.\n",number_of_compressed_bytes, nbase2, nbase1); |
| | | free(encoded_compressed); |
| | | return encoded_header; |
| | | free(encoded_header); |
| | | return return_value; |
| | | } |
| | | |
| | | ts_uint ts_decompress_string64(char *b64, ts_uint data_len, char **decompressed){ |
| | |
| | | void build_decoding_table(); |
| | | void base64_cleanup(); |
| | | ts_uint ts_compress_string64(char *data, ts_uint data_len, char **compressed); |
| | | char *ts_compress_intlist(int *data, ts_uint data_len); |
| | | char *ts_compress(char *data, ts_uint data_len, ts_uint original_len); |
| | | #endif |
| | |
| | | |
| | | ####### Polymer (brush) definitions ########### |
| | | # npoly is a number of polymers attached to npoly distinct vertices on vesicle |
| | | npoly=10 |
| | | npoly=0 |
| | | # nmono is a number of monomers in each polymer |
| | | nmono=20 |
| | | # Spring constant between monomers of the polymer |