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
84 lines
2.4 KiB
C
84 lines
2.4 KiB
C
#ifndef RZ_LANG_H
|
|
#define RZ_LANG_H
|
|
|
|
#include <rz_types.h>
|
|
#include <rz_list.h>
|
|
#include <rz_cmd.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
RZ_LIB_VERSION_HEADER(rz_lang);
|
|
|
|
typedef char *(*RzCoreCmdStrCallback)(void *core, const char *s);
|
|
typedef int (*RzCoreCmdfCallback)(void *core, const char *s, ...);
|
|
|
|
typedef struct rz_lang_t {
|
|
struct rz_lang_plugin_t *cur;
|
|
void *user;
|
|
RzList /*<RzLangDef *>*/ *defs;
|
|
RzList /*<RzLangPlugin *>*/ *langs;
|
|
PrintfCallback cb_printf;
|
|
RzCoreCmdStrCallback cmd_str;
|
|
RzCoreCmdfCallback cmdf;
|
|
} RzLang;
|
|
|
|
typedef struct rz_lang_plugin_t {
|
|
const char *name;
|
|
const char *alias;
|
|
const char *desc;
|
|
const char *license;
|
|
const char **help;
|
|
const char *ext;
|
|
int (*init)(RzLang *user);
|
|
bool (*setup)(RzLang *user);
|
|
int (*fini)(RzLang *user);
|
|
int (*prompt)(RzLang *user);
|
|
int (*run)(RzLang *user, const char *code, int len);
|
|
int (*run_file)(RzLang *user, const char *file);
|
|
int (*set_argv)(RzLang *user, int argc, char **argv);
|
|
} RzLangPlugin;
|
|
|
|
typedef struct rz_lang_def_t {
|
|
char *name;
|
|
char *type;
|
|
void *value;
|
|
} RzLangDef;
|
|
|
|
#ifdef RZ_API
|
|
RZ_API RzLang *rz_lang_new(void);
|
|
RZ_API void rz_lang_free(RzLang *lang);
|
|
RZ_API bool rz_lang_setup(RzLang *lang);
|
|
RZ_API bool rz_lang_add(RzLang *lang, RzLangPlugin *foo);
|
|
RZ_API bool rz_lang_use(RzLang *lang, const char *name);
|
|
RZ_API int rz_lang_run(RzLang *lang, const char *code, int len);
|
|
RZ_API int rz_lang_run_string(RzLang *lang, const char *code);
|
|
RZ_API int rz_lang_run_file(RzLang *lang, const char *file);
|
|
/* TODO: user_ptr must be deprecated */
|
|
RZ_API void rz_lang_set_user_ptr(RzLang *lang, void *user);
|
|
RZ_API bool rz_lang_set_argv(RzLang *lang, int argc, char **argv);
|
|
RZ_API int rz_lang_prompt(RzLang *lang);
|
|
RZ_API void rz_lang_plugin_free(RzLangPlugin *p); // XXX
|
|
RZ_API RzLangPlugin *rz_lang_get_by_name(RzLang *lang, const char *name);
|
|
RZ_API RzLangPlugin *rz_lang_get_by_extension(RzLang *lang, const char *ext);
|
|
// TODO: rename rz_Lang_add for rz_lang_plugin_add
|
|
|
|
RZ_API bool rz_lang_define(RzLang *lang, const char *type, const char *name, void *value);
|
|
RZ_API void rz_lang_undef(RzLang *lang, const char *name);
|
|
RZ_API void rz_lang_def_free(RzLangDef *def);
|
|
|
|
extern RzLangPlugin rz_lang_plugin_lib;
|
|
extern RzLangPlugin rz_lang_plugin_pipe;
|
|
extern RzLangPlugin rz_lang_plugin_rust;
|
|
extern RzLangPlugin rz_lang_plugin_vala;
|
|
extern RzLangPlugin rz_lang_plugin_c;
|
|
extern RzLangPlugin rz_lang_plugin_cpipe;
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|