Exemplo n.º 1
0
void
add_to_procedure_list(list<ProcedureSymbol*> *&procs,
                      SymbolTable *table,
                      bool flag_def_only)
{
  assert( table );
  assert( procs );
  Iter<SymbolTableObject*> symbols_iter =
                                    table->get_symbol_table_object_iterator();

  for ( ; symbols_iter.is_valid(); symbols_iter.next() ) {
    SymbolTableObject* s = symbols_iter.current();
    if (s && s->isKindOf(ProcedureSymbol::get_class_name())) {
      ProcedureSymbol* sym = to<ProcedureSymbol>(s);
      if (flag_def_only && sym->get_definition() == 0) continue;
      // insert sorted
      const char *proc_name = sym->get_name().c_str();
      //list<ProcedureSymbol*>::iterator it = procs->begin();
      unsigned i;
      for (i = 0; i < procs->size(); ++i) {
	if (strcmp((*procs)[i]->get_name().c_str(), proc_name) > 0)
	   break;
      }
      if (i == procs->size()) {
	procs->push_back(sym);
      } else {
        procs->insert(i-1, sym);
      }
    }
  }
}
Exemplo n.º 2
0
ProcedureSymbol* RemoveModulePass::FindProcedure(String name)
{
    assert(repository != NULL) ;
    SymbolTable* symTab = repository->get_external_symbol_table() ;

    for (int i = 0 ; i < symTab->get_symbol_table_object_count() ; ++i)
    {
        ProcedureSymbol* nextProc =
            dynamic_cast<ProcedureSymbol*>(symTab->get_symbol_table_object(i)) ;
        if (nextProc != NULL && nextProc->get_name() == name)
        {
            return nextProc ;
        }
    }
    return NULL ;
}
Exemplo n.º 3
0
/*--------------------------------------------------------------------
 * add_std_proc_menu
 *
 */
void
add_std_proc_menu(vmenu* root_menu, char* parent_menu)
{
  const unsigned max_procs = 10;
  list<ProcedureSymbol*> *bodies =
                     get_procedure_list(suif_env->get_file_set_block());

  if (bodies->size() <= max_procs) {
    for (s_count_t i = 0; i < bodies->size(); i++) {
      ProcedureSymbol *proc = (*bodies)[i];
      binding *b = new binding((bfun) &do_show_proc, proc);
      root_menu->add_command(b, parent_menu, proc->get_name().c_str() );
    }
    root_menu->add_separator(parent_menu);
  }

  /* add procedure list command to the menu */
  binding *b = new binding((bfun) &do_show_proc_list, 0);
  root_menu->add_command(b, parent_menu, "Procedure List ...");
}
Exemplo n.º 4
0
static String handle_static_procedure_symbol(CPrintStyleModule *map,
					     const SuifObject *obj) {
  ProcedureSymbol *ps = to<ProcedureSymbol>(obj);
  return(String("P:") + ps->get_name());
}