1 /*
2  *  gretl -- Gnu Regression, Econometrics and Time-series Library
3  *  Copyright (C) 2001 Allin Cottrell and Riccardo "Jack" Lucchetti
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  */
19 
20 #ifndef GRETL_PRN_H
21 #define GRETL_PRN_H
22 
23 /**
24  * PRN:
25  *
26  * An opaque structure accessed only via gretl_print functions.
27  */
28 
29 typedef struct PRN_ PRN;
30 
31 typedef enum {
32     GRETL_PRINT_STDOUT,
33     GRETL_PRINT_STDERR,
34     GRETL_PRINT_FILE,
35     GRETL_PRINT_BUFFER,
36     GRETL_PRINT_TEMPFILE,
37     GRETL_PRINT_STREAM,
38     GRETL_PRINT_GZFILE
39 } PrnType;
40 
41 typedef enum {
42     GRETL_FORMAT_TXT       = 1 << 0,
43     GRETL_FORMAT_TEX       = 1 << 1,
44     GRETL_FORMAT_DOC       = 1 << 2,
45     GRETL_FORMAT_RTF       = 1 << 3,
46     GRETL_FORMAT_RTF_TXT   = 1 << 4,
47     GRETL_FORMAT_EQN       = 1 << 5,
48     GRETL_FORMAT_SELECTION = 1 << 6,
49     GRETL_FORMAT_CSV       = 1 << 7,
50     GRETL_FORMAT_TAB       = 1 << 8,
51     GRETL_FORMAT_MODELTAB  = 1 << 9,
52     GRETL_FORMAT_LANDSCAPE = 1 << 10,
53     GRETL_FORMAT_HAS_MINUS = 1 << 11
54 } PrnFormat;
55 
56 /* functions follow */
57 
58 PRN *gretl_print_new (PrnType ptype, int *err);
59 
60 void gretl_print_destroy (PRN *prn);
61 
62 PRN *gretl_print_new_with_filename (const char *fname, int *err);
63 
64 PRN *gretl_gzip_print_new (const char *fname, int comp_level,
65 			   int *err);
66 
67 PRN *gretl_print_new_with_tempfile (int *err);
68 
69 int gretl_print_has_tempfile (PRN *prn);
70 
71 const char *gretl_print_get_tempfile_name (PRN *prn);
72 
73 PRN *gretl_print_new_with_buffer (char *buf);
74 
75 PRN *gretl_print_new_with_gchar_buffer (gchar *buf);
76 
77 PRN *gretl_print_new_with_stream (FILE *fp);
78 
79 void gretl_print_detach_stream (PRN *prn);
80 
81 int gretl_print_reset_buffer (PRN *prn);
82 
83 int gretl_print_rename_file (PRN *prn, const char *oldpath,
84 			     const char *newpath);
85 
86 const char *gretl_print_get_buffer (PRN *prn);
87 
88 const char *gretl_print_get_trimmed_buffer (PRN *prn);
89 
90 char *gretl_print_steal_buffer (PRN *prn);
91 
92 int gretl_print_replace_buffer (PRN *prn, char *buf);
93 
94 void gretl_print_get_size (PRN *prn, int *width, int *height);
95 
96 int gretl_print_set_save_position (PRN *prn);
97 
98 void gretl_print_unset_save_position (PRN *prn);
99 
100 char *gretl_print_get_chunk (PRN *prn);
101 
102 char *gretl_print_get_chunk_at (PRN *prn, int pos);
103 
104 int gretl_print_tell (PRN *prn);
105 
106 void gretl_print_set_format (PRN *prn, PrnFormat format);
107 
108 void gretl_print_toggle_doc_flag (PRN *prn);
109 
110 void gretl_print_set_has_minus (PRN *prn);
111 
112 int gretl_print_has_minus (PRN *prn);
113 
114 void gretl_print_set_delim (PRN *prn, char delim);
115 
116 int pprintf (PRN *prn, const char *format, ...);
117 
118 void pprintf2 (PRN *prn, const char *format, ...);
119 
120 int pputs (PRN *prn, const char *s);
121 
122 int pputc (PRN *prn, int c);
123 
124 void gretl_print_ensure_vspace (PRN *prn);
125 
126 void gretl_prn_newline (PRN *prn);
127 
128 void gretl_print_flush_stream (PRN *prn);
129 
130 void gretl_print_close_stream (PRN *prn);
131 
132 int printing_to_standard_stream (PRN *prn);
133 
134 int print_redirection_level (PRN *prn);
135 
136 const char *print_redirection_filename (PRN *prn);
137 
138 int print_redirected_at_level (PRN *prn, int level);
139 
140 int print_start_redirection (PRN *prn, FILE *fp,
141 			     const char *fname,
142 			     const char *strvar);
143 
144 int print_end_redirection (PRN *prn);
145 
146 int plain_format (PRN *prn);
147 
148 int rtf_format (PRN *prn);
149 
150 int rtf_doc_format (PRN *prn);
151 
152 int tex_format (PRN *prn);
153 
154 int tex_doc_format (PRN *prn);
155 
156 int tex_eqn_format (PRN *prn);
157 
158 int csv_format (PRN *prn);
159 
160 int prn_format (PRN *prn);
161 
162 char prn_delim (PRN *prn);
163 
164 int gretl_print_has_buffer (PRN *prn);
165 
166 int gretl_print_alloc (PRN *prn, size_t s);
167 
168 char *gretl_print_read_tempfile (PRN *prn, int *err);
169 
170 #endif /* GRETL_PRN_H */
171