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_ARRAY_H_
21 #define GRETL_ARRAY_H_
22 
23 void gretl_array_destroy (gretl_array *A);
24 
25 void gretl_array_void_content (gretl_array *A);
26 
27 void gretl_array_nullify_content (gretl_array *A);
28 
29 void gretl_array_nullify_elements (gretl_array *A);
30 
31 gretl_array *gretl_array_new (GretlType type, int n, int *err);
32 
33 gretl_array *gretl_array_from_strings (char **S, int n,
34 				       int copy, int *err);
35 
36 gretl_array *gretl_matrix_array_sized (int n, int r, int c,
37 				       int *err);
38 
39 gretl_array *gretl_singleton_array (void *ptr, GretlType atype,
40 				    int copy, int *err);
41 
42 void *gretl_array_get_element (gretl_array *A, int i,
43 			       GretlType *type,
44 			       int *err);
45 
46 int gretl_array_set_element (gretl_array *A, int i,
47 			     void *ptr, GretlType type,
48 			     int copy);
49 
50 int gretl_array_delete_element (gretl_array *A, int i);
51 
52 void *gretl_array_get_data (gretl_array *A, int i);
53 
54 int gretl_array_set_data (gretl_array *A, int i, void *ptr);
55 
56 int gretl_array_set_type (gretl_array *A, GretlType type);
57 
58 char **gretl_array_get_strings (gretl_array *A, int *ns);
59 
60 char **gretl_array_steal_strings (gretl_array *A, int *ns);
61 
62 char **gretl_array_get_stringify_strings (gretl_array *A,
63 					  int nreq, int *ns,
64 					  int *err);
65 
66 char *gretl_strings_array_flatten (gretl_array *A, int space, int *err);
67 
68 gretl_matrix *gretl_strings_array_pos (gretl_array *A,
69 				       const char *s,
70 				       int *err);
71 
72 int gretl_array_drop_string (gretl_array *A, const char *s);
73 
74 GretlType gretl_array_get_type (gretl_array *A);
75 
76 GretlType gretl_array_get_content_type (gretl_array *A);
77 
78 int gretl_array_get_length (gretl_array *A);
79 
80 int gretl_array_get_next_index (gretl_array *A);
81 
82 int gretl_array_set_string (gretl_array *A, int i,
83 			    char *s, int copy);
84 
85 int gretl_array_append_string (gretl_array *A,
86 			       char *s,
87 			       int copy);
88 
89 int gretl_array_set_matrix (gretl_array *A, int i,
90 			    gretl_matrix *m,
91 			    int copy);
92 
93 int gretl_array_append_matrix (gretl_array *A,
94 			       gretl_matrix *m,
95 			       int copy);
96 
97 int gretl_array_set_bundle (gretl_array *A, int i,
98 			    gretl_bundle *b,
99 			    int copy);
100 
101 int gretl_array_append_bundle (gretl_array *A,
102 			       gretl_bundle *b,
103 			       int copy);
104 
105 int gretl_array_set_array (gretl_array *A, int i,
106 			   gretl_array *ai,
107 			   int copy);
108 
109 int gretl_array_append_array (gretl_array *A,
110 			      gretl_array *a,
111 			      int copy);
112 
113 gretl_bundle *gretl_array_get_bundle (gretl_array *A,
114 				      int i);
115 
116 gretl_matrix *gretl_matrix_array_flatten (gretl_array *A,
117 					  int vcat,
118 					  int *err);
119 
120 gretl_array *gretl_matrix_split_by (const gretl_matrix *X,
121 				    const gretl_matrix *v,
122 				    int colwise, int *err);
123 
124 int gretl_array_set_list (gretl_array *A, int i,
125 			  int *L, int copy);
126 
127 int gretl_array_append_list (gretl_array *A,
128 			     int *L, int copy);
129 
130 int gretl_array_append_object (gretl_array *A,
131 			       void *ptr,
132 			       int copy);
133 
134 int gretl_array_copy_into (gretl_array *A1,
135 			   const gretl_array *A2);
136 
137 gretl_array *gretl_arrays_join (gretl_array *A,
138 				gretl_array *B,
139 				int *err);
140 
141 gretl_array *gretl_arrays_union (gretl_array *A,
142 				 gretl_array *B,
143 				 int *err);
144 
145 gretl_array *gretl_arrays_intersection (gretl_array *A,
146 					gretl_array *B,
147 					int *err);
148 
149 gretl_array *gretl_array_copy (const gretl_array *A,
150 			       int *err);
151 
152 gretl_array *gretl_strings_sort (const gretl_array *A,
153 				 int descending,
154 				 int *err);
155 
156 int gretl_array_copy_as (const char *name, const char *copyname,
157 			 GretlType copytype);
158 
159 gretl_array *gretl_array_copy_subspec (gretl_array *A,
160 				       int *list,
161 				       int *err);
162 
163 gretl_array *get_array_by_name (const char *name);
164 
165 gretl_array *get_strings_array_by_name (const char *name);
166 
167 gretl_array *gretl_array_pull_from_stack (const char *name,
168 					  int *err);
169 
170 int gretl_array_print (gretl_array *A, PRN *prn);
171 
172 int gretl_array_print_range (gretl_array *A,
173 			     int imin, int imax,
174 			     PRN *prn);
175 
176 void gretl_array_serialize (gretl_array *A, PRN *prn);
177 
178 gretl_array *gretl_array_deserialize (void *p1, void *p2,
179 				      int *err);
180 
181 gretl_array *gretl_matrix_col_split (const gretl_matrix *m,
182 				     int leadcols, int maxcols,
183 				     int *err);
184 
185 #endif /* GRETL_ARRAY_H_ */
186