23#include "LIEF/visibility.h"
24#include "LIEF/visitor_macros.hpp"
31LIEF_ABSTRACT_FORWARD(Binary)
32LIEF_ABSTRACT_FORWARD(Header)
33LIEF_ABSTRACT_FORWARD(Section)
34LIEF_ABSTRACT_FORWARD(Symbol)
35LIEF_ABSTRACT_FORWARD(Relocation)
36LIEF_ABSTRACT_FORWARD(Function)
40LIEF_PE_FORWARD(Binary)
41LIEF_PE_FORWARD(DelayImport)
42LIEF_PE_FORWARD(DelayImportEntry)
43LIEF_PE_FORWARD(DosHeader)
44LIEF_PE_FORWARD(Header)
45LIEF_PE_FORWARD(OptionalHeader)
46LIEF_PE_FORWARD(RichHeader)
47LIEF_PE_FORWARD(RichEntry)
48LIEF_PE_FORWARD(DataDirectory)
49LIEF_PE_FORWARD(Section)
50LIEF_PE_FORWARD(Relocation)
51LIEF_PE_FORWARD(RelocationEntry)
52LIEF_PE_FORWARD(Export)
53LIEF_PE_FORWARD(ExportEntry)
55LIEF_PE_FORWARD(Symbol)
57LIEF_PE_FORWARD(CodeView)
58LIEF_PE_FORWARD(CodeViewPDB)
59LIEF_PE_FORWARD(Import)
60LIEF_PE_FORWARD(ImportEntry)
61LIEF_PE_FORWARD(ResourceNode)
62LIEF_PE_FORWARD(ResourceData)
63LIEF_PE_FORWARD(ResourceDirectory)
64LIEF_PE_FORWARD(ResourcesManager)
65LIEF_PE_FORWARD(ResourceVersion)
66LIEF_PE_FORWARD(ResourceStringFileInfo)
67LIEF_PE_FORWARD(ResourceFixedFileInfo)
68LIEF_PE_FORWARD(ResourceVarFileInfo)
69LIEF_PE_FORWARD(LangCodeItem)
70LIEF_PE_FORWARD(ResourceIcon)
71LIEF_PE_FORWARD(ResourceDialog)
72LIEF_PE_FORWARD(ResourceDialogItem)
73LIEF_PE_FORWARD(ResourceStringTable)
74LIEF_PE_FORWARD(ResourceAccelerator)
76LIEF_PE_FORWARD(Signature)
78LIEF_PE_FORWARD(SignerInfo)
79LIEF_PE_FORWARD(ContentInfo)
80LIEF_PE_FORWARD(GenericContent)
81LIEF_PE_FORWARD(SpcIndirectData)
82LIEF_PE_FORWARD(Attribute)
83LIEF_PE_FORWARD(ContentType)
84LIEF_PE_FORWARD(GenericType)
86LIEF_PE_FORWARD(MsSpcNestedSignature)
87LIEF_PE_FORWARD(MsSpcStatementType)
88LIEF_PE_FORWARD(PKCS9AtSequenceNumber)
89LIEF_PE_FORWARD(PKCS9CounterSignature)
90LIEF_PE_FORWARD(PKCS9MessageDigest)
91LIEF_PE_FORWARD(PKCS9SigningTime)
92LIEF_PE_FORWARD(SpcSpOpusInfo)
94LIEF_PE_FORWARD(CodeIntegrity)
95LIEF_PE_FORWARD(LoadConfiguration)
96LIEF_PE_FORWARD(LoadConfigurationV0)
97LIEF_PE_FORWARD(LoadConfigurationV1)
98LIEF_PE_FORWARD(LoadConfigurationV10)
99LIEF_PE_FORWARD(LoadConfigurationV11)
100LIEF_PE_FORWARD(LoadConfigurationV2)
101LIEF_PE_FORWARD(LoadConfigurationV3)
102LIEF_PE_FORWARD(LoadConfigurationV4)
103LIEF_PE_FORWARD(LoadConfigurationV5)
104LIEF_PE_FORWARD(LoadConfigurationV6)
105LIEF_PE_FORWARD(LoadConfigurationV7)
106LIEF_PE_FORWARD(LoadConfigurationV8)
107LIEF_PE_FORWARD(LoadConfigurationV9)
109LIEF_PE_FORWARD(PogoEntry)
110LIEF_PE_FORWARD(Repro)
114LIEF_ELF_FORWARD(Binary)
115LIEF_ELF_FORWARD(Header)
116LIEF_ELF_FORWARD(Section)
117LIEF_ELF_FORWARD(Segment)
118LIEF_ELF_FORWARD(DynamicEntry)
119LIEF_ELF_FORWARD(DynamicEntryArray)
120LIEF_ELF_FORWARD(DynamicEntryLibrary)
121LIEF_ELF_FORWARD(DynamicSharedObject)
122LIEF_ELF_FORWARD(DynamicEntryRunPath)
123LIEF_ELF_FORWARD(DynamicEntryRpath)
124LIEF_ELF_FORWARD(DynamicEntryFlags)
125LIEF_ELF_FORWARD(Symbol)
126LIEF_ELF_FORWARD(Relocation)
127LIEF_ELF_FORWARD(SymbolVersion)
128LIEF_ELF_FORWARD(SymbolVersionRequirement)
129LIEF_ELF_FORWARD(SymbolVersionDefinition)
130LIEF_ELF_FORWARD(SymbolVersionAux)
131LIEF_ELF_FORWARD(SymbolVersionAuxRequirement)
132LIEF_ELF_FORWARD(Note)
133LIEF_ELF_FORWARD(AndroidIdent)
134LIEF_ELF_FORWARD(NoteAbi)
135LIEF_ELF_FORWARD(NoteGnuProperty)
136LIEF_ELF_FORWARD(CorePrPsInfo)
137LIEF_ELF_FORWARD(CorePrStatus)
138LIEF_ELF_FORWARD(CoreAuxv)
139LIEF_ELF_FORWARD(CoreSigInfo)
140LIEF_ELF_FORWARD(CoreFile)
141LIEF_ELF_FORWARD(GnuHash)
142LIEF_ELF_FORWARD(SysvHash)
147LIEF_MACHO_FORWARD(Binary)
148LIEF_MACHO_FORWARD(Header)
149LIEF_MACHO_FORWARD(LoadCommand)
150LIEF_MACHO_FORWARD(UUIDCommand)
151LIEF_MACHO_FORWARD(SymbolCommand)
152LIEF_MACHO_FORWARD(SegmentCommand)
153LIEF_MACHO_FORWARD(Section)
154LIEF_MACHO_FORWARD(MainCommand)
155LIEF_MACHO_FORWARD(DynamicSymbolCommand)
156LIEF_MACHO_FORWARD(DylinkerCommand)
157LIEF_MACHO_FORWARD(DylibCommand)
158LIEF_MACHO_FORWARD(ThreadCommand)
159LIEF_MACHO_FORWARD(RPathCommand)
160LIEF_MACHO_FORWARD(Symbol)
161LIEF_MACHO_FORWARD(Relocation)
162LIEF_MACHO_FORWARD(RelocationObject)
163LIEF_MACHO_FORWARD(RelocationDyld)
164LIEF_MACHO_FORWARD(RelocationFixup)
165LIEF_MACHO_FORWARD(BindingInfo)
166LIEF_MACHO_FORWARD(DyldBindingInfo)
167LIEF_MACHO_FORWARD(DyldExportsTrie)
168LIEF_MACHO_FORWARD(ChainedBindingInfo)
169LIEF_MACHO_FORWARD(ExportInfo)
170LIEF_MACHO_FORWARD(FunctionStarts)
171LIEF_MACHO_FORWARD(CodeSignature)
172LIEF_MACHO_FORWARD(DataInCode)
173LIEF_MACHO_FORWARD(DataCodeEntry)
174LIEF_MACHO_FORWARD(SourceVersion)
175LIEF_MACHO_FORWARD(VersionMin)
176LIEF_MACHO_FORWARD(SegmentSplitInfo)
177LIEF_MACHO_FORWARD(SubFramework)
178LIEF_MACHO_FORWARD(DyldEnvironment)
179LIEF_MACHO_FORWARD(EncryptionInfo)
180LIEF_MACHO_FORWARD(BuildVersion)
181LIEF_MACHO_FORWARD(BuildToolVersion)
182LIEF_MACHO_FORWARD(FilesetCommand)
183LIEF_MACHO_FORWARD(TwoLevelHints)
184LIEF_MACHO_FORWARD(CodeSignatureDir)
185LIEF_MACHO_FORWARD(LinkerOptHint)
189LIEF_OAT_FORWARD(Binary)
190LIEF_OAT_FORWARD(Header)
191LIEF_OAT_FORWARD(DexFile)
192LIEF_OAT_FORWARD(Method)
193LIEF_OAT_FORWARD(Class)
197LIEF_DEX_FORWARD(File)
198LIEF_DEX_FORWARD(Field)
199LIEF_DEX_FORWARD(Method)
200LIEF_DEX_FORWARD(Header)
201LIEF_DEX_FORWARD(Class)
202LIEF_DEX_FORWARD(CodeInfo)
203LIEF_DEX_FORWARD(Type)
204LIEF_DEX_FORWARD(Prototype)
205LIEF_DEX_FORWARD(MapItem)
206LIEF_DEX_FORWARD(MapList)
210LIEF_VDEX_FORWARD(File)
211LIEF_VDEX_FORWARD(Header)
215LIEF_ART_FORWARD(File)
216LIEF_ART_FORWARD(Header)
224 virtual void operator()();
226 template<
typename Arg1,
typename... Args>
227 void operator()(Arg1&& arg1, Args&&... args);
229 virtual void visit(
const Object&);
252 LIEF_ELF_VISITABLE(
Binary)
253 LIEF_ELF_VISITABLE(
Header)
255 LIEF_ELF_VISITABLE(Segment)
256 LIEF_ELF_VISITABLE(DynamicEntry)
257 LIEF_ELF_VISITABLE(DynamicEntryArray)
258 LIEF_ELF_VISITABLE(DynamicEntryLibrary)
259 LIEF_ELF_VISITABLE(DynamicSharedObject)
260 LIEF_ELF_VISITABLE(DynamicEntryRunPath)
261 LIEF_ELF_VISITABLE(DynamicEntryRpath)
262 LIEF_ELF_VISITABLE(DynamicEntryFlags)
263 LIEF_ELF_VISITABLE(
Symbol)
265 LIEF_ELF_VISITABLE(SymbolVersion)
266 LIEF_ELF_VISITABLE(SymbolVersionRequirement)
267 LIEF_ELF_VISITABLE(SymbolVersionDefinition)
268 LIEF_ELF_VISITABLE(SymbolVersionAux)
269 LIEF_ELF_VISITABLE(SymbolVersionAuxRequirement)
270 LIEF_ELF_VISITABLE(Note)
271 LIEF_ELF_VISITABLE(AndroidIdent)
272 LIEF_ELF_VISITABLE(NoteAbi)
273 LIEF_ELF_VISITABLE(NoteGnuProperty)
274 LIEF_ELF_VISITABLE(CorePrPsInfo)
275 LIEF_ELF_VISITABLE(CorePrStatus)
276 LIEF_ELF_VISITABLE(CoreAuxv)
277 LIEF_ELF_VISITABLE(CoreSigInfo)
278 LIEF_ELF_VISITABLE(CoreFile)
279 LIEF_ELF_VISITABLE(GnuHash)
280 LIEF_ELF_VISITABLE(SysvHash)
288 LIEF_PE_VISITABLE(DosHeader)
291 LIEF_PE_VISITABLE(RichHeader)
294 LIEF_PE_VISITABLE(RichEntry)
300 LIEF_PE_VISITABLE(OptionalHeader)
303 LIEF_PE_VISITABLE(DataDirectory)
306 LIEF_PE_VISITABLE(TLS)
318 LIEF_PE_VISITABLE(RelocationEntry)
321 LIEF_PE_VISITABLE(Export)
324 LIEF_PE_VISITABLE(ExportEntry)
327 LIEF_PE_VISITABLE(Debug)
330 LIEF_PE_VISITABLE(CodeView)
333 LIEF_PE_VISITABLE(CodeViewPDB)
336 LIEF_PE_VISITABLE(Import)
339 LIEF_PE_VISITABLE(ImportEntry)
342 LIEF_PE_VISITABLE(DelayImport)
345 LIEF_PE_VISITABLE(DelayImportEntry)
348 LIEF_PE_VISITABLE(ResourceNode)
351 LIEF_PE_VISITABLE(ResourceData)
354 LIEF_PE_VISITABLE(ResourceDirectory)
357 LIEF_PE_VISITABLE(ResourcesManager)
360 LIEF_PE_VISITABLE(ResourceVersion)
363 LIEF_PE_VISITABLE(ResourceStringFileInfo)
366 LIEF_PE_VISITABLE(ResourceFixedFileInfo)
369 LIEF_PE_VISITABLE(ResourceVarFileInfo)
372 LIEF_PE_VISITABLE(ResourceStringTable)
375 LIEF_PE_VISITABLE(ResourceAccelerator)
378 LIEF_PE_VISITABLE(LangCodeItem)
381 LIEF_PE_VISITABLE(ResourceIcon)
384 LIEF_PE_VISITABLE(ResourceDialog)
387 LIEF_PE_VISITABLE(ResourceDialogItem)
390 LIEF_PE_VISITABLE(Signature)
393 LIEF_PE_VISITABLE(x509)
396 LIEF_PE_VISITABLE(SignerInfo)
399 LIEF_PE_VISITABLE(ContentInfo)
402 LIEF_PE_VISITABLE(Attribute)
405 LIEF_PE_VISITABLE(ContentType)
408 LIEF_PE_VISITABLE(GenericContent)
411 LIEF_PE_VISITABLE(SpcIndirectData)
414 LIEF_PE_VISITABLE(GenericType)
420 LIEF_PE_VISITABLE(MsSpcNestedSignature)
423 LIEF_PE_VISITABLE(MsSpcStatementType)
426 LIEF_PE_VISITABLE(PKCS9AtSequenceNumber)
429 LIEF_PE_VISITABLE(PKCS9CounterSignature)
432 LIEF_PE_VISITABLE(PKCS9MessageDigest)
435 LIEF_PE_VISITABLE(PKCS9SigningTime)
438 LIEF_PE_VISITABLE(SpcSpOpusInfo)
441 LIEF_PE_VISITABLE(LoadConfiguration)
444 LIEF_PE_VISITABLE(LoadConfigurationV0)
447 LIEF_PE_VISITABLE(LoadConfigurationV1)
450 LIEF_PE_VISITABLE(LoadConfigurationV2)
453 LIEF_PE_VISITABLE(LoadConfigurationV3)
456 LIEF_PE_VISITABLE(LoadConfigurationV4)
459 LIEF_PE_VISITABLE(LoadConfigurationV5)
462 LIEF_PE_VISITABLE(LoadConfigurationV6)
465 LIEF_PE_VISITABLE(LoadConfigurationV7)
468 LIEF_PE_VISITABLE(LoadConfigurationV8)
471 LIEF_PE_VISITABLE(LoadConfigurationV9)
474 LIEF_PE_VISITABLE(LoadConfigurationV10)
477 LIEF_PE_VISITABLE(LoadConfigurationV11)
480 LIEF_PE_VISITABLE(CodeIntegrity)
483 LIEF_PE_VISITABLE(Pogo)
486 LIEF_PE_VISITABLE(PogoEntry)
489 LIEF_PE_VISITABLE(Repro)
500 LIEF_MACHO_VISITABLE(LoadCommand)
503 LIEF_MACHO_VISITABLE(UUIDCommand)
506 LIEF_MACHO_VISITABLE(SymbolCommand)
509 LIEF_MACHO_VISITABLE(SegmentCommand)
515 LIEF_MACHO_VISITABLE(MainCommand)
518 LIEF_MACHO_VISITABLE(DynamicSymbolCommand)
521 LIEF_MACHO_VISITABLE(DylinkerCommand)
524 LIEF_MACHO_VISITABLE(DylibCommand)
527 LIEF_MACHO_VISITABLE(ThreadCommand)
530 LIEF_MACHO_VISITABLE(RPathCommand)
539 LIEF_MACHO_VISITABLE(RelocationObject)
542 LIEF_MACHO_VISITABLE(RelocationDyld)
545 LIEF_MACHO_VISITABLE(RelocationFixup)
548 LIEF_MACHO_VISITABLE(BindingInfo)
551 LIEF_MACHO_VISITABLE(DyldBindingInfo)
554 LIEF_MACHO_VISITABLE(ChainedBindingInfo)
557 LIEF_MACHO_VISITABLE(DyldExportsTrie)
560 LIEF_MACHO_VISITABLE(ExportInfo)
563 LIEF_MACHO_VISITABLE(FunctionStarts)
566 LIEF_MACHO_VISITABLE(CodeSignature)
569 LIEF_MACHO_VISITABLE(DataInCode)
572 LIEF_MACHO_VISITABLE(DataCodeEntry)
575 LIEF_MACHO_VISITABLE(SourceVersion)
578 LIEF_MACHO_VISITABLE(VersionMin)
581 LIEF_MACHO_VISITABLE(SegmentSplitInfo)
584 LIEF_MACHO_VISITABLE(SubFramework)
587 LIEF_MACHO_VISITABLE(DyldEnvironment)
590 LIEF_MACHO_VISITABLE(EncryptionInfo)
593 LIEF_MACHO_VISITABLE(BuildVersion)
596 LIEF_MACHO_VISITABLE(BuildToolVersion)
599 LIEF_MACHO_VISITABLE(FilesetCommand)
602 LIEF_MACHO_VISITABLE(CodeSignatureDir)
605 LIEF_MACHO_VISITABLE(TwoLevelHints)
608 LIEF_MACHO_VISITABLE(LinkerOptHint)
620 LIEF_OAT_VISITABLE(DexFile)
623 LIEF_OAT_VISITABLE(Class)
626 LIEF_OAT_VISITABLE(Method)
633 LIEF_DEX_VISITABLE(File)
636 LIEF_DEX_VISITABLE(Field)
639 LIEF_DEX_VISITABLE(Method)
645 LIEF_DEX_VISITABLE(Class)
648 LIEF_DEX_VISITABLE(CodeInfo)
651 LIEF_DEX_VISITABLE(Type)
654 LIEF_DEX_VISITABLE(Prototype)
657 LIEF_DEX_VISITABLE(MapList)
660 LIEF_DEX_VISITABLE(MapItem)
666 LIEF_VDEX_VISITABLE(File)
675 LIEF_ART_VISITABLE(File)
681 void dispatch(const T& obj);
685 std::set<
size_t> visited_;
690template<typename Arg1, typename... Args>
691void Visitor::operator()(Arg1&& arg1, Args&&... args) {
692 dispatch(std::forward<Arg1>(arg1));
693 operator()(std::forward<Args>(args)... );
697void Visitor::dispatch(
const T& obj) {
698 auto hash =
reinterpret_cast<size_t>(&obj);
699 if (visited_.find(hash) != std::end(visited_)) {
704 visited_.insert(hash);
Abstract binary that exposes an uniform API for the different executable file formats.
Definition Abstract/Binary.hpp:39
Class that represents a function in the binary.
Definition Function.hpp:29
Class which represents an abstracted Relocation.
Definition Abstract/Relocation.hpp:27
Class which represents an abstracted section.
Definition Abstract/Section.hpp:30
This class represents a symbol in an executable format.
Definition Abstract/Symbol.hpp:28
Definition Visitor.hpp:219
LIEF namespace.
Definition Abstract/Binary.hpp:32