IDA C++ SDK 9.2
Loading...
Searching...
No Matches
moves.hpp
Go to the documentation of this file.
1/*
2 * Interactive disassembler (IDA).
3 * Copyright (c) 1990-2025 Hex-Rays
4 * ALL RIGHTS RESERVED.
5 *
6 */
7
8#ifndef __MOVES_HPP
9#define __MOVES_HPP
10
11#include <dirtree.hpp>
12
13#include <unordered_map>
14
15//-------------------------------------------------------------------------
17{
18 double zoom; // zoom level, 1.0 == 100%, 0 means auto position
19 double orgx; // graph origin, x coord
20 double orgy; // graph origin, y coord
21 graph_location_info_t(void) : zoom(0), orgx(0), orgy(0) {}
23 { return zoom == r.zoom && orgx == r.orgx && orgy == r.orgy; }
25 { return !(*this == r); }
26 void serialize(bytevec_t *out) const;
28};
29
30//-------------------------------------------------------------------------
32{
33 CASSERT(sizeof(graph_location_info_t) == 3*8);
34 out->append(this, sizeof(graph_location_info_t));
35}
36
37//-------------------------------------------------------------------------
39{
40 return mmdsr.unpack_obj(this, sizeof(graph_location_info_t)) != nullptr;
41}
42
43//-------------------------------------------------------------------------
45{
46 segm_move_info_t(ea_t _from = 0, ea_t _to = 0, size_t _sz = 0)
47 : from(_from), to(_to), size(_sz) {}
49 size_t size;
50
51 bool operator == (const segm_move_info_t &r) const
52 { return from == r.from && to == r.to && size == r.size; }
53 bool operator != (const segm_move_info_t &r) const
54 { return !(*this == r); }
55};
58
60{
61 const segm_move_info_t *find(ea_t ea) const
62 {
63 for ( size_t i = 0; i < size(); ++i )
64 {
65 const segm_move_info_t &cur = at(i);
66 if ( ea >= cur.from && ea < cur.from + cur.size )
67 return &cur;
68 }
69 return nullptr;
70 }
71};
72
73//-------------------------------------------------------------------------
74class place_t;
75
76//-------------------------------------------------------------------------
77struct renderer_info_pos_t // out of renderer_info_t, to enable SWiG parsing
78{
79 int node;
80 short cx;
81 short cy;
82
83 renderer_info_pos_t() : node(-1), cx(-1), cy(-1) {}
84 bool operator == (const renderer_info_pos_t &r) const
85 { return node == r.node && cx == r.cx && cy == r.cy; }
86 bool operator != (const renderer_info_pos_t &r) const
87 { return !(*this == r); }
88 void serialize(bytevec_t *out) const;
90};
91
92//-------------------------------------------------------------------------
94{
95 out->pack_dd(node);
96 out->pack_dw(cx);
97 out->pack_dw(cy);
98}
99
100//-------------------------------------------------------------------------
102{
103 node = mmdsr.unpack_dd();
104 cx = mmdsr.unpack_dw();
105 if ( mmdsr.empty() )
106 return false;
107 cy = mmdsr.unpack_dw();
108 return true;
109}
110
111//-------------------------------------------------------------------------
113{
118
120 renderer_info_t(tcc_renderer_type_t _rtype, short cx, short cy) : rtype(_rtype)
121 {
122 pos.cx = cx;
123 pos.cy = cy;
124 }
125 bool operator == (const renderer_info_t &r) const
126 { return rtype == r.rtype && pos == r.pos && gli == r.gli; }
127 bool operator != (const renderer_info_t &r) const
128 { return !(*this == r); }
129};
130
131
132//-------------------------------------------------------------------------
133class navstack_t;
134struct navstack_entry_t;
136struct expanded_area_t;
137
138#define LSEF_PLACE (1 << 0)
139#define LSEF_RINFO (1 << 1)
140#define LSEF_PTYPE (1 << 2)
141#define LSEF_ALL (LSEF_PLACE|LSEF_RINFO|LSEF_PTYPE)
142
143#ifndef SWIG
144# define DEFINE_NAVSTACK_T_HELPERS(decl) \
145 decl void ida_export navstack_t_register_live(navstack_t &); \
146 decl void ida_export navstack_t_deregister_live(navstack_t &); \
147 decl bool ida_export navstack_t_init(navstack_t &, navstack_entry_t *, const char *, uint32); \
148 decl bool ida_export navstack_t_perform_move(const char *, const char *, const char *, bool); \
149 decl void ida_export navstack_t_set_current(navstack_t &, const navstack_entry_t &, bool); \
150 decl bool ida_export navstack_t_get_current(const navstack_t &, navstack_entry_t *, const char *); \
151 decl void ida_export navstack_t_get_all_current(const navstack_t &, navstack_entry_vec_t *); \
152 decl void ida_export navstack_t_stack_jump(navstack_t &, bool try_to_unhide, const navstack_entry_t &e); \
153 decl bool ida_export navstack_t_stack_nav(navstack_t &, navstack_entry_t *, bool, uint32 cnt, bool try_to_unhide); \
154 decl bool ida_export navstack_t_stack_seek(navstack_t &, navstack_entry_t *, uint32 index, bool try_to_unhide, bool apply_cur); \
155 decl uint32 ida_export navstack_t_stack_index(const navstack_t &); \
156 decl void ida_export navstack_t_set_stack_entry(const navstack_t &, uint32, const navstack_entry_t &); \
157 decl bool ida_export navstack_t_get_stack_entry(navstack_entry_t *, const navstack_t &, uint32); \
158 decl uint32 ida_export navstack_t_stack_size(const navstack_t &); \
159 decl void ida_export navstack_t_stack_clear(navstack_t &, const navstack_entry_t &);
160# ifdef TESTABLE_BUILD
161# define DEFINE_NAVSTACK_T_HELPERS_TB(decl) \
162 decl void ida_export navstack_t_dump(const navstack_t &);
163# else
164# define DEFINE_NAVSTACK_T_HELPERS_TB(decl)
165# endif
166#else
167# define DEFINE_NAVSTACK_T_HELPERS(decl)
168# define DEFINE_NAVSTACK_T_HELPERS_TB(decl)
169#endif // SWIG
170
172DEFINE_NAVSTACK_T_HELPERS_TB(idaman)
173
174#ifndef SWIG
175#define DEFINE_NAVSTACK_ENTRY_T_HELPERS(decl) \
176 decl void ida_export navstack_entry_t_serialize(bytevec_t *, const navstack_entry_t &); \
177 decl bool ida_export navstack_entry_t_deserialize(navstack_entry_t *, const uchar **, const uchar *const, const place_t *);
178#else
179#define DEFINE_NAVSTACK_ENTRY_T_HELPERS(decl)
180#endif // SWIG
181DEFINE_NAVSTACK_ENTRY_T_HELPERS(idaman)
182
183//-------------------------------------------------------------------------
184struct lochist_entry_t
185{
186 renderer_info_t rinfo;
187 place_t *plce = nullptr;
188
189 lochist_entry_t() {}
190 lochist_entry_t(const place_t *p,
191 const renderer_info_t &r)
192 : rinfo(r), plce((place_t *) p)
193 {
194 if ( plce != nullptr )
195 plce = plce->clone();
196 }
197 lochist_entry_t(const lochist_entry_t &other) { *this = other; }
198 ~lochist_entry_t() { clear(); }
199 const renderer_info_t &renderer_info() const { return rinfo; }
200 const place_t *place() const { return plce; }
201
202 renderer_info_t &renderer_info() { return rinfo; }
203 place_t *place() { return plce; }
204
205 void set_place(const place_t *p) { clear(); if ( p != nullptr ) plce = p->clone(); }
206 void set_place(const place_t &p) { set_place(&p); }
207
208 bool is_valid() const { return plce != nullptr; }
209
210 lochist_entry_t &operator=(const lochist_entry_t &r)
211 {
212 if ( this == &r )
213 return *this;
214 clear();
215 rinfo = r.rinfo;
216 if ( r.plce != nullptr )
217 plce = r.plce->clone();
218 return *this;
219 }
220
221 void acquire_place(place_t *in_p)
222 { clear(); plce = in_p; }
223
224protected:
225 void clear()
226 {
227 if ( plce != nullptr )
228 {
229 qfree(plce);
230 plce = nullptr;
231 }
232 }
233
234 friend class lochist_t;
236 DEFINE_NAVSTACK_ENTRY_T_HELPERS(friend)
237};
238DECLARE_TYPE_AS_MOVABLE(lochist_entry_t);
239
240//-------------------------------------------------------------------------
241struct navstack_entry_t : public lochist_entry_t
242{
245
248 const lochist_entry_t &e,
249 const qstring &w)
250 : lochist_entry_t(e), widget_id(w) {}
252 const place_t *p,
253 const renderer_info_t &r,
254 const qstring &w)
255 : lochist_entry_t(p, r), widget_id(w) {}
257 : lochist_entry_t(r), widget_id(r.widget_id), ud_str(r.ud_str) {}
258 ~navstack_entry_t() { clear(); }
259
261 {
262 if ( this == &r )
263 return *this;
264 clear();
265 * (lochist_entry_t *) this = (const lochist_entry_t &) r;
267 ud_str = r.ud_str;
268 return *this;
269 }
270
271 void serialize(bytevec_t *out) const { navstack_entry_t_serialize(out, *this); }
272 bool deserialize(const uchar **ptr, const uchar *const end, const place_t *tmplate)
273 { return navstack_entry_t_deserialize(this, ptr, end, tmplate); }
274
275private:
276 void clear()
277 {
278 lochist_entry_t::clear();
280 ud_str.clear();
281 }
282};
284
285#define UNHID_SEGM 0x0001
286#define UNHID_FUNC 0x0002
287#define UNHID_RANGE 0x0004
288
289#define DEFAULT_CURSOR_Y 0xFFFF
290#define DEFAULT_LNNUM -1
291#define CURLOC_LIST "$ curlocs"
292#define MAX_MARK_SLOT 1024 // Max number of marked locations
293
294//-------------------------------------------------------------------------
296{
297 DEFINE_NAVSTACK_T_HELPERS(friend)
298 DEFINE_NAVSTACK_T_HELPERS_TB(friend)
299
300 netnode node = BADNODE;
301
302public:
303
304#define LHF_HISTORY_DISABLED (1 << 0) // enable history?
306
307 navstack_t() { navstack_t_register_live(*this); }
308 ~navstack_t() { navstack_t_deregister_live(*this); }
309
310 bool is_history_enabled() const { return (flags & LHF_HISTORY_DISABLED) == 0; }
311 bool init(navstack_entry_t *defpos, const char *stream_name, uint32 _flags)
312 {
313 return navstack_t_init(*this, defpos, stream_name, _flags);
314 }
315
316 static bool perform_move(const char *stream_name, const char *source_stream_name, const char *widget_id, bool move_stack)
317 {
318 return navstack_t_perform_move(stream_name, source_stream_name, widget_id, move_stack);
319 }
320
321 nodeidx_t netcode() const { return node; }
322
323 void set_current(const navstack_entry_t &e, bool in_charge)
324 { return navstack_t_set_current(*this, e, in_charge); }
325
326 bool get_current(navstack_entry_t *out, const char *widget_id) const
327 { return navstack_t_get_current(*this, out, widget_id); }
328
330 { return navstack_t_get_all_current(*this, out); }
331
332 void stack_jump(bool try_to_unhide, const navstack_entry_t &e)
333 { navstack_t_stack_jump(*this, try_to_unhide, e); }
334
336 { return navstack_t_stack_index(*this); }
337
338 bool stack_seek(navstack_entry_t *out, uint32 index, bool try_to_unhide)
339 { return navstack_t_stack_seek(*this, out, index, try_to_unhide, true); }
340
341 bool stack_forward(navstack_entry_t *out, uint32 cnt, bool try_to_unhide)
342 { return navstack_t_stack_nav(*this, out, true, cnt, try_to_unhide); }
343
344 bool stack_back(navstack_entry_t *out, uint32 cnt, bool try_to_unhide)
345 { return navstack_t_stack_nav(*this, out, false, cnt, try_to_unhide); }
346
347 bool stack_nav(navstack_entry_t *out, bool forward, uint32 cnt, bool try_to_unhide)
348 { return navstack_t_stack_nav(*this, out, forward, cnt, try_to_unhide); }
349
350 void stack_clear(const navstack_entry_t &new_tip)
351 { navstack_t_stack_clear(*this, new_tip); }
352
354 { navstack_t_set_stack_entry(*this, index, e); }
355
357 { return navstack_t_get_stack_entry(out, *this, index); }
358
360 { return get_stack_entry(out, stack_index()); }
361
362 uint32 stack_size(void) const
363 { return navstack_t_stack_size(*this); }
364
365#ifdef TESTABLE_BUILD
366 void dump() const { return navstack_t_dump(*this); }
367#endif
368};
370
371//-------------------------------------------------------------------------
372#ifndef SWIG
373idaman uint32 ida_export bookmarks_t_mark(const lochist_entry_t &, uint32, const char *, const char *, void *);
374idaman bool ida_export bookmarks_t_get(lochist_entry_t *, qstring *, uint32 *, void *);
375idaman bool ida_export bookmarks_t_get_desc(qstring *, const lochist_entry_t &, uint32, void *);
376idaman bool ida_export bookmarks_t_set_desc(qstring, const lochist_entry_t &, uint32, void *);
377idaman uint32 ida_export bookmarks_t_find_index(const lochist_entry_t &, void *);
378idaman uint32 ida_export bookmarks_t_size(const lochist_entry_t &, void *);
379idaman bool ida_export bookmarks_t_erase(const lochist_entry_t &, uint32, void *);
380idaman dirtree_id_t ida_export bookmarks_t_get_dirtree_id(const lochist_entry_t &, void *);
381#endif // SWIG
382
383//-------------------------------------------------------------------------
384class bookmarks_t
385{
386 bookmarks_t(); // No.
387 ~bookmarks_t() {}
388public:
389#define BOOKMARKS_CHOOSE_INDEX (uint32(-1))
390#define BOOKMARKS_BAD_INDEX (uint32(-1))
391#define BOOKMARKS_PROMPT_WITH_HINT_PREFIX '\x01'
392
393 // Mark/unmark position
394 // index - the marked position number (0..MAX_MARK_SLOT)
395 // if specified as BOOKMARKS_CHOOSE_INDEX: ask the user to select the mark slot.
396 // title - if index == BOOKMARKS_CHOOSE_INDEX, then the window caption of
397 // the dialog which will appear on the screen. title==nullptr will
398 // lead to the default caption: "please select a mark slot"
399 // desc - description of the marked position. If nullptr, IDA will show a
400 // dialog box asking the user to enter the description.
401 // If non-nullptr but starts with BOOKMARKS_PROMPT_WITH_HINT_PREFIX,
402 // IDA will also prompt the user, but with a pre-filled value
403 // starting at &desc[1].
404 // returns used marker number (BOOKMARKS_BAD_INDEX - none)
405 static uint32 mark(
406 const lochist_entry_t &e,
407 uint32 index,
408 const char *title,
409 const char *desc,
410 void *ud)
411 { return bookmarks_t_mark(e, index, title, desc, ud); }
412
413 // 'out_entry' MUST:
414 // - contain a valid place_t*; data will be deserialized into it
415 // - have a valid, corresponding tcc_place_type_t
416 static bool get(
417 lochist_entry_t *out_entry,
418 qstring *out_desc,
419 uint32 *index, // index==BOOKMARKS_CHOOSE_INDEX? let the user choose
420 void *ud)
421 { return bookmarks_t_get(out_entry, out_desc, index, ud); }
422
423 static bool get_desc(
424 qstring *out,
425 const lochist_entry_t &e,
426 uint32 index,
427 void *ud)
428 { return bookmarks_t_get_desc(out, e, index, ud); }
429
431 const lochist_entry_t &e,
432 void *ud)
433 { return bookmarks_t_find_index(e, ud); }
434
435 static uint32 size(
436 const lochist_entry_t &e,
437 void *ud)
438 { return bookmarks_t_size(e, ud); }
439
440 static bool erase(
441 const lochist_entry_t &e,
442 uint32 index,
443 void *ud)
444 { return bookmarks_t_erase(e, index, ud); }
445
447 const lochist_entry_t &e,
448 void *ud)
449 { return bookmarks_t_get_dirtree_id(e, ud); }
450};
451
452
453#ifndef SWIG
455class lochist_t {};
456idaman DEPRECATED void ida_export lochist_t_register_live(lochist_t &);
457idaman DEPRECATED void ida_export lochist_t_deregister_live(lochist_t &);
458idaman DEPRECATED bool ida_export lochist_t_init(lochist_t &, const char *, const place_t &, void *, uint32);
459idaman DEPRECATED void ida_export lochist_t_jump(lochist_t &, bool try_to_unhide, const lochist_entry_t &e);
460idaman DEPRECATED bool ida_export lochist_t_fwd(lochist_t &, uint32 cnt, bool try_to_unhide);
461idaman DEPRECATED bool ida_export lochist_t_back(lochist_t &, uint32 cnt, bool try_to_unhide);
462idaman DEPRECATED bool ida_export lochist_t_seek(lochist_t &, uint32 index, bool try_to_unhide, bool apply_cur);
463idaman DEPRECATED const lochist_entry_t *ida_export lochist_t_get_current(const lochist_t &);
464idaman DEPRECATED uint32 ida_export lochist_t_current_index(const lochist_t &);
465idaman DEPRECATED void ida_export lochist_t_set(lochist_t &, uint32, const lochist_entry_t &);
466idaman DEPRECATED bool ida_export lochist_t_get(lochist_entry_t *, const lochist_t &, uint32);
467idaman DEPRECATED uint32 ida_export lochist_t_size(const lochist_t &);
468idaman DEPRECATED void ida_export lochist_t_save(const lochist_t &);
469idaman DEPRECATED void ida_export lochist_t_clear(lochist_t &);
470idaman DEPRECATED void ida_export lochist_entry_t_serialize(bytevec_t *, const lochist_entry_t &);
471idaman DEPRECATED bool ida_export lochist_entry_t_deserialize(lochist_entry_t *, const uchar **, const uchar *const, const place_t *);
472#endif
473
474#endif // __MOVES_HPP
void clear(void)
Clear qstring and free memory.
Definition pro.h:3166
static bool get_desc(qstring *out, const lochist_entry_t &e, uint32 index, void *ud)
Definition moves.hpp:423
static uint32 mark(const lochist_entry_t &e, uint32 index, const char *title, const char *desc, void *ud)
Definition moves.hpp:405
static dirtree_id_t get_dirtree_id(const lochist_entry_t &e, void *ud)
Definition moves.hpp:446
static bool erase(const lochist_entry_t &e, uint32 index, void *ud)
Definition moves.hpp:440
static uint32 size(const lochist_entry_t &e, void *ud)
Definition moves.hpp:435
static bool get(lochist_entry_t *out_entry, qstring *out_desc, uint32 *index, void *ud)
Definition moves.hpp:416
static uint32 find_index(const lochist_entry_t &e, void *ud)
Definition moves.hpp:430
Vector of bytes (use for dynamic memory)
Definition pro.h:3773
void pack_dd(uint32 x)
Pack a dword and append the result to the bytevec.
Definition pro.h:3805
void pack_dw(uint16 x)
Pack a word and append the result to the bytevec.
Definition pro.h:3798
bytevec_t & append(const void *buf, size_t sz)
Append bytes to the bytevec.
Definition pro.h:3782
Deprecated. Please use navstack_t instead.
Definition moves.hpp:455
Definition moves.hpp:296
nodeidx_t netcode() const
Definition moves.hpp:321
void stack_jump(bool try_to_unhide, const navstack_entry_t &e)
Definition moves.hpp:332
uint32 stack_size(void) const
Definition moves.hpp:362
void set_current(const navstack_entry_t &e, bool in_charge)
Definition moves.hpp:323
bool stack_seek(navstack_entry_t *out, uint32 index, bool try_to_unhide)
Definition moves.hpp:338
uint32 flags
Definition moves.hpp:305
bool stack_nav(navstack_entry_t *out, bool forward, uint32 cnt, bool try_to_unhide)
Definition moves.hpp:347
bool get_stack_entry(navstack_entry_t *out, uint32 index) const
Definition moves.hpp:356
void stack_clear(const navstack_entry_t &new_tip)
Definition moves.hpp:350
void set_stack_entry(uint32 index, const navstack_entry_t &e)
Definition moves.hpp:353
bool get_current(navstack_entry_t *out, const char *widget_id) const
Definition moves.hpp:326
navstack_t()
Definition moves.hpp:307
bool stack_forward(navstack_entry_t *out, uint32 cnt, bool try_to_unhide)
Definition moves.hpp:341
bool is_history_enabled() const
Definition moves.hpp:310
void get_all_current(navstack_entry_vec_t *out) const
Definition moves.hpp:329
~navstack_t()
Definition moves.hpp:308
bool init(navstack_entry_t *defpos, const char *stream_name, uint32 _flags)
Definition moves.hpp:311
bool get_current_stack_entry(navstack_entry_t *out) const
Definition moves.hpp:359
bool stack_back(navstack_entry_t *out, uint32 cnt, bool try_to_unhide)
Definition moves.hpp:344
uint32 stack_index() const
Definition moves.hpp:335
void dump() const
Definition moves.hpp:366
static bool perform_move(const char *stream_name, const char *source_stream_name, const char *widget_id, bool move_stack)
Definition moves.hpp:316
Definition of the IDA database node.
Definition netnode.hpp:241
Denotes a displayed line.
Definition kernwin.hpp:1418
virtual place_t *idaapi clone() const =0
Clone the location.
Reimplementation of vector class from STL.
Definition pro.h:2250
const segm_move_info_t & at(size_t _idx) const
Definition pro.h:2427
size_t size(void) const
Definition pro.h:2423
Types involved in grouping of item into folders.
dirtree_id_t
Built-in dirtree specializations:
Definition dirtree.hpp:572
idaman const char * end
Definition pro.h:1001
cexpr_t * e
Definition hexrays.hpp:7308
CASSERT(sizeof(asm_t)==416)
tcc_renderer_type_t
TWidget renderer type.
Definition kernwin.hpp:99
@ TCCRT_INVALID
invalid
Definition kernwin.hpp:100
idaman bool ida_export bookmarks_t_get(lochist_entry_t *, qstring *, uint32 *, void *)
idaman bool ida_export bookmarks_t_get_desc(qstring *, const lochist_entry_t &, uint32, void *)
idaman uint32 ida_export bookmarks_t_find_index(const lochist_entry_t &, void *)
idaman DEPRECATED void ida_export lochist_t_deregister_live(lochist_t &)
idaman DEPRECATED uint32 ida_export lochist_t_size(const lochist_t &)
idaman DEPRECATED bool ida_export lochist_t_get(lochist_entry_t *, const lochist_t &, uint32)
idaman DEPRECATED const lochist_entry_t *ida_export lochist_t_get_current(const lochist_t &)
idaman uint32 ida_export bookmarks_t_mark(const lochist_entry_t &, uint32, const char *, const char *, void *)
idaman uint32 ida_export bookmarks_t_size(const lochist_entry_t &, void *)
idaman DEPRECATED void ida_export lochist_entry_t_serialize(bytevec_t *, const lochist_entry_t &)
idaman DEPRECATED void ida_export lochist_t_register_live(lochist_t &)
idaman DEPRECATED bool ida_export lochist_t_init(lochist_t &, const char *, const place_t &, void *, uint32)
idaman DEPRECATED uint32 ida_export lochist_t_current_index(const lochist_t &)
idaman DEPRECATED void ida_export lochist_t_save(const lochist_t &)
idaman DEPRECATED void ida_export lochist_t_clear(lochist_t &)
DEFINE_NAVSTACK_T_HELPERS(idaman) DEFINE_NAVSTACK_T_HELPERS_TB(idaman) DEFINE_NAVSTACK_ENTRY_T_HELPERS(idaman) struct lochist_entry_t
Definition moves.hpp:171
idaman DEPRECATED void ida_export lochist_t_set(lochist_t &, uint32, const lochist_entry_t &)
idaman DEPRECATED bool ida_export lochist_t_seek(lochist_t &, uint32 index, bool try_to_unhide, bool apply_cur)
idaman dirtree_id_t ida_export bookmarks_t_get_dirtree_id(const lochist_entry_t &, void *)
idaman DEPRECATED void ida_export lochist_t_jump(lochist_t &, bool try_to_unhide, const lochist_entry_t &e)
idaman bool ida_export bookmarks_t_erase(const lochist_entry_t &, uint32, void *)
qvector< navstack_entry_t > navstack_entry_vec_t
Definition moves.hpp:135
idaman DEPRECATED bool ida_export lochist_t_back(lochist_t &, uint32 cnt, bool try_to_unhide)
idaman bool ida_export bookmarks_t_set_desc(qstring, const lochist_entry_t &, uint32, void *)
DECLARE_TYPE_AS_MOVABLE(segm_move_info_t)
idaman DEPRECATED bool ida_export lochist_t_fwd(lochist_t &, uint32 cnt, bool try_to_unhide)
qvector< segm_move_info_t > segm_move_info_vec_t
Definition moves.hpp:57
idaman DEPRECATED bool ida_export lochist_entry_t_deserialize(lochist_entry_t *, const uchar **, const uchar *const, const place_t *)
nodeidx64_t nodeidx_t
Definition netnode.hpp:114
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
uint64 ea_t
Definition pro.h:421
unsigned char uchar
unsigned 8 bit value
Definition pro.h:337
idaman THREAD_SAFE void ida_export qfree(void *alloc)
System independent free.
_qstring< char > qstring
regular string
Definition pro.h:3694
Definition moves.hpp:17
double orgx
Definition moves.hpp:19
bool operator==(const graph_location_info_t &r) const
Definition moves.hpp:22
double orgy
Definition moves.hpp:20
graph_location_info_t(void)
Definition moves.hpp:21
void serialize(bytevec_t *out) const
Definition moves.hpp:31
bool operator!=(const graph_location_info_t &r) const
Definition moves.hpp:24
bool deserialize(memory_deserializer_t &mmdsr)
Definition moves.hpp:38
double zoom
Definition moves.hpp:18
Definition pro.h:4382
bool empty() const
Definition pro.h:4390
uint16 unpack_dw()
Definition pro.h:4394
const void * unpack_obj(void *obj, size_t objsize)
Definition pro.h:4420
uint32 unpack_dd()
Definition pro.h:4395
Definition moves.hpp:242
~navstack_entry_t()
Definition moves.hpp:258
navstack_entry_t(const place_t *p, const renderer_info_t &r, const qstring &w)
Definition moves.hpp:251
navstack_entry_t(const lochist_entry_t &e, const qstring &w)
Definition moves.hpp:247
qstring ud_str
Definition moves.hpp:244
navstack_entry_t & operator=(const navstack_entry_t &r)
Definition moves.hpp:260
navstack_entry_t(const navstack_entry_t &r)
Definition moves.hpp:256
qstring widget_id
Definition moves.hpp:243
bool deserialize(const uchar **ptr, const uchar *const end, const place_t *tmplate)
Definition moves.hpp:272
void serialize(bytevec_t *out) const
Definition moves.hpp:271
navstack_entry_t()
Definition moves.hpp:246
Definition moves.hpp:78
short cx
Definition moves.hpp:80
bool deserialize(memory_deserializer_t &mmdsr)
Definition moves.hpp:101
bool operator!=(const renderer_info_pos_t &r) const
Definition moves.hpp:86
renderer_info_pos_t()
Definition moves.hpp:83
short cy
Definition moves.hpp:81
bool operator==(const renderer_info_pos_t &r) const
Definition moves.hpp:84
int node
Definition moves.hpp:79
void serialize(bytevec_t *out) const
Definition moves.hpp:93
Definition moves.hpp:113
renderer_info_pos_t pos_t
Definition moves.hpp:115
graph_location_info_t gli
Definition moves.hpp:114
tcc_renderer_type_t rtype
Definition moves.hpp:117
renderer_info_t()
Definition moves.hpp:119
pos_t pos
Definition moves.hpp:116
bool operator==(const renderer_info_t &r) const
Definition moves.hpp:125
bool operator!=(const renderer_info_t &r) const
Definition moves.hpp:127
renderer_info_t(tcc_renderer_type_t _rtype, short cx, short cy)
Definition moves.hpp:120
Definition moves.hpp:45
segm_move_info_t(ea_t _from=0, ea_t _to=0, size_t _sz=0)
Definition moves.hpp:46
ea_t from
Definition moves.hpp:48
size_t size
Definition moves.hpp:49
ea_t to
Definition moves.hpp:48
bool operator==(const segm_move_info_t &r) const
Definition moves.hpp:51
bool operator!=(const segm_move_info_t &r) const
Definition moves.hpp:53
Definition moves.hpp:60
const segm_move_info_t * find(ea_t ea) const
Definition moves.hpp:61