CBMC
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/irep.h>
13 #include <util/optional.h>
14 
15 #include "jar_pool.h"
16 
17 class message_handlert;
19 
22 {
23 public:
26  {
27  classpath_entries.clear();
28  }
29 
34  void add_classpath_entry(const std::string &, message_handlert &);
35 
36  static std::string file_to_class_name(const std::string &);
37  static std::string class_name_to_os_file(const irep_idt &);
38  static std::string class_name_to_jar_file(const irep_idt &);
39 
42 
43 protected:
46  {
47  using kindt = enum { JAR, DIRECTORY };
49  std::string path;
50 
51  classpath_entryt(kindt _kind, const std::string &_path)
52  : kind(_kind), path(_path)
53  {
54  }
55  };
56 
58  std::list<classpath_entryt> classpath_entries;
59 
62  const irep_idt &class_name,
63  const classpath_entryt &,
65 
68  const irep_idt &class_name,
69  const std::string &jar_file,
71 
74  const irep_idt &class_name,
75  const std::string &path,
77 };
78 
79 #endif // CPROVER_JAVA_BYTECODE_JAVA_CLASS_LOADER_BASE_H
java_class_loader_baset::jar_pool
jar_poolt jar_pool
a cache for jar_filet, by path name
Definition: java_class_loader_base.h:41
dstringt
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:36
java_class_loader_baset::file_to_class_name
static std::string file_to_class_name(const std::string &)
Convert a file name to the class name.
Definition: java_class_loader_base.cpp:62
java_bytecode_parse_treet
Definition: java_bytecode_parse_tree.h:22
jar_pool.h
optional.h
java_class_loader_baset::class_name_to_jar_file
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.
Definition: java_class_loader_base.cpp:94
java_class_loader_baset::add_classpath_entry
void add_classpath_entry(const std::string &, message_handlert &)
Appends an entry to the class path, used for loading classes.
Definition: java_class_loader_base.cpp:22
java_class_loader_baset::classpath_entryt
An entry in the classpath.
Definition: java_class_loader_base.h:45
java_class_loader_baset
Base class for maintaining classpath.
Definition: java_class_loader_base.h:21
java_class_loader_baset::load_class
optionalt< java_bytecode_parse_treet > load_class(const irep_idt &class_name, const classpath_entryt &, message_handlert &)
attempt to load a class from a classpath_entry
Definition: java_class_loader_base.cpp:135
java_class_loader_baset::get_class_from_jar
optionalt< java_bytecode_parse_treet > get_class_from_jar(const irep_idt &class_name, const std::string &jar_file, message_handlert &)
attempt to load a class from a given jar file
Definition: java_class_loader_base.cpp:158
java_class_loader_baset::classpath_entries
std::list< classpath_entryt > classpath_entries
List of entries in the classpath.
Definition: java_class_loader_base.h:58
message_handlert
Definition: message.h:27
java_class_loader_baset::get_class_from_directory
optionalt< java_bytecode_parse_treet > get_class_from_directory(const irep_idt &class_name, const std::string &path, message_handlert &)
attempt to load a class from a given directory
Definition: java_class_loader_base.cpp:193
jar_poolt
A chache for jar_filet objects, by file name.
Definition: jar_pool.h:18
optionalt
nonstd::optional< T > optionalt
Definition: optional.h:35
java_class_loader_baset::classpath_entryt::classpath_entryt
classpath_entryt(kindt _kind, const std::string &_path)
Definition: java_class_loader_base.h:51
java_class_loader_baset::classpath_entryt::path
std::string path
Definition: java_class_loader_base.h:49
java_class_loader_baset::class_name_to_os_file
static std::string class_name_to_os_file(const irep_idt &)
Convert a class name to a file name, with OS-dependent syntax.
Definition: java_class_loader_base.cpp:113
java_class_loader_baset::classpath_entryt::kind
kindt kind
Definition: java_class_loader_base.h:48
java_class_loader_baset::classpath_entryt::kindt
enum { JAR, DIRECTORY } kindt
Definition: java_class_loader_base.h:47
java_class_loader_baset::clear_classpath
void clear_classpath()
Clear all classpath entries.
Definition: java_class_loader_base.h:25
irep.h