#include "cluster_reader.h" int read_clusters(FILE* fp, int64_t n_clusters, Cluster* buf, int *n_left){ printf("Item size: %lu n_clusters: %lld, n_left: %d\n", sizeof(Cluster), n_clusters,*n_left); int iframe=0, nph=*n_left; size_t n_read=0, nph_read=0, nn=*n_left, nr=0; //n_left=n_clusters; //read photons left from previous frame if (nph) { if (nph>n_clusters-nph_read) nn=n_clusters-nph_read; else nn=nph; //printf("* %d %d %d %d\n",iframe,nph,nn,n_left); nr += fread((void*)(buf+nph_read), sizeof(Cluster), nn, fp); n_read+=nr/sizeof(Cluster); nph_read+=nn; *n_left=nph-nn; } if (nph_readn_clusters-nph_read) nn=n_clusters-nph_read; else nn=nph; //printf("%d %d %d %d\n",iframe,nph,nr,n_left); nr += fread((void*)(buf+nph_read), sizeof(Cluster), nn, fp); //printf("%d %d %d %d\n",iframe,nph,nr,n_left); n_read+=nr; nph_read+=nn; *n_left=nph-nn; } if (nph_read>=n_clusters) break; } } // size_t n_read = fread(buf, sizeof(Cluster), n_clusters, fp); printf("Read: %zu items %zu left %d\n", nph_read, n_read,*n_left); return nph_read; }