CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
java_class_loader_base.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module:
4
5Author: 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
14#include "jar_pool.h"
15
16#include <list>
17
20
23{
24public:
27 {
29 }
30
35 void add_classpath_entry(const std::string &, message_handlert &);
36
37 static std::string file_to_class_name(const std::string &);
38 static std::string class_name_to_os_file(const irep_idt &);
39 static std::string class_name_to_jar_file(const irep_idt &);
40
43
44protected:
47 {
48 using kindt = enum { JAR, DIRECTORY };
50 std::string path;
51
52 classpath_entryt(kindt _kind, const std::string &_path)
53 : kind(_kind), path(_path)
54 {
55 }
56 };
57
59 std::list<classpath_entryt> classpath_entries;
60
62 std::optional<java_bytecode_parse_treet> load_class(
63 const irep_idt &class_name,
64 const classpath_entryt &,
66
68 std::optional<java_bytecode_parse_treet> get_class_from_jar(
69 const irep_idt &class_name,
70 const std::string &jar_file,
72
74 std::optional<java_bytecode_parse_treet> get_class_from_directory(
75 const irep_idt &class_name,
76 const std::string &path,
78};
79
80#endif // CPROVER_JAVA_BYTECODE_JAVA_CLASS_LOADER_BASE_H
virtual void clear()
Reset the abstract state.
Definition ai.h:265
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition dstring.h:38
A chache for jar_filet objects, by file name.
Definition jar_pool.h:19
Base class for maintaining classpath.
void add_classpath_entry(const std::string &, message_handlert &)
Appends an entry to the class path, used for loading classes.
std::optional< 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
void clear_classpath()
Clear all classpath entries.
jar_poolt jar_pool
a cache for jar_filet, by path name
std::optional< 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
static std::string class_name_to_os_file(const irep_idt &)
Convert a class name to a file name, with OS-dependent syntax.
std::optional< 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
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.
std::list< classpath_entryt > classpath_entries
List of entries in the classpath.
static std::string file_to_class_name(const std::string &)
Convert a file name to the class name.
classpath_entryt(kindt _kind, const std::string &_path)