Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon

Merge handler parameters. More...

#include <merge.hpp>

Public Member Functions

 merge_handler_params_t (merge_data_t &_md, const qstring &_label, merge_kind_t _kind, merge_kind_t _insert_after, uint32 _mh_flags)
 
bool ui_has_details () const
 
bool ui_complex_details () const
 
bool ui_complex_name () const
 
char ui_split_char () const
 
qstring ui_split_str () const
 
bool ui_dp_shortname () const
 
bool ui_linediff () const
 
bool ui_indent () const
 

Static Public Member Functions

static bool ui_has_details (uint32 _mh_flags)
 Should IDA display the diffpos detail pane?
 
static bool ui_complex_details (uint32 _mh_flags)
 Do not display the diffpos details in the chooser. More...
 
static bool ui_complex_name (uint32 _mh_flags)
 It customary to create long diffpos names having many components that are separated by any 7-bit ASCII character (besides of '\0'). More...
 
static char ui_split_char (uint32 _mh_flags)
 
static qstring ui_split_str (uint32 _mh_flags)
 
static bool ui_dp_shortname (uint32 _mh_flags)
 The detail pane shows the diffpos details for the current diffpos range as a tree-like view. More...
 
static bool ui_linediff (uint32 _mh_flags)
 In detail pane IDA shows difference between diffpos details. More...
 
static bool ui_indent (uint32 _mh_flags)
 In the ordinary situation the spaces from the both sides of diffpos name are trimmed. More...
 

Public Attributes

merge_data_tmd
 
qstring label
 
merge_kind_t kind
 merge handler kind merge_kind_t
 
merge_kind_t insert_after
 desired position inside 'handlers' merge_kind_t
 
uint32 mh_flags
 

Detailed Description

Merge handler parameters.

They describe the handler label, its kind (which is usually automatically allocated by IDA), and various flags. The MH_UI_... flags describe how the merge differences will be displayed to the user. By default they are displayed as a list (using a chooser), and a detail pane at the bottom. Currently the choose columns are automaticaly determined based on the diffpos name. A diffpos name is a textual representation of an object that we compare during merging. For example, if 2 IDBs have different imagebases, then the user would see diffpos names like the following: addresses.imagebase: 0x8048000 addresses.imagebase: 0xA000000 Specifying MH_UI_COLONNAME would cause IDA to create a 2-column chooser for this merge handler.

Member Function Documentation

◆ ui_complex_details()

static bool merge_handler_params_t::ui_complex_details ( uint32  _mh_flags)
inlinestatic

Do not display the diffpos details in the chooser.

For example, the MERGE_KIND_SCRIPTS handler puts the script body as the diffpos detail. It would not be great to show them as part of the chooser.

◆ ui_complex_name()

static bool merge_handler_params_t::ui_complex_name ( uint32  _mh_flags)
inlinestatic

It customary to create long diffpos names having many components that are separated by any 7-bit ASCII character (besides of '\0').

In this case it is possible to instruct IDA to use this separator to create a multi-column chooser. For example the MERGE_KIND_ENUMS handler has the following diffpos name: enum_1,enum_2 If MH_UI_COMMANAME is specified, IDA will create 2 columns for these names.

◆ ui_dp_shortname()

static bool merge_handler_params_t::ui_dp_shortname ( uint32  _mh_flags)
inlinestatic

The detail pane shows the diffpos details for the current diffpos range as a tree-like view.

In this pane the diffpos names are used as tree node names and the diffpos details as their children. Sometimes, for complex diffpos names, the first part of the name looks better than the entire name. For example, the MERGE_KIND_SEGMENTS handler has the following diffpos name: <range>,<segm1>,<segm2>,<segm3> if MH_UI_DP_SHORTNAME is specified, IDA will use <range> as a tree node name

◆ ui_linediff()

static bool merge_handler_params_t::ui_linediff ( uint32  _mh_flags)
inlinestatic

In detail pane IDA shows difference between diffpos details.

IDA marks added or deleted detail by color. In the modified detail the changes are marked. Use this UI hint if you do not want to show the differences inside detail.

◆ ui_indent()

static bool merge_handler_params_t::ui_indent ( uint32  _mh_flags)
inlinestatic

In the ordinary situation the spaces from the both sides of diffpos name are trimmed.

Use this UI hint to preserve the leading spaces.


The documentation for this struct was generated from the following file: