~ppsspp/ppsspp/ppsspp_1.3.0

« back to all changes in this revision

Viewing changes to Core/ELF/PBPReader.h

  • Committer: Sérgio Benjamim
  • Date: 2017-01-02 00:12:05 UTC
  • Revision ID: sergio_br2@yahoo.com.br-20170102001205-cxbta9za203nmjwm
1.3.0 source (from ppsspp_1.3.0-r160.p5.l1762.a165.t83~56~ubuntu16.04.1.tar.xz).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) 2013- PPSSPP Project.
 
2
 
 
3
// This program is free software: you can redistribute it and/or modify
 
4
// it under the terms of the GNU General Public License as published by
 
5
// the Free Software Foundation, version 2.0 or later versions.
 
6
 
 
7
// This program is distributed in the hope that it will be useful,
 
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
10
// GNU General Public License 2.0 for more details.
 
11
 
 
12
// A copy of the GPL 2.0 should have been included with the program.
 
13
// If not, see http://www.gnu.org/licenses/
 
14
 
 
15
// Official git repository and contact information can be found at
 
16
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
 
17
 
 
18
 
 
19
#pragma once
 
20
 
 
21
#include "Common/Common.h"
 
22
 
 
23
enum PBPSubFile {
 
24
        PBP_PARAM_SFO,
 
25
        PBP_ICON0_PNG,
 
26
        PBP_ICON1_PMF,
 
27
        PBP_PIC0_PNG,
 
28
        PBP_PIC1_PNG,
 
29
        PBP_SND0_AT3,
 
30
        PBP_EXECUTABLE_PSP,
 
31
        PBP_UNKNOWN_PSAR,
 
32
};
 
33
 
 
34
struct PBPHeader {
 
35
        char magic[4];
 
36
        u32_le version;
 
37
        u32_le offsets[8];
 
38
};
 
39
 
 
40
class FileLoader;
 
41
 
 
42
class PBPReader {
 
43
public:
 
44
        PBPReader(FileLoader *fileLoader);
 
45
        ~PBPReader();
 
46
 
 
47
        bool IsValid() const { return file_ != nullptr; }
 
48
        bool IsELF() const { return file_ == nullptr && isELF_; }
 
49
 
 
50
        bool GetSubFile(PBPSubFile file, std::vector<u8> *out);
 
51
        void GetSubFileAsString(PBPSubFile file, std::string *out);
 
52
 
 
53
        size_t GetSubFileSize(PBPSubFile file) {
 
54
                int num = (int)file;
 
55
                if (num < 7) {
 
56
                        return header_.offsets[file + 1] - header_.offsets[file];
 
57
                } else {
 
58
                        return fileSize_ - header_.offsets[file];
 
59
                }
 
60
        }
 
61
 
 
62
private:
 
63
        FileLoader *file_;
 
64
        size_t fileSize_;
 
65
        const PBPHeader header_;
 
66
        bool isELF_;
 
67
};