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_BUNDLE_H_
21 #define GRETL_BUNDLE_H_
22 
23 #define BUNDLE_PRINT "bundle-print"
24 #define BUNDLE_PLOT  "bundle-plot"
25 #define BUNDLE_TEST  "bundle-test"
26 #define BUNDLE_FCAST "bundle-fcast"
27 #define BUNDLE_EXTRA "bundle-extra"
28 #define GUI_MAIN     "gui-main"
29 #define GUI_PRECHECK "gui-precheck"
30 #define LIST_MAKER   "list-maker"
31 
32 typedef enum {
33     BUNDLE_PLAIN,
34     BUNDLE_KALMAN
35 } BundleType;
36 
37 typedef struct bundled_item_ bundled_item;
38 
39 gretl_bundle *gretl_bundle_new (void);
40 
41 int gretl_is_bundle (const char *name);
42 
43 int type_can_be_bundled (GretlType type);
44 
45 gretl_bundle *get_bundle_by_name (const char *name);
46 
47 BundleType gretl_bundle_get_type (gretl_bundle *bundle);
48 
49 void *gretl_bundle_get_content (gretl_bundle *bundle);
50 
51 int gretl_bundles_swap_content (gretl_bundle *b1, gretl_bundle *b2);
52 
53 void *gretl_bundle_get_data (gretl_bundle *bundle, const char *key,
54 			     GretlType *type, int *size, int *err);
55 
56 void *gretl_bundle_steal_data (gretl_bundle *bundle, const char *key,
57 			       GretlType *type, int *size, int *err);
58 
59 void *gretl_bundle_get_private_data (gretl_bundle *bundle);
60 
61 GretlType gretl_bundle_get_member_type (gretl_bundle *bundle,
62 					const char *key,
63 					int *err);
64 
65 int gretl_bundle_has_key (gretl_bundle *bundle,
66 			  const char *key);
67 
68 gretl_matrix *gretl_bundle_get_matrix (gretl_bundle *bundle,
69 				       const char *key,
70 				       int *err);
71 
72 double *gretl_bundle_get_series (gretl_bundle *bundle,
73 				 const char *key,
74 				 int *n, int *err);
75 
76 int *gretl_bundle_get_list (gretl_bundle *bundle,
77 			    const char *key,
78 			    int *err);
79 
80 double gretl_bundle_get_scalar (gretl_bundle *bundle,
81 				const char *key,
82 				int *err);
83 
84 int gretl_bundle_get_int (gretl_bundle *bundle,
85 			  const char *key,
86 			  int *err);
87 
88 int gretl_bundle_get_int_deflt (gretl_bundle *bundle,
89 				const char *key,
90 				int deflt);
91 
92 int gretl_bundle_get_bool (gretl_bundle *bundle,
93 			   const char *key,
94 			   int deflt);
95 
96 unsigned int gretl_bundle_get_unsigned (gretl_bundle *bundle,
97 					const char *key,
98 					int *err);
99 
100 const char *gretl_bundle_get_string (gretl_bundle *bundle,
101 				     const char *key,
102 				     int *err);
103 
104 gretl_array *gretl_bundle_get_array (gretl_bundle *bundle,
105 				     const char *key,
106 				     int *err);
107 
108 gretl_bundle *gretl_bundle_get_bundle (gretl_bundle *bundle,
109 				       const char *key,
110 				       int *err);
111 
112 const char *gretl_bundle_get_note (gretl_bundle *bundle, const char *key);
113 
114 const char *gretl_bundle_get_creator (gretl_bundle *bundle);
115 
116 const char *bundled_item_get_key (bundled_item *item);
117 
118 void *bundled_item_get_data (bundled_item *item, GretlType *type,
119 			     int *size);
120 
121 const char *bundled_item_get_note (bundled_item *item);
122 
123 int gretl_bundle_donate_data (gretl_bundle *bundle, const char *key,
124 			      void *ptr, GretlType type, int size);
125 
126 int gretl_bundle_set_data (gretl_bundle *bundle, const char *key,
127 			   void *ptr, GretlType type, int size);
128 
129 int gretl_bundle_set_string (gretl_bundle *bundle, const char *key,
130 			     const char *str);
131 
132 int gretl_bundle_set_scalar (gretl_bundle *bundle, const char *key,
133 			     double val);
134 
135 int gretl_bundle_set_int (gretl_bundle *bundle, const char *key,
136 			  int val);
137 
138 int gretl_bundle_set_unsigned (gretl_bundle *bundle, const char *key,
139 			       unsigned int val);
140 
141 int gretl_bundle_set_series (gretl_bundle *bundle, const char *key,
142 			     const double *x, int n);
143 
144 int gretl_bundle_set_list (gretl_bundle *bundle, const char *key,
145 			   const int *list);
146 
147 int gretl_bundle_set_matrix (gretl_bundle *bundle, const char *key,
148 			     const gretl_matrix *m);
149 
150 int gretl_bundle_set_note (gretl_bundle *bundle, const char *key,
151 			   const char *note);
152 
153 int gretl_bundle_delete_data (gretl_bundle *bundle, const char *key);
154 
155 int gretl_bundle_rekey_data (gretl_bundle *bundle, const char *oldkey,
156 			     const char *newkey);
157 
158 int gretl_bundle_copy_as (const char *name, const char *copyname);
159 
160 gretl_bundle *gretl_bundle_copy (const gretl_bundle *bundle, int *err);
161 
162 int gretl_bundle_set_creator (gretl_bundle *b, const char *name);
163 
164 int gretl_bundle_print (gretl_bundle *bundle, PRN *prn);
165 
166 int gretl_bundle_print_tree (gretl_bundle *bundle, PRN *prn);
167 
168 void gretl_bundle_debug_print (gretl_bundle *bundle, const char *msg);
169 
170 int gretl_bundle_is_stacked (gretl_bundle *b);
171 
172 int gretl_bundle_get_n_keys (gretl_bundle *b);
173 
174 int gretl_bundle_get_n_members (gretl_bundle *b);
175 
176 GList *gretl_bundle_get_lists (gretl_bundle *b);
177 
178 int gretl_bundle_has_content (gretl_bundle *b);
179 
180 gretl_bundle *gretl_bundle_pull_from_stack (const char *name,
181 					    int *err);
182 
183 gretl_bundle *gretl_bundle_union (const gretl_bundle *bundle1,
184 				  const gretl_bundle *bundle2,
185 				  int *err);
186 
187 int gretl_bundle_append (gretl_bundle *bundle1,
188 			 const gretl_bundle *bundle2);
189 
190 void gretl_bundle_destroy (gretl_bundle *bundle);
191 
192 void gretl_bundle_void_content (gretl_bundle *bundle);
193 
194 void gretl_bundle_serialize (gretl_bundle *b, const char *name,
195 			     PRN *prn);
196 
197 gretl_bundle *gretl_bundle_deserialize (void *p1, void *p2,
198 					int *err);
199 
200 int gretl_bundle_write_to_file (gretl_bundle *b,
201 				const char *fname,
202 				int to_dotdir);
203 
204 char *gretl_bundle_write_to_buffer (gretl_bundle *b,
205 				    int rank,
206 				    int *bytes,
207 				    int *err);
208 
209 gretl_bundle *gretl_bundle_read_from_file (const char *fname,
210 					   int from_dotdir,
211 					   int *err);
212 
213 gretl_bundle *gretl_bundle_read_from_buffer (const char *buf,
214 					     int len,
215 					     int *err);
216 
217 gretl_array *gretl_bundle_get_keys (gretl_bundle *b, int *err);
218 
219 char **gretl_bundle_get_keys_raw (gretl_bundle *b, int *ns);
220 
221 gretl_bundle *get_sysinfo_bundle (int *err);
222 
223 void *sysinfo_bundle_get_data (const char *key,
224 			       GretlType *type,
225 			       int *err);
226 
227 gretl_bundle *bundle_from_model (MODEL *pmod,
228 				 DATASET *dset,
229 				 int *err);
230 
231 gretl_bundle *bundle_from_system (void *ptr,
232 				  int type,
233 				  DATASET *dset,
234 				  int *err);
235 
236 gretl_bundle *kalman_bundle_new (gretl_matrix *M[],
237 				 int copy[], int nmat,
238 				 int *err);
239 
240 int gretl_bundle_extract_args (gretl_bundle *defaults,
241 			       gretl_bundle *input,
242 			       gretl_array *reqd,
243 			       PRN *prn, int *err);
244 
245 GList *gretl_bundle_get_sorted_items (gretl_bundle *b);
246 
247 void gretl_bundle_cleanup (void);
248 
249 #endif /* GRETL_BUNDLE_H_ */
250 
251 
252 
253