Beispiel #1
0
int
main(int argc, char **argv)
{
    if (argc <= 1) {
	fprintf(stderr, "Usage:\n");
	fprintf(stderr, "%s <options> <benchmark>\n", argv[0]);
	exit(1);
    }

    init_isa();
    // read options including (1) actions; (2) processor configuration
    read_opt(argc, argv);
    
    /* liangyun: read jump table if necessary */   
    read_injp(argv[argc - 1]);

    /* liangyun: read depth table for recursive function */
    read_recursive(argv[argc - 1]);
 
    path_analysis(argv[argc-1]);
    
    if (strcmp(run_opt, "CFG") == 0)
	run_cfg(argv[argc - 1]);
    else
	run_est(argv[argc - 1]);
}
Beispiel #2
0
void FlagTreeItem::read_recursive(FlagTreeItem *root,const std::map<std::string,bool>& parse_map)
{
    ChildIterator iter;
    std::map<std::string,bool>::const_iterator iter_show;
    std::map<std::string,bool>::const_iterator iter_hide;
    for( iter = root->m_child.begin(); iter != root->m_child.end(); ++iter)
    {
        iter_show = parse_map.find((*iter)->m_showName);
        iter_hide = parse_map.find((*iter)->m_hideName);
        if( iter_show != parse_map.end() && iter_hide != parse_map.end() )
        {
            bool show  = iter_show->second;
            bool hide  = iter_hide->second;
            if(show || hide)
            {
                tristate merge_showhide;
                if (show) merge_showhide = tristate::true_value;
                if (hide) merge_showhide = tristate::false_value;
                (*iter)->setValue(merge_showhide);
            }
            else
            {
                (*iter)->m_state = tristate::neutral_value;
                read_recursive(*iter,parse_map);
            }
        }
    }
}
Beispiel #3
0
std::istream& FlagTreeItem::read(std::istream &in)
{
    std::map<std::string, bool> parse_map;
    create_parse_map(this,parse_map);
    std::string token;
    while(in >> token)
    {
        if( parse_map.find(token) != parse_map.end() )
        {
            parse_map[token] = true;
        }
        else
            msg_error("DisplayFlags") << "FlagTreeItem: unknown token " << token;
    }
    if( in.rdstate() & std::ios_base::eofbit ) { in.clear(); }

    read_recursive(this,parse_map);
    return in;
}