Package ghidra.app.util.bin

# Interface StructConverter

All Known Subinterfaces:
  `CoffSymbolAux`, `ElfFileSection`, `OptionalHeader`, `SwiftStructure`

All Known Implementing Classes:
  `AoutHeader`, `AoutHeaderMIPS`, `AppleSingleDouble`, `ArchitectureDataDirectory`, `AssociatedTypeDescriptor`, `AssociatedTypeRecord`, `BaseRelocation`, `BaseRelocationDataDirectory`, `BoundImportDataDirectory`, `BoundImportDescriptor`, `BoundImportForwarderRef`, `BuildVersionCommand`, `BuildVersionCommand.BuildToolVersion`, `BuiltinTypeDescriptor`, `CaptureDescriptor`, `CaptureTypeRecord`, `CFragResource`, `CFragResourceMember`, `CFragUsage1Union`, `CFragUsage2Union`, `CFragWhere1Union`, `CFragWhere2Union`, `CliAbstractSig`, `CliAbstractStream`, `CliAbstractTable`, `CliBlob`, `CliBlobCustomAttrib`, `CliBlobMarshalSpec`, `CliMetadataDirectory`, `CliMetadataRoot`, `CliMethodDef`, `CliMethodExtraSections`, `CliSigAssembly`, `CliSigAssemblyRef`, `CliSigConstant`, `CliSigField`, `CliSigLocalVar`, `CliSigMethodDef`, `CliSigMethodRef`, `CliSigMethodSpec`, `CliSigProperty`, `CliSigStandAloneMethod`, `CliSigTypeSpec`, `CliStreamBlob`, `CliStreamGuid`, `CliStreamHeader`, `CliStreamMetadata`, `CliStreamStrings`, `CliStreamUserStrings`, `CliTableAssembly`, `CliTableAssemblyOS`, `CliTableAssemblyProcessor`, `CliTableAssemblyRef`, `CliTableAssemblyRefOS`, `CliTableAssemblyRefProcessor`, `CliTableClassLayout`, `CliTableConstant`, `CliTableCustomAttribute`, `CliTableDeclSecurity`, `CliTableEvent`, `CliTableEventMap`, `CliTableExportedType`, `CliTableField`, `CliTableFieldLayout`, `CliTableFieldMarshall`, `CliTableFieldRVA`, `CliTableFile`, `CliTableGenericParam`, `CliTableGenericParamConstraint`, `CliTableImplMap`, `CliTableInterfaceImpl`, `CliTableManifestResource`, `CliTableMemberRef`, `CliTableMethodDef`, `CliTableMethodImpl`, `CliTableMethodSemantics`, `CliTableMethodSpec`, `CliTableModule`, `CliTableModuleRef`, `CliTableNestedClass`, `CliTableParam`, `CliTableProperty`, `CliTablePropertyMap`, `CliTableStandAloneSig`, `CliTableTypeDef`, `CliTableTypeRef`, `CliTableTypeSpec`, `CodeSignatureBlobIndex`, `CodeSignatureCodeDirectory`, `CodeSignatureCommand`, `CodeSignatureGenericBlob`, `CodeSignatureSuperBlob`, `CoffArchiveHeader`, `CoffArchiveMemberHeader`, `CoffFileHeader`, `CoffLineNumber`, `CoffRelocation`, `CoffSectionHeader`, `CoffSymbol`, `CoffSymbolAuxArray`, `CoffSymbolAuxBeginningOfBlock`, `CoffSymbolAuxEndOfBlock`, `CoffSymbolAuxEndOfStruct`, `CoffSymbolAuxFilename`, `CoffSymbolAuxFunction`, `CoffSymbolAuxName`, `CoffSymbolAuxSection`, `CoffSymbolAuxTagName`, `COMDescriptorDataDirectory`, `ContainerHeader`, `DataDirectory`, `DataInCodeCommand`, `DataInCodeEntry`, `DebugCodeView`, `DebugCodeViewSymbolTable`, `DebugCOFFSymbol`, `DebugCOFFSymbolAux`, `DebugCOFFSymbolAux.AuxFile`, `DebugCOFFSymbolAux.AuxSection`, `DebugCOFFSymbolAux.AuxSym`, `DebugDataDirectory`, `DebugDirectory`, `DebugMisc`, `DebugStateX86_32`, `DebugStateX86_64`, `DefaultDataDirectory`, `DelayImportDataDirectory`, `DelayImportDescriptor`, `DOSHeader`, `DyldCacheAccelerateInfo`, `DyldCacheAcceleratorDof`, `DyldCacheAcceleratorInitializer`, `DyldCacheHeader`, `DyldCacheImageInfo`, `DyldCacheImageInfoExtra`, `DyldCacheImageTextInfo`, `DyldCacheLocalSymbolsEntry`, `DyldCacheLocalSymbolsInfo`, `DyldCacheMappingAndSlideInfo`, `DyldCacheMappingInfo`, `DyldCacheRangeEntry`, `DyldCacheSlideInfo1`, `DyldCacheSlideInfo2`, `DyldCacheSlideInfo3`, `DyldCacheSlideInfo4`, `DyldCacheSlideInfoCommon`, `DyldChainedFixupHeader`, `DyldChainedFixupsCommand`, `DyldChainedImport`, `DyldChainedStartsInImage`, `DyldChainedStartsInSegment`, `DyldChainedStartsOffsets`, `DyldChainedStartsOffsets`, `DyldExportsTrieCommand`, `DyldInfoCommand`, `DyldSubcacheEntry`, `DynamicLibrary`, `DynamicLibraryCommand`, `DynamicLibraryModule`, `DynamicLibraryReference`, `DynamicLinkerCommand`, `DynamicSymbolTableCommand`, `ElfDynamicTable`, `ElfHeader`, `ElfProgramHeader`, `ElfRelocation`, `ElfRelocationTable`, `ElfSectionHeader`, `ElfStringTable`, `ElfSymbolTable`, `EncryptedInformationCommand`, `EntryDescriptor`, `EntryPoint`, `EntryPointCommand`, `ExceptionDataDirectory`, `ExceptionStateX86_32`, `ExceptionStateX86_64`, `ExportDataDirectory`, `ExportedSymbol`, `ExportedSymbolHashSlot`, `ExportedSymbolKey`, `FieldDescriptor`, `FieldRecord`, `FileHeader`, `FileSetEntryCommand`, `FirstLinkerMember`, `FixedVirtualMemoryFileCommand`, `FixedVirtualMemorySharedLibraryCommand`, `FunctionStartsCommand`, `GlobalPointerDataDirectory`, `GnuVerdaux`, `GnuVerdef`, `GnuVernaux`, `GnuVerneed`, `IdentCommand`, `ImageCor20Header`, `ImportAddressTableDataDirectory`, `ImportByName`, `ImportDataDirectory`, `ImportDescriptor`, `ImportedLibrary`, `ImportedSymbol`, `LibObjcOptimization`, `LinkEditDataCommand`, `LinkerOptionCommand`, `LoadCommand`, `LoadCommandString`, `LoadConfigDataDirectory`, `LoadConfigDirectory`, `LoaderInfoHeader`, `LoaderRelocationHeader`, `LongNamesMember`, `MachHeader`, `MetadataSourceRecord`, `MultiPayloadEnumDescriptor`, `MzRelocation`, `NList`, `NTHeader`, `ObjectiveC_Method`, `ObjectiveC_MethodList`, `ObjectiveC1_Category`, `ObjectiveC1_Class`, `ObjectiveC1_InstanceVariable`, `ObjectiveC1_InstanceVariableList`, `ObjectiveC1_MetaClass`, `ObjectiveC1_Method`, `ObjectiveC1_MethodList`, `ObjectiveC1_Module`, `ObjectiveC1_Protocol`, `ObjectiveC1_ProtocolList`, `ObjectiveC1_ProtocolMethod`, `ObjectiveC1_ProtocolMethodList`, `ObjectiveC1_SymbolTable`, `ObjectiveC2_Cache`, `ObjectiveC2_Category`, `ObjectiveC2_Class`, `ObjectiveC2_ClassRW`, `ObjectiveC2_ImageInfo`, `ObjectiveC2_Implementation`, `ObjectiveC2_InstanceVariable`, `ObjectiveC2_InstanceVariableList`, `ObjectiveC2_MessageReference`, `ObjectiveC2_Method`, `ObjectiveC2_MethodList`, `ObjectiveC2_Property`, `ObjectiveC2_PropertyList`, `ObjectiveC2_Protocol`, `ObjectiveC2_ProtocolList`, `ObsoleteCommand`, `OldDOSHeader`, `OptionalHeaderImpl`, `PdbInfoCodeView`, `PdbInfoDotNet`, `PefDebug`, `PrebindChecksumCommand`, `PreboundDynamicLibraryCommand`, `ReferenceListEntry`, `Relocation`, `RelocationInfo`, `RelocByIndexGroup`, `RelocBySectDWithSkip`, `RelocIncrPosition`, `RelocLgByImport`, `RelocLgRepeat`, `RelocLgSetOrBySection`, `RelocSetPosition`, `RelocSmRepeat`, `RelocUndefinedOpcode`, `RelocValueGroup`, `ResourceDataDirectory`, `ResourceDataEntry`, `ResourceDirectory`, `ResourceDirectoryEntry`, `ResourceDirectoryString`, `ResourceDirectoryStringU`, `ResourceHeader`, `ResourceMap`, `ResourceType`, `RichHeader`, `RoutinesCommand`, `RunPathCommand`, `SecondLinkerMember`, `Section`, `SectionHeader`, `SectionHeader`, `SecurityCertificate`, `SecurityDataDirectory`, `SegmentCommand`, `SourceVersionCommand`, `SubClientCommand`, `SubFrameworkCommand`, `SubLibraryCommand`, `SubUmbrellaCommand`, `SymbolCommand`, `SymbolTableCommand`, `TableOfContents`, `TargetClassDescriptor`, `TargetContextDescriptor`, `TargetEnumDescriptor`, `TargetProtocolConformanceDescriptor`, `TargetProtocolDescriptor`, `TargetStructDescriptor`, `TargetTypeContextDescriptor`, `ThreadCommand`, `ThreadState`, `ThreadStateARM`, `ThreadStateARM_64`, `ThreadStateHeader`, `ThreadStatePPC`, `ThreadStateX86_32`, `ThreadStateX86_64`, `ThunkData`, `TLSDataDirectory`, `TLSDirectory`, `TwoLevelHint`, `TwoLevelHintsCommand`, `UnsupportedLoadCommand`, `UuidCommand`, `VersionMinCommand`, `VS_VERSION_CHILD`, `VS_VERSION_INFO`, `XCoffFileHeader`, `XCoffOptionalHeader`, `XCoffSectionHeader`

public interface StructConverter
Allows a class to create a structure datatype equivalent to its class members.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final DataType`
  `ASCII`
  Reusable ASCII datatype.
  `static final DataType`
  `BYTE`
  Reusable BYTE datatype.
  `static final DataType`
  `DWORD`
  Reusable DWORD datatype.
  `static final DataType`
  `IBO32`
  Reusable 32-bit image base offset datatype.
  `static final DataType`
  `IBO64`
  Reusable 64-bit image base offset datatype.
  `static final DataType`
  `POINTER`
  Reusable POINTER datatype.
  `static final DataType`
  `QWORD`
  Reusable QWORD datatype.
  `static final SignedLeb128DataType`
  `SLEB128`
  Reusable Signed LEB128 dynamic length data type
  `static final DataType`
  `STRING`
  Reusable STRING datatype.
  `static final UnsignedLeb128DataType`
  `ULEB128`
  Reusable Unsigned LEB128 dynamic length data type
  `static final DataType`
  `UTF16`
  Reusable UTF16 string datatype.
  `static final DataType`
  `UTF8`
  Reusable UTF8 string datatype.
  `static final DataType`
  `VOID`
  Reusable VOID datatype.
  `static final DataType`
  `WORD`
  Reusable WORD datatype.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DataType`
  `toDataType()`
  Returns a structure datatype representing the contents of the implementor of this interface.

- ## Field Details

  - ### BYTE

    static final DataType BYTE
    Reusable BYTE datatype.

  - ### WORD

    static final DataType WORD
    Reusable WORD datatype.

  - ### DWORD

    static final DataType DWORD
    Reusable DWORD datatype.

  - ### QWORD

    static final DataType QWORD
    Reusable QWORD datatype.

  - ### ASCII

    static final DataType ASCII
    Reusable ASCII datatype.

  - ### STRING

    static final DataType STRING
    Reusable STRING datatype.

  - ### UTF8

    static final DataType UTF8
    Reusable UTF8 string datatype.

  - ### UTF16

    static final DataType UTF16
    Reusable UTF16 string datatype.

  - ### POINTER

    static final DataType POINTER
    Reusable POINTER datatype.

  - ### VOID

    static final DataType VOID
    Reusable VOID datatype.

  - ### IBO32

    static final DataType IBO32
    Reusable 32-bit image base offset datatype.

  - ### IBO64

    static final DataType IBO64
    Reusable 64-bit image base offset datatype.

  - ### ULEB128

    static final UnsignedLeb128DataType ULEB128
    Reusable Unsigned LEB128 dynamic length data type

  - ### SLEB128

    static final SignedLeb128DataType SLEB128
    Reusable Signed LEB128 dynamic length data type

- ## Method Details

  - ### toDataType

    DataType toDataType() throws DuplicateNameException, IOException
    Returns a structure datatype representing the contents of the implementor of this interface.

    For example, given:

         class A {
             int foo;
             double bar;
         }

    The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.

    Returns:
      returns a structure datatype representing the implementor of this interface
    Throws:
      `DuplicateNameException` - when a datatype of the same name already exists
      `IOException`
    See Also:
      - `StructureDataType`