24 for(std::size_t i=0; i<sub.size(); i++)
33 if(sub[base].
id()==ID_name)
34 return sub[base].
get(ID_identifier);
35 else if(base+1<sub.size() && sub[base].id()==ID_operator)
36 return "operator"+sub[base+1].
id_string();
37 else if(base+1<sub.size() && sub[base].id()==
"~" && sub[base+1].id()==ID_name)
38 return "~"+sub[base+1].
get_string(ID_identifier);
45 std::string &identifier,
46 std::string &base_name)
const 52 std::string name_component;
55 name_component=it->get_string(ID_identifier);
56 else if(
id==ID_template_args)
59 ss << location() <<
'\n';
60 ss <<
"no template arguments allowed here";
64 name_component=it->id_string();
66 identifier+=name_component;
71 base_name+=name_component;
83 str += it->id_string();
84 else if(it->id()==ID_template_args)
87 str+=it->get_string(ID_identifier);
std::vector< irept > subt
static bool convert(const irep_idt &identifier, const std::ostringstream &s, symbol_tablet &symbol_table, message_handlert &message_handler)
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
std::string to_string() const
irep_idt get_base_name() const
const std::string & get_string(const irep_namet &name) const
const std::string & id_string() const
#define forall_irep(it, irep)