1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */ 2 3 #ifndef __IM_INFO_H__ 4 #define __IM_INFO_H__ 5 6 typedef struct im_info { 7 char *id; 8 char *name; 9 10 u_int num_args; 11 12 char **args; 13 char **readable_args; 14 15 } im_info_t; 16 17 #define IM_INFO_DELETE(info) \ 18 do { \ 19 int i; \ 20 if ((info)) { \ 21 if ((info)->id) { \ 22 free((info)->id); \ 23 } \ 24 if ((info)->name) { \ 25 free((info)->name); \ 26 } \ 27 for (i = 0; i < (info)->num_args; i++) { \ 28 if ((info)->args[i]) { \ 29 free((info)->args[i]); \ 30 } \ 31 if ((info)->readable_args[i]) { \ 32 free((info)->readable_args[i]); \ 33 } \ 34 } \ 35 if ((info)->args) { \ 36 free((info)->args); \ 37 } \ 38 if ((info)->readable_args) { \ 39 free((info)->readable_args); \ 40 } \ 41 free((info)); \ 42 } \ 43 } while (0) 44 45 #endif 46