summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/DSCView.h
blob: 1b891e369b5c711d9566a58c44e6aa4e46e35e3e (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
53
54
55
56
57
58
59
60
61
62
63
64
65
//
// Created by kat on 5/23/23.
//

#ifndef SHAREDCACHE_DSCVIEW_H
#define SHAREDCACHE_DSCVIEW_H

#include <binaryninjaapi.h>

class DSCRawView : public BinaryNinja::BinaryView {
    std::string m_filename;
public:

    DSCRawView(const std::string &typeName, BinaryView *data, bool parseOnly = false);

    bool Init() override;
};


class DSCRawViewType : public BinaryNinja::BinaryViewType {

public:
    BinaryNinja::Ref<BinaryNinja::BinaryView> Create(BinaryNinja::BinaryView* data) override;
    BinaryNinja::Ref<BinaryNinja::BinaryView> Parse(BinaryNinja::BinaryView* data) override;
    bool IsTypeValidForData(BinaryNinja::BinaryView *data) override;

    bool IsDeprecated() override { return false; }

    BinaryNinja::Ref<BinaryNinja::Settings> GetLoadSettingsForData(BinaryNinja::BinaryView *data) override { return nullptr; }

public:
    DSCRawViewType();
};


class DSCView : public BinaryNinja::BinaryView {
	bool m_parseOnly;
public:

    DSCView(const std::string &typeName, BinaryView *data, bool parseOnly = false);

	~DSCView() override;

    bool Init() override;
};


class DSCViewType : public BinaryNinja::BinaryViewType {

public:
    DSCViewType();

    BinaryNinja::Ref<BinaryNinja::BinaryView> Create(BinaryNinja::BinaryView *data) override;

    BinaryNinja::Ref<BinaryNinja::BinaryView> Parse(BinaryNinja::BinaryView *data) override;

    bool IsTypeValidForData(BinaryNinja::BinaryView *data) override;

    bool IsDeprecated() override { return false; }

    BinaryNinja::Ref<BinaryNinja::Settings> GetLoadSettingsForData(BinaryNinja::BinaryView *data) override;
};


#endif //SHAREDCACHE_DSCVIEW_H