Ewl_Stock { Ewl_Box b; void (*set_txt)(Ewl_Stock *s, const char *txt); void (*set_img)(Ewl_Stock *s, const char *path, const char *key); }; void ewl_stock_text_cb_set(Ewl_Stock *s, void (*set_txt)(Ewl_Stock *s, const char *txt)); void ewl_stock_image_cb_set(Ewl_Stock *s, void (*set_txt)(Ewl_Stock *s, const char *path, const char *key)) Ewl_Button { Ewl_Stock s; Ewl_Label *label; } b = ewl_button_new(); ewl_stock_text_cb_set(EWL_STOCK(b), ewl_button_cb_set_stocK_text); ewl_stock_image_cb_set(EWL_STOCK(b), ewl_button_cb_set_stock_iamge);