cprover
java_class_loader_limitt Class Reference

Class representing a filter for class file loading. More...

#include <java_class_loader_limit.h>

+ Inheritance diagram for java_class_loader_limitt:
+ Collaboration diagram for java_class_loader_limitt:

Public Member Functions

 java_class_loader_limitt (message_handlert &message_handler, const std::string &java_cp_include_files)
 
bool load_class_file (const std::string &class_file_name)
 Use the class load limiter to decide whether a class file should be loaded or not. More...
 
- Public Member Functions inherited from messaget
virtual void set_message_handler (message_handlert &_message_handler)
 
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
messagetoperator= (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level) const
 
mstreamterror () const
 
mstreamtwarning () const
 
mstreamtresult () const
 
mstreamtstatus () const
 
mstreamtstatistics () const
 
mstreamtprogress () const
 
mstreamtdebug () const
 
void conditional_output (mstreamt &mstream, const std::function< void(mstreamt &)> &output_generator) const
 Generate output to message_stream using output_generator if the configured verbosity is at least as high as that of message_stream. More...
 

Private Member Functions

void setup_class_load_limit (const std::string &)
 Initializes class with either regex matcher or match set. More...
 

Private Attributes

bool use_regex_match
 Whether to use regex_matcher instead of set_matcher. More...
 
std::regex regex_matcher
 
std::set< std::string > set_matcher
 

Additional Inherited Members

- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1, M_WARNING =2, M_RESULT =4, M_STATUS =6,
  M_STATISTICS =8, M_PROGRESS =9, M_DEBUG =10
}
 
- Static Public Member Functions inherited from messaget
static unsigned eval_verbosity (const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
 Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest. More...
 
static commandt command (unsigned c)
 Create an ECMA-48 SGR (Select Graphic Rendition) command. More...
 
- Static Public Attributes inherited from messaget
static eomt eom
 
static const commandt reset
 return to default formatting, as defined by the terminal More...
 
static const commandt red
 render text with red foreground color More...
 
static const commandt green
 render text with green foreground color More...
 
static const commandt yellow
 render text with yellow foreground color More...
 
static const commandt blue
 render text with blue foreground color More...
 
static const commandt magenta
 render text with magenta foreground color More...
 
static const commandt cyan
 render text with cyan foreground color More...
 
static const commandt bright_red
 render text with bright red foreground color More...
 
static const commandt bright_green
 render text with bright green foreground color More...
 
static const commandt bright_yellow
 render text with bright yellow foreground color More...
 
static const commandt bright_blue
 render text with bright blue foreground color More...
 
static const commandt bright_magenta
 render text with bright magenta foreground color More...
 
static const commandt bright_cyan
 render text with bright cyan foreground color More...
 
static const commandt bold
 render text with bold font More...
 
static const commandt faint
 render text with faint font More...
 
static const commandt italic
 render italic text More...
 
static const commandt underline
 render underlined text More...
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 

Detailed Description

Class representing a filter for class file loading.

Definition at line 22 of file java_class_loader_limit.h.

Constructor & Destructor Documentation

◆ java_class_loader_limitt()

java_class_loader_limitt::java_class_loader_limitt ( message_handlert message_handler,
const std::string &  java_cp_include_files 
)
inlineexplicit

Definition at line 32 of file java_class_loader_limit.h.

Member Function Documentation

◆ load_class_file()

bool java_class_loader_limitt::load_class_file ( const std::string &  file_name)

Use the class load limiter to decide whether a class file should be loaded or not.

Parameters
file_namethe name of the class file to load
Returns
true if file should be loaded, else false

Definition at line 89 of file java_class_loader_limit.cpp.

◆ setup_class_load_limit()

void java_class_loader_limitt::setup_class_load_limit ( const std::string &  java_cp_include_files)
private

Initializes class with either regex matcher or match set.

If the string starts with an @ it is treated as a path to a JSON file. Otherwise, it is treated as a regex.

The regex case describes which class files should be loaded in the form of a regular expression used with regex_match.

The match set is a list of files to load in JSON format, the argument is the name of the JSON file, prefixed with @. The file contains one section to list the .jar files to load and one section to list the .class files to load from the .jar.

for example a file called load.json with the following content: { "jar": [ "A.jar", "B.jar" ], "classFiles": [ "jarfile3$A.class", "jarfile3.class" ] } would be specified via --java-cp-include-files @load.json and would instruct the driver to load A.jar and B.jar and the two .class files jarfile3$A.class and jarfile3.class. All the rest of the .jar files is ignored.

Parameters
java_cp_include_filesparameter from java-cp-include-files in the format as described above

Definition at line 50 of file java_class_loader_limit.cpp.

Member Data Documentation

◆ regex_matcher

std::regex java_class_loader_limitt::regex_matcher
private

Definition at line 26 of file java_class_loader_limit.h.

◆ set_matcher

std::set<std::string> java_class_loader_limitt::set_matcher
private

Definition at line 27 of file java_class_loader_limit.h.

◆ use_regex_match

bool java_class_loader_limitt::use_regex_match
private

Whether to use regex_matcher instead of set_matcher.

Definition at line 25 of file java_class_loader_limit.h.


The documentation for this class was generated from the following files: