#include #include #include #include "tool_runner.h" #include "arc_plugin_interface.h" static char *mapping[] = { "SayHello:say_hello", "SayHi:say_hi", "SayBonjoir:say_bonjoir", "Dirlist:ls", "ShowSource:show_source", "PrintTarget:list_properties" }; const char *tool_name(void) { return "Greeter"; } char **tool_interface(size_t *num_caps) { *num_caps = sizeof(mapping)/sizeof(char*); return mapping; } void say_hello(struct arc_model *a_m) { printf("Hello:%p\n",a_m); } void say_hi(struct arc_model *a_m) { printf("Hi:%p\n",a_m); } void say_bonjoir(struct arc_model *a_m) { printf("Bonjoir:%p\n",a_m); } void ls(struct arc_model *a_m) { struct tool_runner tool_runner; tool_runner_init(&tool_runner, "ls", 0); tool_runner_run(&tool_runner); tool_runner_print_summary(&tool_runner);; tool_runner_destroy(&tool_runner); } void show_source(struct arc_model *a_m) { struct tool_runner tool_runner; tool_runner_init(&tool_runner, "cat", 1); tool_runner_add_arg(&tool_runner,"say_hello.c"); tool_runner_run(&tool_runner); tool_runner_print_summary(&tool_runner);; tool_runner_destroy(&tool_runner); } void list_properties(struct arc_model *a_m) { printf("Looking for target in model:%p!\n",a_m); const struct arc_value target = arc_model_get_property(a_m, "Target"); printf("%s\n", target.v_str); free(target.v_str); }