6#ifndef ROSE_BinaryAnalysis_Serialization_FlatBufferSchema_H
7#define ROSE_BinaryAnalysis_Serialization_FlatBufferSchema_H
9#include "flatbuffers/flatbuffers.h"
13static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
14 FLATBUFFERS_VERSION_MINOR == 9 &&
15 FLATBUFFERS_VERSION_REVISION == 23,
16 "Non-compatible flatbuffers version included");
19namespace BinaryAnalysis {
20namespace Serialization {
21namespace FlatBuffers {
24struct ArchitectureBuilder;
30struct MemoryMapBuilder;
33struct InstructionBuilder;
35struct InstructionList;
36struct InstructionListBuilder;
39struct BasicBlockBuilder;
42struct BasicBlockListBuilder;
45struct FunctionBuilder;
48struct FunctionListBuilder;
51struct CfgEdgeDataBuilder;
54struct AddressTargetBuilder;
56struct IndeterminateTarget;
57struct IndeterminateTargetBuilder;
72enum class Accessibility : uint8_t {
82inline const Accessibility (&EnumValuesAccessibility())[5] {
83 static const Accessibility values[] = {
84 Accessibility::EXECUTABLE,
85 Accessibility::WRITABLE,
86 Accessibility::READABLE,
87 Accessibility::IMMUTABLE,
88 Accessibility::PRIVATE
93inline const char *
const *EnumNamesAccessibility() {
94 static const char *
const names[17] = {
116inline const char *EnumNameAccessibility(Accessibility e) {
117 if (::flatbuffers::IsOutRange(e, Accessibility::EXECUTABLE, Accessibility::PRIVATE))
return "";
118 const size_t index =
static_cast<size_t>(e) -
static_cast<size_t>(Accessibility::EXECUTABLE);
119 return EnumNamesAccessibility()[index];
130inline const Endianness (&EnumValuesEndianness())[3] {
132 Endianness::ORDER_UNSPECIFIED,
133 Endianness::ORDER_LSB,
134 Endianness::ORDER_MSB
139inline const char *
const *EnumNamesEndianness() {
140 static const char *
const names[4] = {
149inline const char *EnumNameEndianness(Endianness e) {
150 if (::flatbuffers::IsOutRange(e, Endianness::ORDER_UNSPECIFIED, Endianness::ORDER_MSB))
return "";
151 const size_t index =
static_cast<size_t>(e);
152 return EnumNamesEndianness()[index];
158enum class CfgEdgePurpose : uint8_t {
160 FunctionTransfer = 1,
168inline const CfgEdgePurpose (&EnumValuesCfgEdgePurpose())[5] {
169 static const CfgEdgePurpose values[] = {
170 CfgEdgePurpose::FunctionCall,
171 CfgEdgePurpose::FunctionTransfer,
172 CfgEdgePurpose::FunctionReturn,
173 CfgEdgePurpose::CallReturn,
174 CfgEdgePurpose::Normal
179inline const char *
const *EnumNamesCfgEdgePurpose() {
180 static const char *
const names[6] = {
191inline const char *EnumNameCfgEdgePurpose(CfgEdgePurpose e) {
192 if (::flatbuffers::IsOutRange(e, CfgEdgePurpose::FunctionCall, CfgEdgePurpose::Normal))
return "";
193 const size_t index =
static_cast<size_t>(e);
194 return EnumNamesCfgEdgePurpose()[index];
199enum class CfgEdgeTarget : uint8_t {
202 IndeterminateTarget = 2,
204 MAX = IndeterminateTarget
207inline const CfgEdgeTarget (&EnumValuesCfgEdgeTarget())[3] {
208 static const CfgEdgeTarget values[] = {
210 CfgEdgeTarget::AddressTarget,
211 CfgEdgeTarget::IndeterminateTarget
216inline const char *
const *EnumNamesCfgEdgeTarget() {
217 static const char *
const names[4] = {
220 "IndeterminateTarget",
226inline const char *EnumNameCfgEdgeTarget(CfgEdgeTarget e) {
227 if (::flatbuffers::IsOutRange(e, CfgEdgeTarget::NONE, CfgEdgeTarget::IndeterminateTarget))
return "";
228 const size_t index =
static_cast<size_t>(e);
229 return EnumNamesCfgEdgeTarget()[index];
233 static const CfgEdgeTarget enum_value = CfgEdgeTarget::NONE;
237 static const CfgEdgeTarget enum_value = CfgEdgeTarget::AddressTarget;
241 static const CfgEdgeTarget enum_value = CfgEdgeTarget::IndeterminateTarget;
244bool VerifyCfgEdgeTarget(::flatbuffers::Verifier &verifier,
const void *obj, CfgEdgeTarget type);
245bool VerifyCfgEdgeTargetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset<void>> *values, const ::flatbuffers::Vector<CfgEdgeTarget> *types);
252 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
255 const ::flatbuffers::String *name()
const {
256 return GetPointer<const ::flatbuffers::String *>(VT_NAME);
258 bool Verify(::flatbuffers::Verifier &verifier)
const {
259 return VerifyTableStart(verifier) &&
260 VerifyOffset(verifier, VT_NAME) &&
261 verifier.VerifyString(name()) &&
267 typedef Architecture Table;
268 ::flatbuffers::FlatBufferBuilder &fbb_;
269 ::flatbuffers::uoffset_t start_;
270 void add_name(::flatbuffers::Offset<::flatbuffers::String> name) {
271 fbb_.AddOffset(Architecture::VT_NAME, name);
275 start_ = fbb_.StartTable();
277 ::flatbuffers::Offset<Architecture> Finish() {
278 const auto end = fbb_.EndTable(start_);
279 auto o = ::flatbuffers::Offset<Architecture>(end);
284inline ::flatbuffers::Offset<Architecture> CreateArchitecture(
285 ::flatbuffers::FlatBufferBuilder &_fbb,
286 ::flatbuffers::Offset<::flatbuffers::String> name = 0) {
288 builder_.add_name(name);
289 return builder_.Finish();
292inline ::flatbuffers::Offset<Architecture> CreateArchitectureDirect(
293 ::flatbuffers::FlatBufferBuilder &_fbb,
294 const char *name =
nullptr) {
295 auto name__ = name ? _fbb.CreateString(name) : 0;
296 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateArchitecture(
301struct Segment FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
302 typedef SegmentBuilder Builder;
303 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
306 VT_ACCESSIBILITY = 8,
309 uint64_t address()
const {
310 return GetField<uint64_t>(VT_ADDRESS, 0);
312 const ::flatbuffers::Vector<uint8_t> *bytes()
const {
313 return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_BYTES);
317 return GetField<uint8_t>(VT_ACCESSIBILITY, 0);
320 const ::flatbuffers::String *
name()
const {
321 return GetPointer<const ::flatbuffers::String *>(VT_NAME);
323 bool Verify(::flatbuffers::Verifier &verifier)
const {
324 return VerifyTableStart(verifier) &&
325 VerifyField<uint64_t>(verifier, VT_ADDRESS, 8) &&
326 VerifyOffsetRequired(verifier, VT_BYTES) &&
327 verifier.VerifyVector(bytes()) &&
328 VerifyField<uint8_t>(verifier, VT_ACCESSIBILITY, 1) &&
329 VerifyOffset(verifier, VT_NAME) &&
330 verifier.VerifyString(name()) &&
336 typedef Segment Table;
337 ::flatbuffers::FlatBufferBuilder &fbb_;
338 ::flatbuffers::uoffset_t start_;
339 void add_address(uint64_t address) {
340 fbb_.AddElement<uint64_t>(Segment::VT_ADDRESS, address, 0);
342 void add_bytes(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> bytes) {
343 fbb_.AddOffset(Segment::VT_BYTES, bytes);
345 void add_accessibility(uint8_t accessibility) {
346 fbb_.AddElement<uint8_t>(Segment::VT_ACCESSIBILITY, accessibility, 0);
348 void add_name(::flatbuffers::Offset<::flatbuffers::String> name) {
349 fbb_.AddOffset(Segment::VT_NAME, name);
353 start_ = fbb_.StartTable();
355 ::flatbuffers::Offset<Segment> Finish() {
356 const auto end = fbb_.EndTable(start_);
357 auto o = ::flatbuffers::Offset<Segment>(end);
358 fbb_.Required(o, Segment::VT_BYTES);
363inline ::flatbuffers::Offset<Segment> CreateSegment(
364 ::flatbuffers::FlatBufferBuilder &_fbb,
365 uint64_t address = 0,
366 ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> bytes = 0,
367 uint8_t accessibility = 0,
368 ::flatbuffers::Offset<::flatbuffers::String> name = 0) {
370 builder_.add_address(address);
371 builder_.add_name(name);
372 builder_.add_bytes(bytes);
373 builder_.add_accessibility(accessibility);
374 return builder_.Finish();
377inline ::flatbuffers::Offset<Segment> CreateSegmentDirect(
378 ::flatbuffers::FlatBufferBuilder &_fbb,
379 uint64_t address = 0,
380 const std::vector<uint8_t> *bytes =
nullptr,
381 uint8_t accessibility = 0,
382 const char *name =
nullptr) {
383 auto bytes__ = bytes ? _fbb.CreateVector<uint8_t>(*bytes) : 0;
384 auto name__ = name ? _fbb.CreateString(name) : 0;
385 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateSegment(
393struct MemoryMap FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
394 typedef MemoryMapBuilder Builder;
395 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
399 Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness endianness()
const {
400 return static_cast<Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness
>(GetField<uint8_t>(VT_ENDIANNESS, 0));
402 const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>> *segments()
const {
403 return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>> *>(VT_SEGMENTS);
405 bool Verify(::flatbuffers::Verifier &verifier)
const {
406 return VerifyTableStart(verifier) &&
407 VerifyField<uint8_t>(verifier, VT_ENDIANNESS, 1) &&
408 VerifyOffsetRequired(verifier, VT_SEGMENTS) &&
409 verifier.VerifyVector(segments()) &&
410 verifier.VerifyVectorOfTables(segments()) &&
417 ::flatbuffers::FlatBufferBuilder &fbb_;
418 ::flatbuffers::uoffset_t start_;
419 void add_endianness(Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness endianness) {
420 fbb_.AddElement<uint8_t>(MemoryMap::VT_ENDIANNESS,
static_cast<uint8_t
>(endianness), 0);
422 void add_segments(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>>> segments) {
423 fbb_.AddOffset(MemoryMap::VT_SEGMENTS, segments);
427 start_ = fbb_.StartTable();
429 ::flatbuffers::Offset<MemoryMap> Finish() {
430 const auto end = fbb_.EndTable(start_);
431 auto o = ::flatbuffers::Offset<MemoryMap>(end);
432 fbb_.Required(o, MemoryMap::VT_SEGMENTS);
437inline ::flatbuffers::Offset<MemoryMap> CreateMemoryMap(
438 ::flatbuffers::FlatBufferBuilder &_fbb,
439 Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness endianness = Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness::ORDER_UNSPECIFIED,
440 ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>>> segments = 0) {
442 builder_.add_segments(segments);
443 builder_.add_endianness(endianness);
444 return builder_.Finish();
447inline ::flatbuffers::Offset<MemoryMap> CreateMemoryMapDirect(
448 ::flatbuffers::FlatBufferBuilder &_fbb,
449 Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness endianness = Rose::BinaryAnalysis::Serialization::FlatBuffers::Endianness::ORDER_UNSPECIFIED,
450 const std::vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>> *segments =
nullptr) {
451 auto segments__ = segments ? _fbb.CreateVector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Segment>>(*segments) : 0;
452 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateMemoryMap(
462struct Instruction FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
463 typedef InstructionBuilder Builder;
464 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
470 uint64_t address()
const {
471 return GetField<uint64_t>(VT_ADDRESS, 0);
473 const ::flatbuffers::Vector<uint8_t> *bytes()
const {
474 return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_BYTES);
478 return GetPointer<const ::flatbuffers::String *>(VT_MNEMONIC);
482 return GetPointer<const ::flatbuffers::String *>(VT_OPERANDS);
484 bool Verify(::flatbuffers::Verifier &verifier)
const {
485 return VerifyTableStart(verifier) &&
486 VerifyField<uint64_t>(verifier, VT_ADDRESS, 8) &&
487 VerifyOffsetRequired(verifier, VT_BYTES) &&
488 verifier.VerifyVector(bytes()) &&
489 VerifyOffset(verifier, VT_MNEMONIC) &&
490 verifier.VerifyString(mnemonic()) &&
491 VerifyOffset(verifier, VT_OPERANDS) &&
492 verifier.VerifyString(operands()) &&
498 typedef Instruction Table;
499 ::flatbuffers::FlatBufferBuilder &fbb_;
500 ::flatbuffers::uoffset_t start_;
501 void add_address(uint64_t address) {
502 fbb_.AddElement<uint64_t>(Instruction::VT_ADDRESS, address, 0);
504 void add_bytes(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> bytes) {
505 fbb_.AddOffset(Instruction::VT_BYTES, bytes);
507 void add_mnemonic(::flatbuffers::Offset<::flatbuffers::String> mnemonic) {
508 fbb_.AddOffset(Instruction::VT_MNEMONIC, mnemonic);
510 void add_operands(::flatbuffers::Offset<::flatbuffers::String> operands) {
511 fbb_.AddOffset(Instruction::VT_OPERANDS, operands);
515 start_ = fbb_.StartTable();
517 ::flatbuffers::Offset<Instruction> Finish() {
518 const auto end = fbb_.EndTable(start_);
519 auto o = ::flatbuffers::Offset<Instruction>(end);
520 fbb_.Required(o, Instruction::VT_BYTES);
525inline ::flatbuffers::Offset<Instruction> CreateInstruction(
526 ::flatbuffers::FlatBufferBuilder &_fbb,
527 uint64_t address = 0,
528 ::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> bytes = 0,
529 ::flatbuffers::Offset<::flatbuffers::String> mnemonic = 0,
530 ::flatbuffers::Offset<::flatbuffers::String> operands = 0) {
532 builder_.add_address(address);
533 builder_.add_operands(operands);
534 builder_.add_mnemonic(mnemonic);
535 builder_.add_bytes(bytes);
536 return builder_.Finish();
539inline ::flatbuffers::Offset<Instruction> CreateInstructionDirect(
540 ::flatbuffers::FlatBufferBuilder &_fbb,
541 uint64_t address = 0,
542 const std::vector<uint8_t> *bytes =
nullptr,
543 const char *mnemonic =
nullptr,
544 const char *operands =
nullptr) {
545 auto bytes__ = bytes ? _fbb.CreateVector<uint8_t>(*bytes) : 0;
546 auto mnemonic__ = mnemonic ? _fbb.CreateString(mnemonic) : 0;
547 auto operands__ = operands ? _fbb.CreateString(operands) : 0;
548 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateInstruction(
557struct InstructionList FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
558 typedef InstructionListBuilder Builder;
559 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
562 const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>> *instructions()
const {
563 return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>> *>(VT_INSTRUCTIONS);
565 bool Verify(::flatbuffers::Verifier &verifier)
const {
566 return VerifyTableStart(verifier) &&
567 VerifyOffsetRequired(verifier, VT_INSTRUCTIONS) &&
568 verifier.VerifyVector(instructions()) &&
569 verifier.VerifyVectorOfTables(instructions()) &&
575 typedef InstructionList Table;
576 ::flatbuffers::FlatBufferBuilder &fbb_;
577 ::flatbuffers::uoffset_t start_;
578 void add_instructions(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>>> instructions) {
579 fbb_.AddOffset(InstructionList::VT_INSTRUCTIONS, instructions);
583 start_ = fbb_.StartTable();
585 ::flatbuffers::Offset<InstructionList> Finish() {
586 const auto end = fbb_.EndTable(start_);
587 auto o = ::flatbuffers::Offset<InstructionList>(end);
588 fbb_.Required(o, InstructionList::VT_INSTRUCTIONS);
593inline ::flatbuffers::Offset<InstructionList> CreateInstructionList(
594 ::flatbuffers::FlatBufferBuilder &_fbb,
595 ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>>> instructions = 0) {
597 builder_.add_instructions(instructions);
598 return builder_.Finish();
601inline ::flatbuffers::Offset<InstructionList> CreateInstructionListDirect(
602 ::flatbuffers::FlatBufferBuilder &_fbb,
603 const std::vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>> *instructions =
nullptr) {
604 auto instructions__ = instructions ? _fbb.CreateVector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Instruction>>(*instructions) : 0;
605 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateInstructionList(
615struct BasicBlock FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
616 typedef BasicBlockBuilder Builder;
617 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
621 const ::flatbuffers::Vector<uint64_t> *
addresses()
const {
622 return GetPointer<const ::flatbuffers::Vector<uint64_t> *>(VT_ADDRESSES);
624 bool Verify(::flatbuffers::Verifier &verifier)
const {
625 return VerifyTableStart(verifier) &&
626 VerifyOffsetRequired(verifier, VT_ADDRESSES) &&
627 verifier.VerifyVector(addresses()) &&
633 typedef BasicBlock Table;
634 ::flatbuffers::FlatBufferBuilder &fbb_;
635 ::flatbuffers::uoffset_t start_;
636 void add_addresses(::flatbuffers::Offset<::flatbuffers::Vector<uint64_t>> addresses) {
637 fbb_.AddOffset(BasicBlock::VT_ADDRESSES, addresses);
641 start_ = fbb_.StartTable();
643 ::flatbuffers::Offset<BasicBlock> Finish() {
644 const auto end = fbb_.EndTable(start_);
645 auto o = ::flatbuffers::Offset<BasicBlock>(end);
646 fbb_.Required(o, BasicBlock::VT_ADDRESSES);
651inline ::flatbuffers::Offset<BasicBlock> CreateBasicBlock(
652 ::flatbuffers::FlatBufferBuilder &_fbb,
653 ::flatbuffers::Offset<::flatbuffers::Vector<uint64_t>> addresses = 0) {
655 builder_.add_addresses(addresses);
656 return builder_.Finish();
659inline ::flatbuffers::Offset<BasicBlock> CreateBasicBlockDirect(
660 ::flatbuffers::FlatBufferBuilder &_fbb,
661 const std::vector<uint64_t> *addresses =
nullptr) {
662 auto addresses__ = addresses ? _fbb.CreateVector<uint64_t>(*addresses) : 0;
663 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateBasicBlock(
669struct BasicBlockList FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
670 typedef BasicBlockListBuilder Builder;
671 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
675 const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>> *
basic_blocks()
const {
676 return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>> *>(VT_BASIC_BLOCKS);
678 bool Verify(::flatbuffers::Verifier &verifier)
const {
679 return VerifyTableStart(verifier) &&
680 VerifyOffsetRequired(verifier, VT_BASIC_BLOCKS) &&
681 verifier.VerifyVector(basic_blocks()) &&
682 verifier.VerifyVectorOfTables(basic_blocks()) &&
688 typedef BasicBlockList Table;
689 ::flatbuffers::FlatBufferBuilder &fbb_;
690 ::flatbuffers::uoffset_t start_;
691 void add_basic_blocks(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>>> basic_blocks) {
692 fbb_.AddOffset(BasicBlockList::VT_BASIC_BLOCKS, basic_blocks);
696 start_ = fbb_.StartTable();
698 ::flatbuffers::Offset<BasicBlockList> Finish() {
699 const auto end = fbb_.EndTable(start_);
700 auto o = ::flatbuffers::Offset<BasicBlockList>(end);
701 fbb_.Required(o, BasicBlockList::VT_BASIC_BLOCKS);
706inline ::flatbuffers::Offset<BasicBlockList> CreateBasicBlockList(
707 ::flatbuffers::FlatBufferBuilder &_fbb,
708 ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>>> basic_blocks = 0) {
710 builder_.add_basic_blocks(basic_blocks);
711 return builder_.Finish();
714inline ::flatbuffers::Offset<BasicBlockList> CreateBasicBlockListDirect(
715 ::flatbuffers::FlatBufferBuilder &_fbb,
716 const std::vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>> *basic_blocks =
nullptr) {
717 auto basic_blocks__ = basic_blocks ? _fbb.CreateVector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock>>(*basic_blocks) : 0;
718 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateBasicBlockList(
726struct Function FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
727 typedef FunctionBuilder Builder;
728 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
733 uint64_t entry_addr()
const {
734 return GetField<uint64_t>(VT_ENTRY_ADDR, 0);
738 return GetPointer<const ::flatbuffers::Vector<uint64_t> *>(VT_INSTRUCTIONS);
741 const ::flatbuffers::String *
name()
const {
742 return GetPointer<const ::flatbuffers::String *>(VT_NAME);
744 bool Verify(::flatbuffers::Verifier &verifier)
const {
745 return VerifyTableStart(verifier) &&
746 VerifyField<uint64_t>(verifier, VT_ENTRY_ADDR, 8) &&
747 VerifyOffsetRequired(verifier, VT_INSTRUCTIONS) &&
748 verifier.VerifyVector(instructions()) &&
749 VerifyOffset(verifier, VT_NAME) &&
750 verifier.VerifyString(name()) &&
757 ::flatbuffers::FlatBufferBuilder &fbb_;
758 ::flatbuffers::uoffset_t start_;
759 void add_entry_addr(uint64_t entry_addr) {
760 fbb_.AddElement<uint64_t>(Function::VT_ENTRY_ADDR, entry_addr, 0);
762 void add_instructions(::flatbuffers::Offset<::flatbuffers::Vector<uint64_t>> instructions) {
763 fbb_.AddOffset(Function::VT_INSTRUCTIONS, instructions);
765 void add_name(::flatbuffers::Offset<::flatbuffers::String> name) {
766 fbb_.AddOffset(Function::VT_NAME, name);
770 start_ = fbb_.StartTable();
772 ::flatbuffers::Offset<Function> Finish() {
773 const auto end = fbb_.EndTable(start_);
774 auto o = ::flatbuffers::Offset<Function>(end);
775 fbb_.Required(o, Function::VT_INSTRUCTIONS);
780inline ::flatbuffers::Offset<Function> CreateFunction(
781 ::flatbuffers::FlatBufferBuilder &_fbb,
782 uint64_t entry_addr = 0,
783 ::flatbuffers::Offset<::flatbuffers::Vector<uint64_t>> instructions = 0,
784 ::flatbuffers::Offset<::flatbuffers::String> name = 0) {
786 builder_.add_entry_addr(entry_addr);
787 builder_.add_name(name);
788 builder_.add_instructions(instructions);
789 return builder_.Finish();
792inline ::flatbuffers::Offset<Function> CreateFunctionDirect(
793 ::flatbuffers::FlatBufferBuilder &_fbb,
794 uint64_t entry_addr = 0,
795 const std::vector<uint64_t> *instructions =
nullptr,
796 const char *name =
nullptr) {
797 auto instructions__ = instructions ? _fbb.CreateVector<uint64_t>(*instructions) : 0;
798 auto name__ = name ? _fbb.CreateString(name) : 0;
799 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateFunction(
807struct FunctionList FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
808 typedef FunctionListBuilder Builder;
809 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
813 const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>> *
functions()
const {
814 return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>> *>(VT_FUNCTIONS);
816 bool Verify(::flatbuffers::Verifier &verifier)
const {
817 return VerifyTableStart(verifier) &&
818 VerifyOffsetRequired(verifier, VT_FUNCTIONS) &&
819 verifier.VerifyVector(functions()) &&
820 verifier.VerifyVectorOfTables(functions()) &&
826 typedef FunctionList Table;
827 ::flatbuffers::FlatBufferBuilder &fbb_;
828 ::flatbuffers::uoffset_t start_;
829 void add_functions(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>>> functions) {
830 fbb_.AddOffset(FunctionList::VT_FUNCTIONS, functions);
834 start_ = fbb_.StartTable();
836 ::flatbuffers::Offset<FunctionList> Finish() {
837 const auto end = fbb_.EndTable(start_);
838 auto o = ::flatbuffers::Offset<FunctionList>(end);
839 fbb_.Required(o, FunctionList::VT_FUNCTIONS);
844inline ::flatbuffers::Offset<FunctionList> CreateFunctionList(
845 ::flatbuffers::FlatBufferBuilder &_fbb,
846 ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>>> functions = 0) {
848 builder_.add_functions(functions);
849 return builder_.Finish();
852inline ::flatbuffers::Offset<FunctionList> CreateFunctionListDirect(
853 ::flatbuffers::FlatBufferBuilder &_fbb,
854 const std::vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>> *functions =
nullptr) {
855 auto functions__ = functions ? _fbb.CreateVector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Function>>(*functions) : 0;
856 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateFunctionList(
862struct CfgEdgeData FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
863 typedef CfgEdgeDataBuilder Builder;
864 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
867 Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgePurpose purpose()
const {
868 return static_cast<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgePurpose
>(GetField<uint8_t>(VT_PURPOSE, 0));
870 bool Verify(::flatbuffers::Verifier &verifier)
const {
871 return VerifyTableStart(verifier) &&
872 VerifyField<uint8_t>(verifier, VT_PURPOSE, 1) &&
878 typedef CfgEdgeData Table;
879 ::flatbuffers::FlatBufferBuilder &fbb_;
880 ::flatbuffers::uoffset_t start_;
881 void add_purpose(Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgePurpose purpose) {
882 fbb_.AddElement<uint8_t>(CfgEdgeData::VT_PURPOSE,
static_cast<uint8_t
>(purpose), 0);
886 start_ = fbb_.StartTable();
888 ::flatbuffers::Offset<CfgEdgeData> Finish() {
889 const auto end = fbb_.EndTable(start_);
890 auto o = ::flatbuffers::Offset<CfgEdgeData>(end);
895inline ::flatbuffers::Offset<CfgEdgeData> CreateCfgEdgeData(
896 ::flatbuffers::FlatBufferBuilder &_fbb,
897 Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgePurpose purpose = Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgePurpose::FunctionCall) {
899 builder_.add_purpose(purpose);
900 return builder_.Finish();
907struct AddressTarget FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
908 typedef AddressTargetBuilder Builder;
909 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
912 uint64_t address()
const {
913 return GetField<uint64_t>(VT_ADDRESS, 0);
915 bool Verify(::flatbuffers::Verifier &verifier)
const {
916 return VerifyTableStart(verifier) &&
917 VerifyField<uint64_t>(verifier, VT_ADDRESS, 8) &&
923 typedef AddressTarget Table;
924 ::flatbuffers::FlatBufferBuilder &fbb_;
925 ::flatbuffers::uoffset_t start_;
926 void add_address(uint64_t address) {
927 fbb_.AddElement<uint64_t>(AddressTarget::VT_ADDRESS, address, 0);
931 start_ = fbb_.StartTable();
933 ::flatbuffers::Offset<AddressTarget> Finish() {
934 const auto end = fbb_.EndTable(start_);
935 auto o = ::flatbuffers::Offset<AddressTarget>(end);
940inline ::flatbuffers::Offset<AddressTarget> CreateAddressTarget(
941 ::flatbuffers::FlatBufferBuilder &_fbb,
942 uint64_t address = 0) {
944 builder_.add_address(address);
945 return builder_.Finish();
949struct IndeterminateTarget FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
950 typedef IndeterminateTargetBuilder Builder;
951 bool Verify(::flatbuffers::Verifier &verifier)
const {
952 return VerifyTableStart(verifier) &&
958 typedef IndeterminateTarget Table;
959 ::flatbuffers::FlatBufferBuilder &fbb_;
960 ::flatbuffers::uoffset_t start_;
963 start_ = fbb_.StartTable();
965 ::flatbuffers::Offset<IndeterminateTarget> Finish() {
966 const auto end = fbb_.EndTable(start_);
967 auto o = ::flatbuffers::Offset<IndeterminateTarget>(end);
972inline ::flatbuffers::Offset<IndeterminateTarget> CreateIndeterminateTarget(
973 ::flatbuffers::FlatBufferBuilder &_fbb) {
975 return builder_.Finish();
980struct CfgEdge FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
981 typedef CfgEdgeBuilder Builder;
982 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
988 uint64_t src()
const {
989 return GetField<uint64_t>(VT_SRC, 0);
991 Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget tgt_type()
const {
992 return static_cast<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget
>(GetField<uint8_t>(VT_TGT_TYPE, 0));
994 const void *tgt()
const {
995 return GetPointer<const void *>(VT_TGT);
997 template<
typename T>
const T *tgt_as()
const;
998 const Rose::BinaryAnalysis::Serialization::FlatBuffers::AddressTarget *tgt_as_AddressTarget()
const {
999 return tgt_type() == Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget::AddressTarget ?
static_cast<const Rose::BinaryAnalysis::Serialization::FlatBuffers::AddressTarget *
>(tgt()) : nullptr;
1001 const Rose::BinaryAnalysis::Serialization::FlatBuffers::IndeterminateTarget *tgt_as_IndeterminateTarget()
const {
1002 return tgt_type() == Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget::IndeterminateTarget ?
static_cast<const Rose::BinaryAnalysis::Serialization::FlatBuffers::IndeterminateTarget *
>(tgt()) : nullptr;
1004 const Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeData *data()
const {
1005 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeData *>(VT_DATA);
1007 bool Verify(::flatbuffers::Verifier &verifier)
const {
1008 return VerifyTableStart(verifier) &&
1009 VerifyField<uint64_t>(verifier, VT_SRC, 8) &&
1010 VerifyField<uint8_t>(verifier, VT_TGT_TYPE, 1) &&
1011 VerifyOffsetRequired(verifier, VT_TGT) &&
1012 VerifyCfgEdgeTarget(verifier, tgt(), tgt_type()) &&
1013 VerifyOffsetRequired(verifier, VT_DATA) &&
1014 verifier.VerifyTable(data()) &&
1015 verifier.EndTable();
1019template<>
inline const Rose::BinaryAnalysis::Serialization::FlatBuffers::AddressTarget *CfgEdge::tgt_as<Rose::BinaryAnalysis::Serialization::FlatBuffers::AddressTarget>()
const {
1020 return tgt_as_AddressTarget();
1023template<>
inline const Rose::BinaryAnalysis::Serialization::FlatBuffers::IndeterminateTarget *CfgEdge::tgt_as<Rose::BinaryAnalysis::Serialization::FlatBuffers::IndeterminateTarget>()
const {
1024 return tgt_as_IndeterminateTarget();
1028 typedef CfgEdge Table;
1029 ::flatbuffers::FlatBufferBuilder &fbb_;
1030 ::flatbuffers::uoffset_t start_;
1031 void add_src(uint64_t src) {
1032 fbb_.AddElement<uint64_t>(CfgEdge::VT_SRC, src, 0);
1034 void add_tgt_type(Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget tgt_type) {
1035 fbb_.AddElement<uint8_t>(CfgEdge::VT_TGT_TYPE,
static_cast<uint8_t
>(tgt_type), 0);
1037 void add_tgt(::flatbuffers::Offset<void> tgt) {
1038 fbb_.AddOffset(CfgEdge::VT_TGT, tgt);
1040 void add_data(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeData> data) {
1041 fbb_.AddOffset(CfgEdge::VT_DATA, data);
1045 start_ = fbb_.StartTable();
1047 ::flatbuffers::Offset<CfgEdge> Finish() {
1048 const auto end = fbb_.EndTable(start_);
1049 auto o = ::flatbuffers::Offset<CfgEdge>(end);
1050 fbb_.Required(o, CfgEdge::VT_TGT);
1051 fbb_.Required(o, CfgEdge::VT_DATA);
1056inline ::flatbuffers::Offset<CfgEdge> CreateCfgEdge(
1057 ::flatbuffers::FlatBufferBuilder &_fbb,
1059 Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget tgt_type = Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeTarget::NONE,
1060 ::flatbuffers::Offset<void> tgt = 0,
1061 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdgeData> data = 0) {
1063 builder_.add_src(src);
1064 builder_.add_data(data);
1065 builder_.add_tgt(tgt);
1066 builder_.add_tgt_type(tgt_type);
1067 return builder_.Finish();
1075struct Cfg FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
1076 typedef CfgBuilder Builder;
1077 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1080 const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>> *edges()
const {
1081 return GetPointer<const ::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>> *>(VT_EDGES);
1083 bool Verify(::flatbuffers::Verifier &verifier)
const {
1084 return VerifyTableStart(verifier) &&
1085 VerifyOffsetRequired(verifier, VT_EDGES) &&
1086 verifier.VerifyVector(edges()) &&
1087 verifier.VerifyVectorOfTables(edges()) &&
1088 verifier.EndTable();
1094 ::flatbuffers::FlatBufferBuilder &fbb_;
1095 ::flatbuffers::uoffset_t start_;
1096 void add_edges(::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>>> edges) {
1097 fbb_.AddOffset(Cfg::VT_EDGES, edges);
1099 explicit CfgBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
1101 start_ = fbb_.StartTable();
1103 ::flatbuffers::Offset<Cfg> Finish() {
1104 const auto end = fbb_.EndTable(start_);
1105 auto o = ::flatbuffers::Offset<Cfg>(end);
1106 fbb_.Required(o, Cfg::VT_EDGES);
1111inline ::flatbuffers::Offset<Cfg> CreateCfg(
1112 ::flatbuffers::FlatBufferBuilder &_fbb,
1113 ::flatbuffers::Offset<::flatbuffers::Vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>>> edges = 0) {
1115 builder_.add_edges(edges);
1116 return builder_.Finish();
1119inline ::flatbuffers::Offset<Cfg> CreateCfgDirect(
1120 ::flatbuffers::FlatBufferBuilder &_fbb,
1121 const std::vector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>> *edges =
nullptr) {
1122 auto edges__ = edges ? _fbb.CreateVector<::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::CfgEdge>>(*edges) : 0;
1123 return Rose::BinaryAnalysis::Serialization::FlatBuffers::CreateCfg(
1133struct Root FLATBUFFERS_FINAL_CLASS :
private ::flatbuffers::Table {
1134 typedef RootBuilder Builder;
1135 enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1136 VT_ARCHITECTURE = 4,
1138 VT_INSTRUCTIONS = 8,
1139 VT_BASIC_BLOCKS = 10,
1143 const Rose::BinaryAnalysis::Serialization::FlatBuffers::Architecture *architecture()
const {
1144 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::Architecture *>(VT_ARCHITECTURE);
1146 const Rose::BinaryAnalysis::Serialization::FlatBuffers::MemoryMap *memory_map()
const {
1147 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::MemoryMap *>(VT_MEMORY_MAP);
1149 const Rose::BinaryAnalysis::Serialization::FlatBuffers::InstructionList *instructions()
const {
1150 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::InstructionList *>(VT_INSTRUCTIONS);
1152 const Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlockList *basic_blocks()
const {
1153 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlockList *>(VT_BASIC_BLOCKS);
1155 const Rose::BinaryAnalysis::Serialization::FlatBuffers::FunctionList *functions()
const {
1156 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::FunctionList *>(VT_FUNCTIONS);
1158 const Rose::BinaryAnalysis::Serialization::FlatBuffers::Cfg *cfg()
const {
1159 return GetPointer<const Rose::BinaryAnalysis::Serialization::FlatBuffers::Cfg *>(VT_CFG);
1161 bool Verify(::flatbuffers::Verifier &verifier)
const {
1162 return VerifyTableStart(verifier) &&
1163 VerifyOffsetRequired(verifier, VT_ARCHITECTURE) &&
1164 verifier.VerifyTable(architecture()) &&
1165 VerifyOffsetRequired(verifier, VT_MEMORY_MAP) &&
1166 verifier.VerifyTable(memory_map()) &&
1167 VerifyOffsetRequired(verifier, VT_INSTRUCTIONS) &&
1168 verifier.VerifyTable(instructions()) &&
1169 VerifyOffsetRequired(verifier, VT_BASIC_BLOCKS) &&
1170 verifier.VerifyTable(basic_blocks()) &&
1171 VerifyOffsetRequired(verifier, VT_FUNCTIONS) &&
1172 verifier.VerifyTable(functions()) &&
1173 VerifyOffsetRequired(verifier, VT_CFG) &&
1174 verifier.VerifyTable(cfg()) &&
1175 verifier.EndTable();
1181 ::flatbuffers::FlatBufferBuilder &fbb_;
1182 ::flatbuffers::uoffset_t start_;
1183 void add_architecture(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Architecture> architecture) {
1184 fbb_.AddOffset(Root::VT_ARCHITECTURE, architecture);
1186 void add_memory_map(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::MemoryMap> memory_map) {
1187 fbb_.AddOffset(Root::VT_MEMORY_MAP, memory_map);
1189 void add_instructions(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::InstructionList> instructions) {
1190 fbb_.AddOffset(Root::VT_INSTRUCTIONS, instructions);
1192 void add_basic_blocks(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlockList> basic_blocks) {
1193 fbb_.AddOffset(Root::VT_BASIC_BLOCKS, basic_blocks);
1195 void add_functions(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::FunctionList> functions) {
1196 fbb_.AddOffset(Root::VT_FUNCTIONS, functions);
1198 void add_cfg(::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Cfg> cfg) {
1199 fbb_.AddOffset(Root::VT_CFG, cfg);
1201 explicit RootBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
1203 start_ = fbb_.StartTable();
1205 ::flatbuffers::Offset<Root> Finish() {
1206 const auto end = fbb_.EndTable(start_);
1207 auto o = ::flatbuffers::Offset<Root>(end);
1208 fbb_.Required(o, Root::VT_ARCHITECTURE);
1209 fbb_.Required(o, Root::VT_MEMORY_MAP);
1210 fbb_.Required(o, Root::VT_INSTRUCTIONS);
1211 fbb_.Required(o, Root::VT_BASIC_BLOCKS);
1212 fbb_.Required(o, Root::VT_FUNCTIONS);
1213 fbb_.Required(o, Root::VT_CFG);
1218inline ::flatbuffers::Offset<Root> CreateRoot(
1219 ::flatbuffers::FlatBufferBuilder &_fbb,
1220 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Architecture> architecture = 0,
1221 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::MemoryMap> memory_map = 0,
1222 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::InstructionList> instructions = 0,
1223 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlockList> basic_blocks = 0,
1224 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::FunctionList> functions = 0,
1225 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Cfg> cfg = 0) {
1227 builder_.add_cfg(cfg);
1228 builder_.add_functions(functions);
1229 builder_.add_basic_blocks(basic_blocks);
1230 builder_.add_instructions(instructions);
1231 builder_.add_memory_map(memory_map);
1232 builder_.add_architecture(architecture);
1233 return builder_.Finish();
1236inline bool VerifyCfgEdgeTarget(::flatbuffers::Verifier &verifier,
const void *obj, CfgEdgeTarget type) {
1238 case CfgEdgeTarget::NONE: {
1241 case CfgEdgeTarget::AddressTarget: {
1242 auto ptr =
reinterpret_cast<const Rose::BinaryAnalysis::Serialization::FlatBuffers::AddressTarget *
>(obj);
1243 return verifier.VerifyTable(ptr);
1245 case CfgEdgeTarget::IndeterminateTarget: {
1246 auto ptr =
reinterpret_cast<const Rose::BinaryAnalysis::Serialization::FlatBuffers::IndeterminateTarget *
>(obj);
1247 return verifier.VerifyTable(ptr);
1249 default:
return true;
1253inline bool VerifyCfgEdgeTargetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset<void>> *values, const ::flatbuffers::Vector<CfgEdgeTarget> *types) {
1254 if (!values || !types)
return !values && !types;
1255 if (values->size() != types->size())
return false;
1256 for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
1257 if (!VerifyCfgEdgeTarget(
1258 verifier, values->Get(i), types->GetEnum<CfgEdgeTarget>(i))) {
1265inline const Rose::BinaryAnalysis::Serialization::FlatBuffers::Root *GetRoot(
const void *buf) {
1266 return ::flatbuffers::GetRoot<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root>(buf);
1269inline const Rose::BinaryAnalysis::Serialization::FlatBuffers::Root *GetSizePrefixedRoot(
const void *buf) {
1270 return ::flatbuffers::GetSizePrefixedRoot<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root>(buf);
1273inline bool VerifyRootBuffer(
1274 ::flatbuffers::Verifier &verifier) {
1275 return verifier.VerifyBuffer<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root>(
nullptr);
1278inline bool VerifySizePrefixedRootBuffer(
1279 ::flatbuffers::Verifier &verifier) {
1280 return verifier.VerifySizePrefixedBuffer<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root>(
nullptr);
1283inline void FinishRootBuffer(
1284 ::flatbuffers::FlatBufferBuilder &fbb,
1285 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root> root) {
1289inline void FinishSizePrefixedRootBuffer(
1290 ::flatbuffers::FlatBufferBuilder &fbb,
1291 ::flatbuffers::Offset<Rose::BinaryAnalysis::Serialization::FlatBuffers::Root> root) {
1292 fbb.FinishSizePrefixed(root);
An efficient mapping from an address space to stored data.
@ ORDER_MSB
Most significant byte first, i.e., big-endian.
@ ORDER_UNSPECIFIED
Endianness is unspecified and unknown.
@ ORDER_LSB
Least significant byte first, i.e., little-endian.
const char * Architecture(int64_t)
Convert Rose::BinaryAnalysis::Disassembler::Mips::Decoder::Architecture enum constant to a string.
Specimen architecture information.
const ::flatbuffers::String * mnemonic() const
optional mnemonic
const ::flatbuffers::Vector<::flatbuffers::Offset< Rose::BinaryAnalysis::Serialization::FlatBuffers::BasicBlock > > * basic_blocks() const
list of basic blocks with unique starting addresses
const ::flatbuffers::String * name() const
optional name
uint8_t accessibility() const
Accessibility bits OR'd together.
const ::flatbuffers::Vector< uint64_t > * addresses() const
addresses of contained instructions in execution order
const ::flatbuffers::String * operands() const
optional operands
const ::flatbuffers::Vector<::flatbuffers::Offset< Rose::BinaryAnalysis::Serialization::FlatBuffers::Function > > * functions() const
list of functions with unique entry addresses
const ::flatbuffers::Vector< uint64_t > * instructions() const
non-empty instruction addresses belonging to this function