plugin.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * plugin.h
  3. */
  4. #ifndef _clish_plugin_h
  5. #define _clish_plugin_h
  6. #include "clish/shell.h"
  7. /* Symbol types */
  8. typedef struct clish_sym_s clish_sym_t;
  9. typedef struct clish_plugin_s clish_plugin_t;
  10. /* Plugin types */
  11. typedef int clish_plugin_fn_t(clish_context_t *context, char **out);
  12. typedef int clish_plugin_init_t(clish_plugin_t *plugin);
  13. /* Name of init function within plugin */
  14. #define CLISH_PLUGIN_INIT "clish_plugin_init"
  15. /* Symbol */
  16. int clish_sym_compare(const void *first, const void *second);
  17. clish_sym_t *clish_sym_new(const char *name, clish_plugin_fn_t *func);
  18. void clish_sym_free(clish_sym_t *instance);
  19. void clish_sym__set_func(clish_sym_t *instance, clish_plugin_fn_t *func);
  20. clish_plugin_fn_t *clish_sym__get_func(clish_sym_t *instance);
  21. /* Plugin */
  22. clish_plugin_t *clish_plugin_new(const char *name, const char *file);
  23. void clish_plugin_free(clish_plugin_t *instance);
  24. void *clish_plugin_load(clish_plugin_t *instance);
  25. clish_plugin_fn_t *clish_plugin_get_sym(clish_plugin_t *instance,
  26. const char *name);
  27. int clish_plugin_add_sym(clish_plugin_t *instance,
  28. clish_plugin_fn_t *func, const char *name);
  29. void clish_plugin_dump(const clish_plugin_t *instance);
  30. char *clish_plugin__get_name(const clish_plugin_t *instance);
  31. char *clish_plugin__get_file(const clish_plugin_t *instance);
  32. #endif /* _clish_plugin_h */
  33. /** @} clish_plugin */