25 std::stack<irep_idt> queue;
29 queue.push(
"java.lang.Object");
31 queue.push(
"java.lang.String");
33 queue.push(
"java.lang.Class");
34 queue.push(class_name);
48 debug() <<
"Reading class " << c <<
eom;
54 for(java_bytecode_parse_treet::class_refst::const_iterator
65 std::string &_java_cp_include_files)
84 auto jm_it=jm.entries.find(class_name);
86 if(jm_it!=jm.entries.end())
88 debug() <<
"Getting class `" << class_name <<
"' from JAR " 92 .get_entry(jm_it->second.class_file_name);
94 std::istringstream istream(
data);
115 auto jm_it=jm.entries.find(class_name);
117 if(jm_it!=jm.entries.end())
119 debug() <<
"Getting class `" << class_name <<
"' from JAR " 123 .get_entry(jm_it->second.class_file_name);
125 std::istringstream istream(
data);
138 std::string full_path=
147 std::ifstream(full_path))
159 warning() <<
"failed to load class `" << class_name <<
'\'' <<
eom;
166 const std::string &
file)
174 for(
const auto &e : jm.entries)
192 error() <<
"failed to open JAR file `" <<
file <<
"'" <<
eom;
202 std::string file_name=
id2string(jar_entry.first);
210 jm.entries[class_name].class_file_name=file_name;
235 for(std::string::iterator it=
result.begin(); it!=
result.end(); it++)
247 for(std::string::iterator it=
result.begin(); it!=
result.end(); it++)
const std::string & id2string(const irep_idt &d)
std::list< std::string > jar_files
bool java_bytecode_parse(std::istream &istream, java_bytecode_parse_treet &parse_tree, message_handlert &message_handler)
void load_entire_jar(java_class_loader_limitt &, const std::string &f)
java_bytecode_parse_treet & get_parse_tree(java_class_loader_limitt &, const irep_idt &)
filtered_jart filtered_jar
static mstreamt & eom(mstreamt &m)
static std::string file_to_class_name(const std::string &)
void set_java_cp_include_files(std::string &)
virtual void set_message_handler(message_handlert &_message_handler)
struct configt::javat java
bool has_prefix(const std::string &s, const std::string &prefix)
message_handlert & get_message_handler()
java_bytecode_parse_treet & operator()(const irep_idt &)
bool load_class_file(const irep_idt &class_file_name)
bool has_suffix(const std::string &s, const std::string &suffix)
void read_jar_file(java_class_loader_limitt &, const irep_idt &)
std::string java_cp_include_files
static std::string class_name_to_file(const irep_idt &)