cprover
jar_file.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Jar file reader
4 
5 Author: Diffblue Ltd
6 
7 \*******************************************************************/
8 
9 #ifndef CPROVER_JAVA_BYTECODE_JAR_FILE_H
10 #define CPROVER_JAVA_BYTECODE_JAR_FILE_H
11 
12 #include <unordered_map>
13 #include <memory>
14 #include <string>
15 #include <vector>
16 
17 #include <util/optional.h>
18 
19 #include "mz_zip_archive.h"
20 
23 class jar_filet final
24 {
25 public:
29  explicit jar_filet(const std::string &filename);
30 
35  jar_filet(const void *data, size_t size);
36 
37  jar_filet(const jar_filet &)=delete;
38  jar_filet &operator=(const jar_filet &)=delete;
39  jar_filet(jar_filet &&);
41  ~jar_filet()=default;
42 
46  optionalt<std::string> get_entry(const std::string &filename);
47 
50  std::unordered_map<std::string, std::string> get_manifest();
51 
53  std::vector<std::string> filenames() const;
54 
55 private:
58  void initialize_file_index();
59 
61 
63  std::unordered_map<std::string, size_t> m_name_to_index;
64 };
65 
66 #endif // CPROVER_JAVA_BYTECODE_JAR_FILE_H
jar_filet::m_name_to_index
std::unordered_map< std::string, size_t > m_name_to_index
Map of filename to the file index in the zip archive.
Definition: jar_file.h:63
mz_zip_archive.h
optional.h
jar_filet::operator=
jar_filet & operator=(const jar_filet &)=delete
data
Definition: kdev_t.h:24
jar_filet::filenames
std::vector< std::string > filenames() const
Get list of filenames in the archive.
Definition: jar_file.cpp:127
jar_filet::m_zip_archive
mz_zip_archivet m_zip_archive
Definition: jar_file.h:60
optionalt
nonstd::optional< T > optionalt
Definition: optional.h:35
jar_filet::jar_filet
jar_filet(const jar_filet &)=delete
jar_filet::get_manifest
std::unordered_map< std::string, std::string > get_manifest()
Get contents of the Manifest file in the jar archive as a key-value map (both as strings)
Definition: jar_file.cpp:103
jar_filet::~jar_filet
~jar_filet()=default
jar_filet
Class representing a .jar archive.
Definition: jar_file.h:24
jar_filet::jar_filet
jar_filet(const std::string &filename)
Open java file for reading.
Definition: jar_file.cpp:28
jar_filet::get_entry
optionalt< std::string > get_entry(const std::string &filename)
Get contents of a file in the jar archive.
Definition: jar_file.cpp:61
jar_filet::initialize_file_index
void initialize_file_index()
Loads the fileindex (m_name_to_index) with a map of loaded files to indices.
Definition: jar_file.cpp:19
mz_zip_archivet
Thin object-oriented wrapper around the MZ Zip library Zip file reader and extractor.
Definition: mz_zip_archive.h:21