# Create a structure/union member, with the specified name
# and type.
#
# The size will be computed automatically.
#
# @param name a valid member name. Must not be empty.
# @param type the member type. the type can be specified one of the following ways:
# - type_t if the type is simple (integral/floating/bool);
# - tinfo_t a more complex type, like a pointer, array, etc;
# - string as a C type declaration.
# @param offset the member offset in bits. It is the caller's responsibility
# to specify correct offsets.
# if an input argument is incorrect, the constructor may raise an exception
# Retrieve a structure/union member (and its index) with the
# specified name in the specified tinfo_t object.
#
# @param name Member name. Must not be empty.
# @returns a tuple (int, udm_t), or (-1, None) if member not found.
- CL#156578 - first attempt, w/o the index
# Retrieve a structure/union member with the specified offset
# in the specified tinfo_t object.
#
# @param offset Member bit offset
# @returns a tuple (int, udm_t), or (-1, None) if member not found.
# Add a new member to a structure/union type, with the specified name and type.
#
# The size will be computed automatically.
# The new member must not overlap with the existing members.
# if an input argument is incorrect, the constructor may raise an exception
#
# @param name Member name. Must not be empty.
# @param type Member type. Can be specified one of the following ways:
# - type_t if the type is simple (integral/floating/bool);
# - tinfo_t a more complex type, like a pointer, array, etc;
# - string as a C type declaration.
# @param offset Member offset in bits. If specified as -1, the new member
# is added at the end of the structure/union.
# @returns member object
- CL#156615
# Insert a member in the current structure/union, at the specified index.
#
# The member's size will be computed automatically.
#
# @param udm The member, fully initialized (but whose offset is not set)
# @param idx the index in the udm array where the new udm should be placed.
# @param times how many times to insert the new member
# @param etf_flags an OR'ed combination of ETF_ flags
# Create a function argument, with the specified name and type.
#
# The 'type' descriptor, can be one of:
#
# * type_t: if the type is simple (integral/floating/bool). E.g., `BTF_INT`
# * tinfo_t: can handle more complex types (structures, pointers, arrays, ...)
# * str: a C type declaration
#
# If an input argument is incorrect, the constructor may raise an exception
#
# @param name a valid argument name. May not be empty.
# @param type the member type
# @param argloc the argument location. Can be empty.
- CL#156993
# Returns a generator over the numbered types contained in this
# type library.
#
# Every iteration returns a fresh new tinfo_t object
#
# @return a tinfo_t-producing generator
- CL#156968
# Returns a generator over the named types contained in this
# type library.
#
# Every iteration returns a fresh new tinfo_t object
#
# @return a tinfo_t-producing generator
- CL#156968
# Retrieves a tinfo_t representing the named type in this type library.
#
# @param name a type name
# @return a new tinfo_t object, or None if not found
- CL#156969
# Retrieves a tinfo_t representing the numbered type in this type library.
#
# @param ordinal a type ordinal
# @return a new tinfo_t object, or None if not found
- CL#156969
# Alias of push_back()
- CL#156975
# Alias of insert(end(), thing.begin(), thing.end())
- CL#156975
Otherwise, the following is not working:
ftd = func_type_data_t()
ftd.append(funcarg_t("myarg", BT_INT32))
ftd.rettype = tinfo_t(BT_INT64)
tif = tinfo_t()
tif.create_func(ftd)
tif._print() => features a `__bad_cc` calling convention
- CL#157005
# Add an enumerator to the current enumeration.
#
# When creating a new enumeration from scratch, you might
# want to first call `create_enum()`
#
# This method has the following signatures:
#
# * add_edm(edm: edm_t, bmask: int = -1, etf_flags: int = 0, idx: int = -1)
# * add_edm(name: str, value: int, bmask: int = -1, etf_flags: int = 0, idx: int = -1)
#
# If an input argument is incorrect, the constructor may raise an exception
#
# @param edm The member, fully initialized (first form)
# @param name Enumerator name - must not be empty
# @param value Enumerator value
# @param bmask A bitmask to which the enumerator belongs
# @param etf_flags an OR'ed combination of ETF_ flags
# @param idx the index in the edm array where the new udm should be placed.
# If the specified index cannot be honored because it would spoil
- CL#1570??
# Create a structure/union member, with the specified name and value
#
# @param name Enumerator name. Must not be empty.
# @param value Enumerator value
# @param cmt Enumerator repeatable comment. May be empty.
- CL#1570??
# Create a type object with the provided argumens.
#
# This constructor has the following signatures:
#
# * tinfo_t(decl_type: type_t)
# * tinfo_t(decl: str, til: til_t = None, pt_flags: int = 0)
#
# The latter form will create the type object by parsing the type declaration
#
# Alternatively, you can use a form accepting the following keyword arguments:
#
# * ordinal: int
# * name: str
# * til: til_t=None # `None` means `get_idati()`
#
# E.g.,
#
# * tinfo_t(ordinal=3)
# * tinfo_t(ordinal=10, til=get_idati())
# * tinfo_t(name="mytype_t")
# * tinfo_t(name="thattype_t", til=my_other_til)
#
# The constructor may raise an exception if data was invalid/parsing failed.
#
# @param decl_type A simple type
# @param decl A valid C declaration
# @param til A type library, or `None` to use the (`get_idati()`) default
# @param ordinal An ordinal in the type library
# @param name A valid type name
# @param pt_flags Parsing flags
# Iterate on the members composing this structure.
#
# Example:
# til = ida_typeinf.get_idati()
# tif = til.get_named_type("my_struc")
# for udm in tif.iter_struct():
# print(f"{udm.name} at bit offset {udm.offset}")
#
# Will raise an exception if this type is not a structure.
#
# @return a udm_t-producing generator
# Iterate on the members composing this union.
#
# Example:
# til = ida_typeinf.get_idati()
# tif = til.get_named_type("my_union")
# for udm in tif.iter_union():
# print(f"{udm.name} with type {udm.type}")
#
# Will raise an exception if this type is not a union.
#
# @return a udm_t-producing generator
# Iterate on the members composing this structure, or union.
#
# Example:
# til = ida_typeinf.get_idati()
# tif = til.get_named_type("my_type")
# for udm in tif.iter_udt():
# print(f"{udm.name} at bit offset {udm.offset} with type {udm.type}")
#
# Will raise an exception if this type is not a structure, or union
#
# @return a udm_t-producing generator
# Iterate on the members composing this enumeration
#
# Example:
# til = ida_typeinf.get_idati()
# tif = til.get_named_type("my_enum")
# for edm in tif.iter_enum():
# print(f"{edm.name} = {edm.value}")
#
# Will raise an exception if this type is not an enumeration
#
# @return a edm_t-producing generator
Python>idati.get_named_type("Elf32_Vernaux")
<ida_typeinf.tinfo_t object "Elf32_Vernaux">
Or any alternatives that show module and class names instead of
Python>idati.get_named_type("Elf32_Vernaux") # it's tinfo_t object, not a string
Elf32_Vernaux
On typing objects Python interpreters show __repr__, but IDAPython shows __str__
Suggestion is to be synced with the interpreters and show __repr__
[v] pc_api_add_frame_member.elf
[?] pc_api_apply_callee_tinfo.elf
[ ] pc_api_change_stkvar_type.elf
[v] pc_api_create_array.elf
[v] pc_api_create_bfstruct.elf
[v] pc_api_create_bmenum.elf
[v] pc_api_create_libssh2_til.elf
[v] pc_api_create_struct_by_parsing.elf
[v] pc_api_create_user_shared_data.elf
[v] pc_api_del_struct_members.elf
[v] pc_api_func_ti_changed_listener.elf
[v] pc_api_gap_size_align_snippet.elf
[v] pc_api_get_best_fit_member.elf
[v] pc_api_get_innermost_member.elf
[v] pc_api_import_type_from_til.elf -> idapython-examples__import_type_from_til (requires UI)
[v] pc_api_insert_gap.elf
[v] pc_api_list_enum_member.elf
[v] pc_api_list_frame_info.elf
[v] pc_api_list_func_details.elf
[v] pc_api_list_struct_accesses.elf
[ ] pc_api_list_struct_member.elf
[ ] pc_api_list_struct_xrefs.elf
[ ] pc_api_list_union_member.elf
[ ] pc_api_mark_func_spoiled.elf
[ ] pc_api_operand_to_struct_member.elf
[ ] pc_api_setpehdr.elf
[ ] pc_api_visit_tinfo.elf