Adds /*<type>*/ comments and a linter check from rz-bindgen to enforce their existence and consistency Also includes the following fixes made when adding the annotations: * removed unused intern_table arguments in pyc_dis.c, pyc_dis.h, asm_pyc.c * removed unused classes argument from place_nodes in agraph.c * removed unused recurse and recurse_bb functions in canalysis.c * removed unused vars field from RzPrint struct * removed unused RzAnalysisType* structs from rz_analysis.h * removed unused list field from RzEgg struct * fixed bug in bp_plugin.c where duplication-checking logic iterates over the wrong list * removed unused q_regs field from RzDebug struct * removed unused backtrace field from RzDebugPlugin struct * removed unused classes_list field from RzBinNXOObj struct * removed unused methods_list and classes_list fields from RzBinZimgObj struct
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
#ifndef RZ_SKYLINE_H
|
|
#define RZ_SKYLINE_H
|
|
|
|
#include "rz_vector.h"
|
|
#include "rz_util/rz_itv.h"
|
|
|
|
typedef struct rz_skyline_item_t {
|
|
RzInterval itv;
|
|
void *user;
|
|
} RzSkylineItem;
|
|
|
|
typedef struct rz_skyline_t {
|
|
RzVector /*<RzSkylineItem>*/ v;
|
|
} RzSkyline;
|
|
|
|
RZ_API bool rz_skyline_add(RzSkyline *skyline, RzInterval itv, void *user);
|
|
RZ_API const RzSkylineItem *rz_skyline_get_item_intersect(RzSkyline *skyline, ut64 addr, ut64 len);
|
|
|
|
static inline void rz_skyline_init(RzSkyline *skyline) {
|
|
rz_return_if_fail(skyline);
|
|
rz_vector_init(&skyline->v, sizeof(RzSkylineItem), NULL, NULL);
|
|
}
|
|
|
|
static inline void rz_skyline_fini(RzSkyline *skyline) {
|
|
rz_return_if_fail(skyline);
|
|
rz_vector_fini(&skyline->v);
|
|
}
|
|
|
|
static inline void rz_skyline_clear(RzSkyline *skyline) {
|
|
rz_return_if_fail(skyline);
|
|
rz_vector_clear(&skyline->v);
|
|
}
|
|
|
|
static inline const RzSkylineItem *rz_skyline_get_item(RzSkyline *skyline, ut64 addr) {
|
|
rz_return_val_if_fail(skyline, NULL);
|
|
return rz_skyline_get_item_intersect(skyline, addr, 1);
|
|
}
|
|
|
|
static inline void *rz_skyline_get(RzSkyline *skyline, ut64 addr) {
|
|
rz_return_val_if_fail(skyline, NULL);
|
|
const RzSkylineItem *item = rz_skyline_get_item(skyline, addr);
|
|
return item ? item->user : NULL;
|
|
}
|
|
|
|
static inline void *rz_skyline_get_intersect(RzSkyline *skyline, ut64 addr, ut64 len) {
|
|
rz_return_val_if_fail(skyline, NULL);
|
|
const RzSkylineItem *item = rz_skyline_get_item_intersect(skyline, addr, len);
|
|
return item ? item->user : NULL;
|
|
}
|
|
|
|
static inline bool rz_skyline_contains(RzSkyline *skyline, ut64 addr) {
|
|
rz_return_val_if_fail(skyline, false);
|
|
return (bool)rz_skyline_get_item(skyline, addr);
|
|
}
|
|
|
|
#endif
|