Exemplo n.º 1
0
lts_file_t lts_reader(lts_t lts,int segments,lts_file_t settings){
    lts_file_t file=lts_file_bare("<heap>",lts->ltstype,segments,settings,sizeof(struct lts_file_s));
    file->lts=lts;
    file->segments=segments;
    file->edge_labels=lts_type_get_edge_label_count(lts->ltstype);
    lts_file_set_read_init(file,read_init);
    lts_file_set_read_state(file,read_state);
    lts_file_set_read_edge(file,read_edge);
    lts_file_set_close(file,read_close);
    lts_file_complete(file);
    int T=lts_type_get_type_count(lts->ltstype);
    for(int i=0;i<T;i++){
        lts_file_set_table(file,i,lts->values[i]);
    }
    lts_set_type(file->lts,LTS_LIST);
    file->init_count=0;
    file->state_count=0;
    file->edge_count=0;
    return file;
}
Exemplo n.º 2
0
lts_file_t aut_file_open(const char* name){
    lts_type_t ltstype=single_action_type();
    lts_file_t file=lts_file_bare(name,ltstype,1,NULL,sizeof(struct lts_file_s));
    file->type_no=lts_type_get_edge_label_typeno(ltstype,0);
    lts_file_set_read_init(file,aut_read_init);
    lts_file_set_read_edge(file,aut_read_edge);
    lts_file_set_close(file,aut_read_close);
    lts_file_complete(file);
    file->f=fopen(name,"r");
    if(file->f==NULL){
        AbortCall("while opening %s",name);
    }
    int matches;
    matches = fscanf(file->f,"des%*[^(]s");
    if (matches != 0) Abort("while parsing %s",name);
    matches = fscanf(file->f,"(%llu,%llu,%llu)\n",&file->root,&file->trans,&file->states);
    if (matches != 3) Abort("while parsing %s",name);
    Print(infoLong,"file %s contains %llu states and %llu transitions",
         name,file->states,file->trans);
    return file;
}