Beispiel #1
0
void process_transition(char *line)
{
   transition_info_type *tto;
   char *ppp;
   tto = &trantos[tranto_knt];
   ++tranto_knt;
   if (tranto_knt >= MAX_TRANTO_KNT){
       fprintf(stderr,"Too many transitions ... Processing aborted ...\n");
       exit(1);}
   ppp = line;
   ppp = strip_state(ppp,&(*tto).start_statenum);
   if ((*ppp)==',') ++ppp;
   ppp = strip_state(ppp,&(*tto).dest_statenum);
   while ((isspace(*ppp)) && ((*ppp)!= '\0')) ++ppp;
   if ((*ppp)==EQUALS) ++ppp;
   while ((isspace(*ppp)) && ((*ppp)!= '\0')) ++ppp;
   (*tto).rate = malloc_copy(ppp);
}
Beispiel #2
0
int do_database(Interpo_struct *pstru, Name_struct *nstru)
{
    int j;
    memset(pstru,0,sizeof(*pstru));
    j=0;

    while(j<Index)
    {
        if(!strcmp(Ptr[j],"PREFIX:"))
        {
            if(++j>=Index)break;
            malloc_copy(&(nstru->prefix), Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"SUFFIX:"))
        {
            if(++j>=Index)break;
            malloc_copy(&(nstru->suffix), Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"OUTPUT_FILE_NAME:"))
        {
            if(++j>=Index)break;
            malloc_copy(&(nstru->output_file_name), Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"TYPE:"))
        {
            if(++j>=Index)break;
            if(!strcmp(Ptr[j],"CTCTF"))pstru->type = CTCTF;
            else if(!strcmp(Ptr[j],"CTRAS"))pstru->type = CTRAS;
            else if(!strcmp(Ptr[j],"CTPGM"))pstru->type = CTPGM;
            else if(!strcmp(Ptr[j],"CTVOL"))pstru->type = CTVOL;
            else if(!strcmp(Ptr[j],"CTSLC"))pstru->type = CTSLC;
            else {
                printf("unknown type [%s], use default, CTPGM\n",Ptr[j]);
            }
        }
        /*
        else if(!strcmp(Ptr[j],"METHOD:"))
        {
        if(++j>=Index)break;
        if(!strcmp(Ptr[j],"MARCHING_CUBES"))pstru->method = MARCHING_CUBES;
        else if(!strcmp(Ptr[j],"TRILINEAR_MARCHING_CUBES"))
        pstru->method = TRILINEAR_MARCHING_CUBES;
        else if(!strcmp(Ptr[j],"MARCHING_TETRAHEDRA"))
        pstru->method = MARCHING_TETRAHEDRA;
        else if(!strcmp(Ptr[j],"SPIDER_WEB"))pstru->method = SPIDER_WEB;
        else {printf("unknown method [%s], use default, MARCHING_CUBES\n",
        Ptr[j]);}
        }
        */
        else if(!strcmp(Ptr[j],"EPSILON:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%f",&(pstru->epsilon));
            /*	Do not use atof(), it does not work on some machine */
        }
        else if(!strcmp(Ptr[j],"DETZ:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%f",&pstru->detz);
        }
        else if(!strcmp(Ptr[j],"SCALEZ:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%f",&Scale_z);
        }
        else if(!strcmp(Ptr[j],"FIRST_Z:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%f",&FIRST_Z);
        }
        else if(!strcmp(Ptr[j],"MERGE_DISTANCE_SQUARE:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%lf",&MERGE_DISTANCE_SQUARE);
        }
        else if(!strcmp(Ptr[j],"THRES:"))
        {
            if(++j>=Index)break;
            sscanf(Ptr[j],"%f",&(pstru->thres));
        }
        else if(!strcmp(Ptr[j],"SLICE_RANGE:"))
        {
            if(++j>=Index)break;
            pstru->beg=atoi(Ptr[j]);
            if(++j>=Index)break;
            pstru->end=atoi(Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"X_RANGE:"))
        {
            if(++j>=Index)break;
            pstru->x1=atoi(Ptr[j]);
            if(++j>=Index)break;
            pstru->x2=atoi(Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"Y_RANGE:"))
        {
            if(++j>=Index)break;
            pstru->y1=atoi(Ptr[j]);
            if(++j>=Index)break;
            pstru->y2=atoi(Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"CUBE_SIZE:"))
        {
            if(++j>=Index)break;
            pstru->xcube_vox=atoi(Ptr[j]);
            if(pstru->xcube_vox<=0 || pstru->xcube_vox>10)
                fprintf(stderr,"CUBE_SIZE, X =%d should be between [1,32]\n",
                        pstru->xcube_vox);
            if(++j>=Index)break;
            pstru->ycube_vox=atoi(Ptr[j]);
            if(pstru->ycube_vox<=0 || pstru->ycube_vox>10)
                fprintf(stderr,"CUBE_SIZE, Y =%d should be between [1,32]\n",
                        pstru->ycube_vox);
            if(++j>=Index)break;
            pstru->zcube_vox=atoi(Ptr[j]);
            if(pstru->zcube_vox<=0 || pstru->zcube_vox>10)
                fprintf(stderr,"CUBE_SIZE, Z =%d should be between [1,10]\n",
                        pstru->zcube_vox);
        }
        else if(!strcmp(Ptr[j],"MATH_FUNC:"))
        {
            if(++j>=Index)break;
            MATH_FUNC=atoi(Ptr[j]);
        }
        else if(!strcmp(Ptr[j],"FROM_CONTOURS:"))
        {
            FROM_CONTOURS=1;
        }
        else if(!strcmp(Ptr[j],"DO_APPROX_ONLY:"))
        {
            DO_APPROX_ONLY=1;
        }
        else if(!strcmp(Ptr[j],"CONTOURS_ONLY:"))
        {
            CONTOURS_ONLY=1;
        }
        else if(!strcmp(Ptr[j],"FILE_FOR_MESH_GEN:"))
        {
            MESH_FILE=1;
        }
        else if(!strcmp(Ptr[j],"NON_VALID:"))
        {
            NON_VALID=1;
        }
        else if(!strcmp(Ptr[j],"SAME_LEVEL:"))SAME_LEVEL=1;
        else if(!strcmp(Ptr[j],"DIFF_LEVEL_FILES:"))DIFF_LEVEL_FILES=1;
        else if(!strcmp(Ptr[j],"FILTER_TYPE:"))
        {
            if(++j>=Index)break;
            FILTER_TYPE=atoi(Ptr[j]);
        }
        else
        {
            printf("unknown command %s in configuration file\n",Ptr[j]);
            exit(1);
        }
        ++j;
    }
    free(Ptr);
    return(1);
}