#ifndef ISL_PRINTER_H
#define ISL_PRINTER_H
#include <stdio.h>
#include <isl/ctx.h>
#if defined(__cplusplus)
extern "C" {
#endif
struct isl_printer;
typedef struct isl_printer isl_printer;
__isl_give isl_printer *isl_printer_to_file(isl_ctx *ctx, FILE *file);
__isl_give isl_printer *isl_printer_to_str(isl_ctx *ctx);
void *isl_printer_free(__isl_take isl_printer *printer);
isl_ctx *isl_printer_get_ctx(__isl_keep isl_printer *printer);
FILE *isl_printer_get_file(__isl_keep isl_printer *printer);
__isl_give char *isl_printer_get_str(__isl_keep isl_printer *printer);
__isl_give isl_printer *isl_printer_set_indent(__isl_take isl_printer *p,
int indent);
__isl_give isl_printer *isl_printer_indent(__isl_take isl_printer *p,
int indent);
#define ISL_FORMAT_ISL 0
#define ISL_FORMAT_POLYLIB 1
#define ISL_FORMAT_POLYLIB_CONSTRAINTS 2
#define ISL_FORMAT_OMEGA 3
#define ISL_FORMAT_C 4
#define ISL_FORMAT_LATEX 5
#define ISL_FORMAT_EXT_POLYLIB 6
__isl_give isl_printer *isl_printer_set_output_format(__isl_take isl_printer *p,
int output_format);
int isl_printer_get_output_format(__isl_keep isl_printer *p);
__isl_give isl_printer *isl_printer_set_prefix(__isl_take isl_printer *p,
const char *prefix);
__isl_give isl_printer *isl_printer_set_suffix(__isl_take isl_printer *p,
const char *suffix);
__isl_give isl_printer *isl_printer_set_isl_int_width(__isl_take isl_printer *p,
int width);
__isl_give isl_printer *isl_printer_start_line(__isl_take isl_printer *p);
__isl_give isl_printer *isl_printer_end_line(__isl_take isl_printer *p);
__isl_give isl_printer *isl_printer_print_double(__isl_take isl_printer *p,
double d);
__isl_give isl_printer *isl_printer_print_int(__isl_take isl_printer *p, int i);
__isl_give isl_printer *isl_printer_print_isl_int(__isl_take isl_printer *p,
isl_int i);
__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
#endif