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