23 default: assert(
false);
35 lower_it=
sub.lower_bound(base_name);
37 if(lower_it!=
sub.end())
40 upper_it=
sub.upper_bound(base_name);
42 for(cpp_id_mapt::iterator n_it=lower_it;
43 n_it!=upper_it; n_it++)
44 id_set.insert(&n_it->second);
47 if(this->base_name==base_name)
54 for(scope_listt::iterator
70 for(scope_listt::iterator
102 std::cout <<
"B: " << base_name <<
'\n';
103 std::cout <<
"K: " << kind <<
'\n';
104 std::cout <<
"I: " << id_class <<
'\n';
105 std::cout <<
"THIS: " << this->base_name <<
" " << this->id_class
109 cpp_id_mapt::iterator
110 lower_it=
sub.lower_bound(base_name);
112 if(lower_it!=
sub.end())
114 cpp_id_mapt::iterator
115 upper_it=
sub.upper_bound(base_name);
117 for(cpp_id_mapt::iterator n_it=lower_it;
118 n_it!=upper_it; n_it++)
120 if(n_it->second.id_class == id_class)
121 id_set.insert(&n_it->second);
125 if(this->base_name == base_name &&
126 this->id_class == id_class)
133 for(scope_listt::iterator
145 if(!id_set.empty() &&
149 for(scope_listt::iterator
164 if(!id_set.empty() &&
177 for(cpp_id_mapt::iterator n_it=
sub.begin();
178 n_it!=
sub.end(); n_it++)
180 if(n_it->second.identifier == identifier
181 && n_it->second.id_class == id_class)
182 id_set.insert(&n_it->second);
185 if(this->identifier == identifier
186 && this->id_class == id_class)
190 for(
unsigned i=0; i<parents_size(); i++)
195 id_set.insert(&parent);
216 return !id_set.empty();
const std::string & id2string(const irep_idt &d)
void lookup(const irep_idt &base_name, lookup_kindt kind, id_sett &id_set)
class cpp_scopet & new_scope(const irep_idt &new_scope_name)
cpp_scopet & get_parent() const
std::ostream & operator<<(std::ostream &out, cpp_scopet::lookup_kindt kind)
irep_idt class_identifier
C++ Language Type Checking.
C++ Language Type Checking.
bool contains(const irep_idt &base_name)
scope_listt secondary_scopes
bool is_root_scope() const
cpp_idt & insert(const irep_idt &_base_name)
std::set< cpp_idt * > id_sett
void lookup_identifier(const irep_idt &identifier, cpp_idt::id_classt id_class, id_sett &id_set)