IDA SDK
|
Denotes a displayed line.
(location_t would be a better name but it is too late to rename it now)
An object may be displayed on one or more lines. All lines of an object are generated at once and kept in a linearray_t class.
place_t is an abstract class, another class must be derived from it.
Currently the following classes are used in IDA:
idaplace_t - disassembly view
Example (idaplace_t):
004015AC 004015AC loc_4015AC: ; CODE XREF: sub_4014B8+C5␘j 004015AC xor eax, eax
The first line is denoted by idaplace_t with ea=4015AC, lnnum=0
The second line is denoted by idaplace_t with ea=4015AC, lnnum=1
The third line is denoted by idaplace_t with ea=4015AC, lnnum=2
NB: the place_t class may change in the future, do not rely on it
Inherited by idaplace_t, simpleline_place_t, tiplace_t, and user_graph_place_t.
Public Attributes | |
int | lnnum |
Number of line within the current object. | |
Public Member Functions | |
place_t () | |
Constructor. | |
place_t (int ln) | |
Constructor. | |
virtual void idaapi | print (qstring *vout, void *ud) const =0 |
Generate a short description of the location. More... | |
virtual uval_t idaapi | touval (void *ud) const =0 |
Map the location to a number. More... | |
virtual place_t *idaapi | clone (void) const =0 |
Clone the location. More... | |
virtual void idaapi | copyfrom (const place_t *from)=0 |
Copy the specified location object to the current object. | |
virtual place_t *idaapi | makeplace (void *ud, uval_t x, int lnnum) const =0 |
Map a number to a location. More... | |
virtual int idaapi | compare (const place_t *t2) const =0 |
Deprecated. Please consider compare2(const place_t *, void *) instead. | |
virtual void idaapi | adjust (void *ud)=0 |
Adjust the current location to point to a displayable object. More... | |
virtual bool idaapi | prev (void *ud)=0 |
Move to the previous displayable location. More... | |
virtual bool idaapi | next (void *ud)=0 |
Move to the next displayable location. More... | |
virtual bool idaapi | beginning (void *ud) const =0 |
Are we at the first displayable object?. More... | |
virtual bool idaapi | ending (void *ud) const =0 |
Are we at the last displayable object?. More... | |
virtual int idaapi | generate (qstrvec_t *out, int *out_deflnnum, color_t *out_pfx_color, bgcolor_t *out_bgcolor, void *ud, int maxsize) const =0 |
Generate text lines for the current location. More... | |
virtual void idaapi | serialize (bytevec_t *out) const =0 |
Serialize this instance. More... | |
virtual bool idaapi | deserialize (const uchar **pptr, const uchar *end)=0 |
De-serialize into this instance. More... | |
virtual int idaapi | id () const =0 |
Get the place's ID (i.e., the value returned by register_place_class()) More... | |
virtual const char *idaapi | name () const =0 |
Get this place type name. More... | |
virtual ea_t idaapi | toea () const |
Map the location to an ea_t. More... | |
virtual bool idaapi | rebase (const segm_move_infos_t &) |
Rebase the place instance. More... | |
virtual place_t *idaapi | enter (uint32 *) const |
Visit this place, possibly 'unhiding' a section of text. More... | |
virtual void idaapi | leave (uint32) const |
Leave this place, possibly 'hiding' a section of text that was previously expanded (at enter()-time.) | |
virtual int idaapi | compare2 (const place_t *t2, void *) const |
Compare two locations except line numbers (lnnum). More... | |
|
pure virtual |
Generate a short description of the location.
This description is used on the status bar.
vout | the output buffer |
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Map the location to a number.
This mapping is used to draw the vertical scrollbar.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Clone the location.
Map a number to a location.
When the user clicks on the scrollbar and drags it, we need to determine the location corresponding to the new scrollbar position. This function is used to determine it. It builds a location object for the specified 'x' and returns a pointer to it.
ud | pointer to user-defined context data. Is supplied by linearray_t |
x | number to map |
lnnum | line number to initialize 'lnnum' |
|
pure virtual |
Adjust the current location to point to a displayable object.
This function validates the location and makes sure that it points to an existing object. For example, if the location points to the middle of an instruction, it will be adjusted to point to the beginning of the instruction.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Move to the previous displayable location.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Move to the next displayable location.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Are we at the first displayable object?.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Are we at the last displayable object?.
ud | pointer to user-defined context data. Is supplied by linearray_t |
|
pure virtual |
Generate text lines for the current location.
out | storage for the lines |
out_deflnnum | pointer to the cell that will contain the number of the most 'interesting' generated line |
out_pfx_color | pointer to the cell that will contain the line prefix color |
out_bgcolor | pointer to the cell that will contain the background color |
ud | pointer to user-defined context data. Is supplied by linearray_t |
maxsize | the maximum number of lines to generate |
|
pure virtual |
Serialize this instance.
It is fundamental that all instances of a particular subclass of of place_t occupy the same number of bytes when serialized.
out | buffer to serialize into |
De-serialize into this instance.
'pptr' should be incremented by as many bytes as de-serialization consumed.
pptr | pointer to a serialized representation of a place_t of this type. |
end | pointer to end of buffer. |
|
pure virtual |
Get the place's ID (i.e., the value returned by register_place_class())
|
pure virtual |
Get this place type name.
All instances of a given class must return the same string.
|
inlinevirtual |
Map the location to an ea_t.
|
inlinevirtual |
Rebase the place instance.
infos | the segments that were moved |
Visit this place, possibly 'unhiding' a section of text.
If entering that place required some expanding, a place_t should be returned that represents that section, plus some flags for later use by 'leave()'.
|
inlinevirtual |
Compare two locations except line numbers (lnnum).
This function is used to organize loops. For example, if the user has selected an range, its boundaries are remembered as location objects. Any operation within the selection will have the following look: for ( loc=starting_location; loc < ending_location; loc.next() ) In this loop, the comparison function is used.
t2 | the place to compare this one to. |
ud | pointer to user-defined context data. |
-1 | if the current location is less than 't2' |
0 | if the current location is equal to than 't2' |
1 | if the current location is greater than 't2' |