blob: 5b39bfccfa659f78a10bef2f6cc836c736bc0cf1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
// Copyright 2011 Google Inc. All Rights Reserved.
#include "src/dex_file.h"
#include "src/heap.h"
#include "src/globals.h"
#include "src/logging.h"
#include "src/object.h"
#include "src/raw_dex_file.h"
namespace art {
DexFile* DexFile::OpenFile(const char* filename) {
RawDexFile* raw = RawDexFile::OpenFile(filename);
return Open(raw);
}
DexFile* DexFile::OpenBase64(const char* base64) {
RawDexFile* raw = RawDexFile::OpenBase64(base64);
return Open(raw);
}
DexFile* DexFile::Open(RawDexFile* raw) {
if (raw == NULL) {
return NULL;
}
DexFile* dex_file = new DexFile(raw);
dex_file->Init();
return dex_file;
}
DexFile::~DexFile() {
delete[] strings_;
delete[] classes_;
delete[] methods_;
delete[] fields_;
}
void DexFile::Init() {
num_strings_ = raw_->NumStringIds();
strings_ = new String*[num_strings_]();
num_classes_ = raw_->NumTypeIds();
classes_ = new Class*[num_classes_]();
num_methods_ = raw_->NumMethodIds();
methods_ = new Method*[num_methods_]();
num_fields_ = raw_->NumFieldIds();
fields_ = new Field*[num_fields_]();
}
} // namespace art
|