rizin/librz/include/rz_lang.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

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