Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
inline object const_slice_policies::get(object const& target, key_type const& key)
{
    return getslice(target, key.first, key.second);
}
Ejemplo n.º 3
0
object getslice(Target const& target, Begin const& begin, End const& end)
{
    return getslice(object(target), object(begin), object(end));
}