rizin/librz/include/rz_skyline.h
Dean 59b38e6efa
Add /*<type>*/ comments everywhere (#2986)
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
2022-09-11 13:04:53 +08:00

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