Interface ITypeManager
- All Superinterfaces:
INativeItemListenable
A type manager, for primitive types as well as complex types.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addListener
(INativeItemListener listener) Register a listener relaying events generated by this type manager's type items.addStructureField
(IStructureType type, String fieldName, INativeType fieldType) Append a field to a structure type item.addStructureField
(IStructureType type, String fieldName, INativeType fieldType, int offset, int bitsize, int alignment, int flags) Add or append a field or bit field to a structure type item.addStructureField
(IStructureType type, String fieldName, String fieldTypeName) Convenience method.void
createAlias
(String signature, INativeType aliasedType) Create a new alias (typedef) type.createAlias
(String signature, String aliasedTypeSignature) Convenience method to create a new alias type.createArray
(INativeType baseType, int arraySize) Create a new array type.createArray
(INativeType baseType, int arraySize, boolean metadata) Create a new array type.createArray
(String baseTypeName, int arraySize) createClassType
(String signature) Create a new class type.createClassType
(String signature, int padding, int alignment) Create a new class type.createEnumeration
(String signature) Creation a new enumeration type.createPrototype
(ICallingConvention callingConvention, INativeType returnType, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item.createPrototype
(INativeType returnType, List<INativeType> parameterTypes) Create a new prototype item with the default calling convention for this manager and no special prototype attribute.createPrototypeEx
(ICallingConvention callingConvention, List<INativeType> returnTypes, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item.createPrototypeEx
(String callingConvention, List<String> returnTypes, List<String> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item.createReference
(INativeType baseType) Create a new simple pointer type.createReference
(INativeType baseType, int refCount) Create a new reference (pointer) type.createStructure
(String signature) Convenience method.createStructure
(String signature, String... nameAndTypes) Convenience method.createStructureOrUnion
(String signature, int padding, int alignment) Create a new structure or union type.createUnion
(String signature) Convenience method.createVirtualTableDefinition
(String vtableStructSig, Long address, Collection<INativeMethodItem> methods) boolean
deleteType
(INativeType type) Delete a type.Retrieve the calling convention manager.getExactFloat
(int size) Find a floating-point or equivalent type of the exact provided size.getExactInteger
(int size, boolean signed) Find an integer or equivalent type of the exact provided size.getInteger
(int minsize, boolean signed) Find an integer or equivalent type of at least the provided size.Retrieve a type string parser that can parse type and prototype strings to type and prototype items and register them with this type manager.int
Get a pointer size in bytes.Retrieve the primitive types manager.Retrieve the prototypes managed by this manager.int
Get the size of a stack slot in bytes.Retrieve a type by effective signature.Retrieve a type by effective signature.Retrieve a type by effective signature.Retrieve the optional type library service (TLS) connected to this manager.getTypes()
Retrieve the types currently managed by this manager.getTypes
(ISimpleFilter<INativeType> filter) Retrieve the types currently managed by this manager.getVoid()
Get the void pseudo-type.void
removeListener
(INativeItemListener listener) Unregister a listener.boolean
removeStructureField
(IStructureType type, IStructureTypeField field) Remove a field from a structure type item.boolean
renameStructureField
(IStructureType type, IStructureTypeField field, String newFieldName) boolean
renameStructureField
(IStructureType type, String fieldName, String newFieldName) void
setClassSuperTypes
(IClassType c, Collection<IClassType> supertypes, Collection<IVirtualTableDefinition> vtables) Set up the list of super types and associated virtual tables of a class.void
Set up the (single) virtual table of a class that has no super class.void
verify
(INativeType type) Verify that the provided type belongs to this type manager; raise if it's not the case.
-
Method Details
-
addListener
Register a listener relaying events generated by this type manager's type items.- Specified by:
addListener
in interfaceINativeItemListenable
- Parameters:
listener
-
-
removeListener
Unregister a listener.- Specified by:
removeListener
in interfaceINativeItemListenable
- Parameters:
listener
-
-
getProcessorType
ProcessorType getProcessorType()- Returns:
-
getSubsystemType
SubsystemType getSubsystemType()- Returns:
- may be null
-
getCompilerType
CompilerType getCompilerType()- Returns:
- may be null
-
getPrimitives
IPrimitiveTypeManager getPrimitives()Retrieve the primitive types manager.- Returns:
- the primitive types manager
-
getCallingConventionManager
ICallingConventionManager getCallingConventionManager()Retrieve the calling convention manager.- Returns:
- the calling convention manager
-
getPointerSize
int getPointerSize()Get a pointer size in bytes.- Returns:
-
getSlotSize
int getSlotSize()Get the size of a stack slot in bytes. Typically, this would be the size of a general-purpose register.- Returns:
-
getTypeLibraryService
TypeLibraryService getTypeLibraryService()Retrieve the optional type library service (TLS) connected to this manager. The TLS is a source of external types of prototypes. If a TLS is present, its types can be transparently imported and retrieved viagetType(String)
.- Returns:
- the optional TLS
-
getParser
TypeStringParser getParser()Retrieve a type string parser that can parse type and prototype strings to type and prototype items and register them with this type manager.- Returns:
-
getTypes
Collection<INativeType> getTypes()Retrieve the types currently managed by this manager. The following types are not returned:
- reference types (pointers)
- array types
- primitives (they are managed by theprimitive type manager
)
- prototypes (seegetPrototypes()
- Returns:
-
getTypes
Retrieve the types currently managed by this manager. The following types are not returned:
- reference types (pointers)
- array types
- primitives (they are managed by theprimitive type manager
)
- prototypes (seegetPrototypes()
- Parameters:
filter
- optional- Returns:
-
getPrototypes
Collection<IPrototypeItem> getPrototypes()Retrieve the prototypes managed by this manager.- Returns:
-
getType
Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.- Parameters:
signature
- fully-qualified name (original or effective)- Returns:
- the type or null if not found
-
getType
Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.- Parameters:
signature
- fully-qualified name (original or effective)allowImportingFromTypelibs
- true to allow importing types- Returns:
- the type or null if not found
-
getType
Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.- Parameters:
signature
- fully-qualified name (original or effective)allowImportingFromTypelibs
- true to allow importing typesmayBeRenamed
- if false, only original names will be checked- Returns:
- the type or null if not found
-
getInteger
Find an integer or equivalent type of at least the provided size. The returned type may be a primitive or an alias to a primitive.- Parameters:
minsize
- minimal size in bytessigned
- signedness- Returns:
-
getExactInteger
Find an integer or equivalent type of the exact provided size. The returned type may be a primitive or an alias to a primitive.- Parameters:
size
- exact size in bytessigned
- signedness- Returns:
-
getExactFloat
Find a floating-point or equivalent type of the exact provided size. The returned type may be a primitive or an alias to a primitive.- Parameters:
size
- exact size in bytes- Returns:
-
deleteType
Delete a type.- Parameters:
type
-- Returns:
- success indicator
-
createEnumeration
Creation a new enumeration type. Enumerated contants can be added after the type is created.- Parameters:
signature
-- Returns:
-
createStructureOrUnion
Create a new structure or union type. Fields can be added after the type is created.- Parameters:
signature
-padding
- padding in bytes between fields; 0 means that type is a unionalignment
- alignment in bytes; the structure/union will have at least that size- Returns:
-
createStructure
Convenience method. Create a structure with a padding of 1 byte and no alignment.- Parameters:
signature
-- Returns:
-
createStructure
Convenience method. Create a structure with a padding of 1 byte and no alignment. Add a series of fields as specified by the `nameAndTypes` parameter.- Parameters:
signature
-nameAndTypes
- sequence of (fieldName, fieldTypeName, ...) for fields- Returns:
-
addStructureField
Convenience method. Append a field to a structure type item.- Parameters:
type
- structure typefieldName
- field namefieldTypeName
- field type- Returns:
-
addStructureField
Append a field to a structure type item.- Parameters:
type
- structure typefieldName
- field namefieldType
- field type- Returns:
-
addStructureField
IStructureTypeField addStructureField(IStructureType type, String fieldName, INativeType fieldType, int offset, int bitsize, int alignment, int flags) Add or append a field or bit field to a structure type item.- Parameters:
type
- structure typefieldName
- field namefieldType
- field typeoffset
- -1 to append, else, a structure offsetbitsize
- optional, used to indicate a bitfieldalignment
- optional, in bytesflags
- optional, a combination ofFLAG_xxx
constants- Returns:
-
removeStructureField
Remove a field from a structure type item.- Parameters:
type
-field
-- Returns:
-
renameStructureField
- Parameters:
type
-fieldName
-newFieldName
-- Returns:
-
renameStructureField
- Parameters:
type
-field
-newFieldName
-- Returns:
-
createUnion
Convenience method. Create a union with no alignment.- Parameters:
signature
-- Returns:
-
createClassType
Create a new class type.- Parameters:
signature
-- Returns:
-
createClassType
Create a new class type.- Parameters:
signature
-padding
-alignment
-- Returns:
-
createVirtualTableDefinition
Couple<IVirtualTableDefinition,IMethodTable> createVirtualTableDefinition(String vtableStructSig, Long address, Collection<INativeMethodItem> methods) - Parameters:
vtableStructSig
- signature of the to-be-created structure that will hold the virtual methodsaddress
- optional memory address of the virtual table, if concretemethods
- list of methods in the virtual table- Returns:
- a couple holding
-
setClassVirtualTable
Set up the (single) virtual table of a class that has no super class. If used,setClassSuperTypes(IClassType, Collection, Collection)
cannot be used.- Parameters:
c
-vtable
- mandatory virtual table
-
setClassSuperTypes
void setClassSuperTypes(IClassType c, Collection<IClassType> supertypes, Collection<IVirtualTableDefinition> vtables) Set up the list of super types and associated virtual tables of a class. If used,setClassVirtualTable(IClassType, IVirtualTableDefinition)
cannot be used.- Parameters:
c
-supertypes
- a list of super typesvtables
- optional list of virtual tables (may be null)
-
completeClassTypeInitialization
- Parameters:
type
-
-
createAlias
Create a new alias (typedef) type.- Parameters:
signature
-aliasedType
-- Returns:
-
createAlias
Convenience method to create a new alias type.- Parameters:
signature
-aliasedTypeSignature
-- Returns:
-
getVoid
INativeType getVoid()Get the void pseudo-type.- Returns:
-
getVoidReference
IReferenceType getVoidReference()- Returns:
-
createReference
Create a new reference (pointer) type.- Parameters:
baseType
-refCount
-- Returns:
-
createReference
Create a new simple pointer type.- Parameters:
baseType
-- Returns:
-
createArray
- Parameters:
baseTypeName
-arraySize
-- Returns:
-
createArray
Create a new array type.- Parameters:
baseType
-arraySize
-- Returns:
-
createArray
Create a new array type.- Parameters:
baseType
- type of array elementsarraySize
- number of elements in this array (must be >= 0)metadata
- Indicate that data contains meaningless elements. Internally, theIArrayType
will have the flagICodeItem.FLAG_TRANSIENT
and won't be cached (so it can be modified safely).- Returns:
-
createPrototype
Create a new prototype item with the default calling convention for this manager and no special prototype attribute.- Parameters:
returnType
- optional; null means void returnparameterTypes
- optional; null means no parameter- Returns:
- a new native prototype object
-
createPrototype
IPrototypeItem createPrototype(ICallingConvention callingConvention, INativeType returnType, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item.- Parameters:
callingConvention
- optional; null means standard calling convention (per this type manager)returnType
- optional; null means void returnparameterTypes
- optional; null means no parameterattributes
- optional- Returns:
- a new native prototype object
-
createPrototypeEx
IPrototypeItem createPrototypeEx(ICallingConvention callingConvention, List<INativeType> returnTypes, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item. Multiple return value types may be specified.- Parameters:
callingConvention
-returnTypes
-parameterTypes
-attributes
-- Returns:
-
createPrototypeEx
IPrototypeItem createPrototypeEx(String callingConvention, List<String> returnTypes, List<String> parameterTypes, Collection<PrototypeAttribute> attributes) Create a new prototype item.- Parameters:
callingConvention
-returnTypes
-parameterTypes
-attributes
-- Returns:
-
verify
Verify that the provided type belongs to this type manager; raise if it's not the case.- Parameters:
type
- non-null type- Throws:
JebRuntimeException
- if the verification failed
-