summaryrefslogtreecommitdiff
path: root/lang/rust/rusttypes.h
blob: 419e5253a484cc00c772df1467cdb0cd5c4110ec (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
#pragma once

#include "binaryninjaapi.h"

class RustTypePrinter: public BinaryNinja::TypePrinter
{
	void AppendCallingConventionTokens(BinaryNinja::Type* type, BinaryNinja::Platform* platform, uint8_t baseConfidence,
		std::vector<BinaryNinja::InstructionTextToken>& tokens);
	void GetStructureMemberTokens(BinaryNinja::Platform* platform, BinaryNinja::Type* type, uint8_t baseConfidence,
		BNTokenEscapingType escaping, std::vector<BinaryNinja::InstructionTextToken>& out);

public:
	RustTypePrinter();

	std::vector<BinaryNinja::InstructionTextToken> GetTypeTokensBeforeName(
		BinaryNinja::Ref<BinaryNinja::Type> type, BinaryNinja::Ref<BinaryNinja::Platform> platform,
		uint8_t baseConfidence = BN_FULL_CONFIDENCE, BinaryNinja::Ref<BinaryNinja::Type> parentType = nullptr,
		BNTokenEscapingType escaping = NoTokenEscapingType) override;
	std::vector<BinaryNinja::InstructionTextToken> GetTypeTokensAfterName(
		BinaryNinja::Ref<BinaryNinja::Type> type, BinaryNinja::Ref<BinaryNinja::Platform> platform,
		uint8_t baseConfidence = BN_FULL_CONFIDENCE, BinaryNinja::Ref<BinaryNinja::Type> parentType = nullptr,
		BNTokenEscapingType escaping = NoTokenEscapingType) override;
	std::vector<BinaryNinja::TypeDefinitionLine> GetTypeLines(
		BinaryNinja::Ref<BinaryNinja::Type> type, const BinaryNinja::TypeContainer& types,
		const BinaryNinja::QualifiedName& name, int paddingCols = 64, bool collapsed = false,
		BNTokenEscapingType escaping = NoTokenEscapingType) override;

	std::vector<BinaryNinja::InstructionTextToken> GetTypeTokensAfterNameInternal(
		BinaryNinja::Ref<BinaryNinja::Type> type, BinaryNinja::Ref<BinaryNinja::Platform> platform,
		uint8_t baseConfidence = BN_FULL_CONFIDENCE, BinaryNinja::Ref<BinaryNinja::Type> parentType = nullptr,
		BNTokenEscapingType escaping = NoTokenEscapingType, bool functionHeader = false);
};