#include enum ivy_status ivy_line_source_get_name( struct ivy_line_source *src, char *buf, size_t count, size_t *nr_read) { if (src->s_get_name) { return src->s_get_name(src, buf, count, nr_read); } return IVY_ERR_NOT_SUPPORTED; } enum ivy_status ivy_line_source_readline( struct ivy_line_source *src, char *buf, size_t count, size_t *nr_read, const char *prompt) { if (src->s_readline) { return src->s_readline(src, buf, count, nr_read, prompt); } return IVY_ERR_NOT_SUPPORTED; } enum ivy_status ivy_line_source_get_row( struct ivy_line_source *src, size_t row, char *buf, size_t count, size_t *nr_read) { if (src->s_get_row) { return src->s_get_row(src, row, buf, count, nr_read); } return IVY_ERR_NOT_SUPPORTED; }