1 /* radare - LGPL - Copyright 2009-2020 - pancake */
2 
3 #include <r_core.h>
4 
5 
r_core_visual_mark_reset(RCore * core)6 R_API void r_core_visual_mark_reset(RCore *core) {
7 	size_t i;
8 	for (i = 0; i < UT8_MAX; i++) {
9 		core->marks[i] = UT64_MAX;
10 	}
11 	core->marks_init = true;
12 }
13 
r_core_visual_mark_dump(RCore * core)14 R_API bool r_core_visual_mark_dump(RCore *core) {
15 	size_t i;
16 	if (!core->marks_init) {
17 		return false;
18 	}
19 	bool res = false;
20 	for (i = 0; i < UT8_MAX; i++) {
21 		if (core->marks[i] != UT64_MAX) {
22 			if (i > ASCII_MAX) {
23 				r_cons_printf ("fV %zu 0x%"PFMT64x"\n", i - ASCII_MAX - 1, core->marks[i]);
24 			} else {
25 				r_cons_printf ("fV %c 0x%"PFMT64x"\n", (char)i, core->marks[i]);
26 			}
27 			res = true;
28 		}
29 	}
30 	return res;
31 }
32 
r_core_visual_mark_set(RCore * core,ut8 ch,ut64 addr)33 R_API void r_core_visual_mark_set(RCore *core, ut8 ch, ut64 addr) {
34 	if (!core->marks_init) {
35 		r_core_visual_mark_reset (core);
36 	}
37 	core->marks[ch] = addr;
38 }
39 
r_core_visual_mark_del(RCore * core,ut8 ch)40 R_API void r_core_visual_mark_del(RCore *core, ut8 ch) {
41 	if (!core->marks_init) {
42 		return;
43 	}
44 	core->marks[ch] = UT64_MAX;
45 }
46 
r_core_visual_mark(RCore * core,ut8 ch)47 R_API void r_core_visual_mark(RCore *core, ut8 ch) {
48 	if (IS_DIGIT (ch)) {
49 		ch += ASCII_MAX + 1;
50 	}
51 	r_core_visual_mark_set (core, ch, core->offset);
52 }
53 
r_core_visual_mark_seek(RCore * core,ut8 ch)54 R_API void r_core_visual_mark_seek(RCore *core, ut8 ch) {
55 	if (core->marks_init && core->marks[ch] != UT64_MAX) {
56 		r_core_seek (core, core->marks[ch], true);
57 	}
58 }
59