3 ALLOCATOR(tracker
, "trackers");
5 struct tracker
*alloc_tracker(const char *name
, int owner
, struct symbol
*sym
)
9 tmp
= __alloc_tracker(0);
10 tmp
->name
= alloc_string(name
);
16 void add_tracker(struct tracker_list
**list
, const char *name
, int owner
,
21 if (in_tracker_list(*list
, name
, owner
, sym
))
23 tmp
= alloc_tracker(name
, owner
, sym
);
24 add_ptr_list(list
, tmp
);
27 void del_tracker(struct tracker_list
**list
, const char *name
, int owner
,
32 FOR_EACH_PTR(*list
, tmp
) {
33 if (tmp
->owner
== owner
&& tmp
->sym
== sym
34 && !strcmp(tmp
->name
, name
)) {
35 DELETE_CURRENT_PTR(tmp
);
39 } END_FOR_EACH_PTR(tmp
);
42 int in_tracker_list(struct tracker_list
*list
, const char *name
, int owner
,
47 FOR_EACH_PTR(list
, tmp
) {
48 if (tmp
->owner
== owner
&& tmp
->sym
== sym
49 && !strcmp(tmp
->name
, name
))
51 } END_FOR_EACH_PTR(tmp
);
55 void free_tracker_list(struct tracker_list
**list
)
57 __free_ptr_list((struct ptr_list
**)list
);
60 void free_trackers_and_list(struct tracker_list
**list
)
64 FOR_EACH_PTR(*list
, tmp
) {
65 free_string(tmp
->name
);
67 } END_FOR_EACH_PTR(tmp
);
68 free_tracker_list(list
);