cprover
java_class_loader_base.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 #ifndef CPROVER_JAVA_BYTECODE_JAVA_CLASS_LOADER_BASE_H
10 #define CPROVER_JAVA_BYTECODE_JAVA_CLASS_LOADER_BASE_H
11 
12 #include <util/message.h>
13 
14 #include "jar_pool.h"
16 
19 {
20 public:
23  {
24  classpath_entries.clear();
25  }
26 
31  void add_classpath_entry(const std::string &);
32 
33  static std::string file_to_class_name(const std::string &);
34  static std::string class_name_to_os_file(const irep_idt &);
35  static std::string class_name_to_jar_file(const irep_idt &);
36 
39 
40 protected:
43  {
44  using kindt = enum { JAR, DIRECTORY };
46  std::string path;
47 
48  classpath_entryt(kindt _kind, const std::string &_path)
49  : kind(_kind), path(_path)
50  {
51  }
52  };
53 
55  std::list<classpath_entryt> classpath_entries;
56 
59  load_class(const irep_idt &class_name, const classpath_entryt &);
60 
63  get_class_from_jar(const irep_idt &class_name, const std::string &jar_file);
64 
67  get_class_from_directory(const irep_idt &class_name, const std::string &path);
68 };
69 
70 #endif // CPROVER_JAVA_BYTECODE_JAVA_CLASS_LOADER_BASE_H
std::list< classpath_entryt > classpath_entries
List of entries in the classpath.
void add_classpath_entry(const std::string &)
Appends an entry to the class path, used for loading classes.
optionalt< java_bytecode_parse_treet > load_class(const irep_idt &class_name, const classpath_entryt &)
attempt to load a class from a classpath_entry
classpath_entryt(kindt _kind, const std::string &_path)
static std::string class_name_to_os_file(const irep_idt &)
Convert a class name to a file name, with OS-dependent syntax.
optionalt< java_bytecode_parse_treet > get_class_from_directory(const irep_idt &class_name, const std::string &path)
attempt to load a class from a given directory
void clear_classpath()
Clear all classpath entries.
nonstd::optional< T > optionalt
Definition: optional.h:35
static std::string file_to_class_name(const std::string &)
Convert a file name to the class name.
Base class for maintaining classpath.
jar_poolt jar_pool
a cache for jar_filet, by path name
Class that provides messages with a built-in verbosity &#39;level&#39;.
Definition: message.h:144
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
Definition: dstring.h:35
A chache for jar_filet objects, by file name.
Definition: jar_pool.h:18
static std::string class_name_to_jar_file(const irep_idt &)
Convert a class name to a file name, does the inverse of file_to_class_name.
optionalt< java_bytecode_parse_treet > get_class_from_jar(const irep_idt &class_name, const std::string &jar_file)
attempt to load a class from a given jar file