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 USERVAR_H_ 21 #define USERVAR_H_ 22 23 typedef enum { 24 UVAR_ADD = 1, 25 UVAR_DELETE 26 } UvarAction; 27 28 typedef enum { 29 UV_PRIVATE = 1 << 0, 30 UV_SHELL = 1 << 1, 31 UV_MAIN = 1 << 2, 32 UV_NODECL = 1 << 3, 33 UV_NOREPL = 1 << 4 34 } UVFlags; 35 36 typedef int (*USER_VAR_FUNC) (const char *, GretlType, int); 37 38 typedef struct user_var_ user_var; 39 40 int user_var_add (const char *name, GretlType type, void *value); 41 42 int user_var_add_or_replace (const char *name, 43 GretlType type, 44 void *value); 45 46 int create_user_var (const char *name, GretlType type); 47 48 int user_var_delete (user_var *uvar); 49 50 int user_var_delete_by_name (const char *name, PRN *prn); 51 52 int gretl_is_user_var (const char *name); 53 54 const char *uservar_name_complete (const char *s); 55 56 GretlType user_var_get_type_by_name (const char *name); 57 58 user_var *get_user_var_by_name (const char *name); 59 60 user_var *get_user_var_of_type_by_name (const char *name, 61 GretlType type); 62 63 user_var *get_user_var_by_data (const void *data); 64 65 const char *user_var_get_name (user_var *uvar); 66 67 const char *user_var_get_name_by_data (const void *data); 68 69 void *user_var_get_value (user_var *uvar); 70 71 GretlType user_var_get_type (user_var *uvar); 72 73 double user_var_get_scalar_value (user_var *uvar); 74 75 int user_var_set_scalar_value (user_var *uvar, double x); 76 77 void *user_var_get_value_by_name (const char *name); 78 79 void *user_var_get_value_and_type (const char *name, 80 GretlType *type); 81 82 char *user_string_resize (const char *name, size_t len, int *err); 83 84 char *user_string_reset (const char *name, const char *repl, 85 int *err); 86 87 void *user_var_steal_value (user_var *uvar); 88 89 void *user_var_unstack_value (user_var *uvar); 90 91 int user_var_get_level (user_var *uvar); 92 93 int user_var_get_flags (user_var *uvar); 94 95 int user_var_set_flag (user_var *uvar, UVFlags flag); 96 97 int user_var_unset_flag (user_var *uvar, UVFlags flag); 98 99 void user_var_privatize_by_name (const char *name); 100 101 int user_var_set_name (user_var *uvar, const char *name); 102 103 int user_var_adjust_level (user_var *uvar, int adj); 104 105 int user_var_localize (const char *origname, 106 const char *localname, 107 GretlType type); 108 109 void set_previous_depth (int d); 110 111 void switch_uservar_hash (int level); 112 113 int copy_as_arg (const char *param_name, GretlType type, 114 void *value); 115 116 int arg_add_as_shell (const char *name, 117 GretlType type, 118 void *value); 119 120 int *copy_list_as_arg (const char *param_name, int *list, 121 int *err); 122 123 int user_var_replace_value (user_var *uvar, void *value, 124 GretlType type); 125 126 int user_matrix_replace_matrix_by_name (const char *name, 127 gretl_matrix *m); 128 129 void destroy_user_vars (void); 130 131 int destroy_user_vars_at_level (int level); 132 133 int destroy_private_matrices (void); 134 135 int destroy_private_uvars (void); 136 137 int delete_user_vars_of_type (GretlType type, PRN *prn); 138 139 int n_user_matrices (void); 140 141 int n_user_scalars (void); 142 143 int n_user_lists (void); 144 145 int n_user_bundles (void); 146 147 GList *user_var_names_for_type (GretlType type); 148 149 GList *user_var_list_for_type (GretlType type); 150 151 void set_user_var_callback (USER_VAR_FUNC); 152 153 int copy_matrix_as (const gretl_matrix *m, const char *newname, 154 int fnarg); 155 156 int private_matrix_add (gretl_matrix *M, const char *name); 157 158 double get_scalar_value_by_name (const char *name, int *err); 159 160 int gretl_is_scalar (const char *name); 161 162 double gretl_scalar_get_value (const char *name, int *err); 163 164 int gretl_scalar_set_value (const char *name, double val); 165 166 int gretl_scalar_add (const char *name, double val); 167 168 int gretl_scalar_add_mutable (const char *name, double val); 169 170 int gretl_scalar_convert_to_matrix (user_var *uvar); 171 172 int private_scalar_add (double val, const char *name); 173 174 int add_auxiliary_scalar (const char *name, double val); 175 176 void set_auxiliary_scalars (void); 177 178 void unset_auxiliary_scalars (void); 179 180 void set_scalar_edit_callback (void (*callback)); 181 182 void destroy_private_scalars (void); 183 184 void print_scalars (PRN *prn); 185 186 void print_scalar_by_name (const char *name, PRN *prn); 187 188 char *get_string_by_name (const char *name); 189 190 char *copy_string_by_name (const char *name, int *err); 191 192 int gretl_is_string (const char *name); 193 194 int is_user_string (const char *name); 195 196 char *temp_name_for_bundle (void); 197 198 int max_varno_in_saved_lists (void); 199 200 int gretl_lists_revise (const int *dlist, int dmin); 201 202 void gretl_lists_cleanup (void); 203 204 int serialize_user_vars (const char *dirname); 205 206 int deserialize_user_vars (const char *dirname); 207 208 int print_user_var_by_name (const char *name, 209 const DATASET *dset, 210 gretlopt opt, 211 PRN *prn); 212 213 int list_user_vars_of_type (const DATASET *dset, 214 PRN *prn); 215 216 int leads_midas_list (int ID, const DATASET *dset, 217 char *listname); 218 219 int in_midas_list (int ID, const DATASET *dset, 220 char *listname); 221 222 const char * 223 get_listname_by_consecutive_content (int l0, int l1); 224 225 int gretl_is_list (const char *name); 226 227 int *get_list_by_name (const char *name); 228 229 int user_list_append (user_var *uvar, const int *add); 230 231 int user_list_subtract (user_var *uvar, int *sub, 232 const DATASET *dset); 233 234 int user_list_replace (user_var *uvar, const int *src); 235 236 int remember_list (const int *list, const char *name, 237 PRN *prn); 238 239 #endif /* USERVAR_H_ */ 240