9 typedef struct OutputStream OutputStream;
23 #define OUTPUT_WRITE_FN(fn) int (fn)(OutputStream *stream, const char *text)
33 #define OUTPUT_DEL_FN(fn) void *(fn)(void *data)
37 enum {OUTPUT_WORKLEN=1024};
42 OUTPUT_WRITE_FN(*write_fn);
43 OUTPUT_DEL_FN(*del_fn);
44 char work[OUTPUT_WORKLEN];
53 OutputStream *new_OutputStream(
void);
60 int open_OutputStream(OutputStream *stream,
void *data,
61 OUTPUT_WRITE_FN(*write_fn), OUTPUT_DEL_FN(*del_fn));
67 void close_OutputStream(OutputStream *stream);
72 int open_FileOutputStream(OutputStream *stream,
char *dir,
char *name);
73 int open_StringOutputStream(OutputStream *stream,
int truncate,
74 char *buffer,
size_t size);
75 int open_StdioOutputStream(OutputStream *stream,
int do_close, FILE *fp);
76 int open_LprintfOutputStream(OutputStream *stream, FILE *fp);
77 int open_StdoutStream(OutputStream *stream);
78 int open_StderrStream(OutputStream *stream);
83 OutputStream *del_OutputStream(OutputStream *stream);
88 int write_OutputStream(OutputStream *stream,
const char *s);
93 int nwrite_OutputStream(OutputStream *stream,
const char *s,
size_t n);
98 int clr_StringOutputStream(OutputStream *stream);
106 int output_quoted_string(OutputStream *stream,
char *
string);
123 ET_ALL = (ET_BELL | ET_BS | ET_FF | ET_NL | ET_CR | ET_HT | ET_VT | ET_ESC |
124 ET_QUOTE | ET_SPEECH | ET_OTHER),
144 int output_string(OutputStream *stream,
unsigned filter,
char *flags,
145 unsigned min_width,
int max_width,
int max_char,
152 int output_printf(OutputStream *stream,
const char *fmt, ...);
153 int output_vprintf(OutputStream *stream,
const char *fmt, va_list ap);
165 int output_long(OutputStream *stream, OutputBase base,
char *flags,
int width,
166 int precision,
long lval);
167 int output_ulong(OutputStream *stream, OutputBase base,
char *flags,
int width,
168 int precision,
unsigned long ulval);
169 int output_double(OutputStream *stream,
char *flags,
int width,
int precision,
170 char type,
double dval);
172 int output_sexagesimal(OutputStream *stream,
char *flags,
int width,
173 int ninteger,
int precision,
double number);
174 int output_date(OutputStream *stream,
char *flags,
int width,
175 int day,
int month,
int year);
176 int output_spaces(OutputStream *stream,
int n);
177 int output_zeros(OutputStream *stream,
int n);
178 int output_interval(OutputStream *stream,
char *flags,
int width,
179 int precision,
double interval);