From 6c91cdb13e82b6fb46bfa6988b8226ede35f9a31 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sat, 24 Apr 2010 17:43:32 +0200 Subject: [PATCH] add isl_printer_flush --- doc/user.pod | 6 ++++++ include/isl_printer.h | 2 ++ isl_printer.c | 24 ++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 4c5a733a..9f0a89df 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -532,6 +532,12 @@ To actually print something, use __isl_take isl_printer *printer, __isl_keep isl_map *map); +When called on a file printer, the following function flushes +the file. When called on a string printer, the buffer is cleared. + + __isl_give isl_printer *isl_printer_flush( + __isl_take isl_printer *p); + =head2 Creating New Sets and Relations C has functions for creating some standard sets and relations. diff --git a/include/isl_printer.h b/include/isl_printer.h index 1d3c0355..e66cf8c2 100644 --- a/include/isl_printer.h +++ b/include/isl_printer.h @@ -44,6 +44,8 @@ __isl_give isl_printer *isl_printer_print_isl_int(__isl_take isl_printer *p, __isl_give isl_printer *isl_printer_print_str(__isl_take isl_printer *p, const char *s); +__isl_give isl_printer *isl_printer_flush(__isl_take isl_printer *p); + #if defined(__cplusplus) } #endif diff --git a/isl_printer.c b/isl_printer.c index 6011dd6f..a186f802 100644 --- a/isl_printer.c +++ b/isl_printer.c @@ -13,6 +13,12 @@ static __isl_give isl_printer *file_end_line(__isl_take isl_printer *p) return p; } +static __isl_give isl_printer *file_flush(__isl_take isl_printer *p) +{ + fflush(p->file); + return p; +} + static __isl_give isl_printer *file_print_str(__isl_take isl_printer *p, const char *s) { @@ -98,6 +104,12 @@ static __isl_give isl_printer *str_end_line(__isl_take isl_printer *p) return p; } +static __isl_give isl_printer *str_flush(__isl_take isl_printer *p) +{ + p->buf_n = 0; + return p; +} + static __isl_give isl_printer *str_print_str(__isl_take isl_printer *p, const char *s) { @@ -146,6 +158,7 @@ struct isl_printer_ops { isl_int i); __isl_give isl_printer *(*print_str)(__isl_take isl_printer *p, const char *s); + __isl_give isl_printer *(*flush)(__isl_take isl_printer *p); }; static struct isl_printer_ops file_ops = { @@ -153,7 +166,8 @@ static struct isl_printer_ops file_ops = { file_end_line, file_print_int, file_print_isl_int, - file_print_str + file_print_str, + file_flush }; static struct isl_printer_ops str_ops = { @@ -161,7 +175,8 @@ static struct isl_printer_ops str_ops = { str_end_line, str_print_int, str_print_isl_int, - str_print_str + str_print_str, + str_flush }; __isl_give isl_printer *isl_printer_to_file(isl_ctx *ctx, FILE *file) @@ -308,3 +323,8 @@ char *isl_printer_get_str(__isl_keep isl_printer *printer) return NULL; return strdup(printer->buf); } + +__isl_give isl_printer *isl_printer_flush(__isl_take isl_printer *p) +{ + return p->ops->flush(p); +} -- 2.11.4.GIT