void *compress_slices(void *arg) { int i; slice *slicei, *sb; int *thread_index; thread_index = (int *)arg; if(nsliceinfo<=0)return NULL; LOCK_SLICE; if(GLOBfirst_slice==1) { GLOBfirst_slice=0; if(GLOBcleanfiles==1) { for(i=0; i<nsliceinfo; i++) { slicei = sliceinfo + i; convert_slice(slicei,thread_index); } UNLOCK_SLICE; return NULL; } for(i=0; i<nsliceinfo; i++) { slicei = sliceinfo + i; if(GLOBautozip==1&&slicei->autozip==0)continue; slicei->count=0; } if(GLOBget_slice_bounds==1) { Get_Slice_Bounds(); } for(i=0; i<nsliceinfo; i++) { char *label; slicei = sliceinfo + i; if(GLOBautozip==1&&slicei->autozip==0)continue; slicei->doit=1; sb=getslice(slicei->label.shortlabel); if(sb==NULL)slicei->doit=0; label = slicei->label.longlabel; if(GLOBmake_demo==1&&(strcmp(label,"TEMPERATURE")==0||strcmp(label,"oxygen")==0)) { slicei->setvalmax=1; slicei->setvalmin=1; if(strcmp(label,"TEMPERATURE")==0) { slicei->valmax=620.0; slicei->valmin=20.0; } else { slicei->valmax=0.23; slicei->valmin=0.0; } } else { if(sb!=NULL) { if(sb->setvalmax!=1||sb->setvalmin!=1)slicei->doit=0; } slicei->setvalmax=sb->setvalmax; slicei->setvalmin=sb->setvalmin; slicei->valmax=sb->valmax; slicei->valmin=sb->valmin; } sb->count++; } } UNLOCK_SLICE; if(GLOBcleanfiles==1)return NULL; // convert and compress files for(i=0; i<nsliceinfo; i++) { slicei = sliceinfo + i; if(GLOBautozip==1&&slicei->autozip==0)continue; LOCK_SLICE; if(slicei->inuse==1) { UNLOCK_SLICE; continue; } slicei->inuse=1; UNLOCK_SLICE; if(slicei->doit==1) { convert_slice(slicei,thread_index); } else { PRINTF("%s not compressed\n",slicei->file); PRINTF(" Min and Max for %s not set in .ini file\n",slicei->label.shortlabel); } } return NULL; }
inline object const_slice_policies::get(object const& target, key_type const& key) { return getslice(target, key.first, key.second); }
object getslice(Target const& target, Begin const& begin, End const& end) { return getslice(object(target), object(begin), object(end)); }