static midas_info *minfo_from_array (gretl_array *A, int *nmidas, int *err) { int n = gretl_array_get_length(A); midas_info *m, *minfo = NULL; if (n == 0) { *err = E_DATA; } else { minfo = malloc(n * sizeof *minfo); if (minfo == NULL) { *err = E_ALLOC; } } if (minfo != NULL) { gretl_bundle *b; int i; for (i=0; i<n && !*err; i++) { m = &minfo[i]; midas_info_init(m); b = gretl_array_get_bundle(A, i); if (b == NULL) { *err = E_DATA; } else { strcpy(m->lname, gretl_bundle_get_string(b, "lname", err)); strcpy(m->mname, gretl_bundle_get_string(b, "mname", err)); m->prelag = gretl_bundle_get_int(b, "prelag", err); m->minlag = gretl_bundle_get_int(b, "minlag", err); m->maxlag = gretl_bundle_get_int(b, "maxlag", err); m->type = gretl_bundle_get_int(b, "type", err); m->nparm = gretl_bundle_get_int(b, "nparm", err); } } if (*err) { free(minfo); minfo = NULL; } } if (!*err) { *nmidas = n; } return minfo; }
static void print_bundled_item (gpointer key, gpointer value, gpointer p) { bundled_item *item = value; const gchar *kstr = key; gretl_array *a; gretl_matrix *m; double x; char *s; PRN *prn = p; switch (item->type) { case GRETL_TYPE_DOUBLE: x = *(double *) item->data; if (na(x)) { pprintf(prn, " %s = NA", kstr); } else { pprintf(prn, " %s = %g", kstr, x); } break; case GRETL_TYPE_STRING: s = (char *) item->data; if (strlen(s) < 64) { pprintf(prn, " %s = %s", kstr, s); } else { pprintf(prn, " %s (%s)", kstr, gretl_type_get_name(item->type)); } break; case GRETL_TYPE_BUNDLE: pprintf(prn, " %s (%s)", kstr, gretl_type_get_name(item->type)); break; case GRETL_TYPE_MATRIX: case GRETL_TYPE_MATRIX_REF: m = item->data; if (m->rows == 1 && m->cols == 1) { pprintf(prn, " %s = %g", kstr, m->val[0]); } else { pprintf(prn, " %s (%s: %d x %d)", kstr, gretl_type_get_name(item->type), m->rows, m->cols); } break; case GRETL_TYPE_SERIES: pprintf(prn, " %s (%s: length %d)", kstr, gretl_type_get_name(item->type), item->size); break; case GRETL_TYPE_ARRAY: a = item->data; { GretlType t = gretl_array_get_type(a); int n = gretl_array_get_length(a); pprintf(prn, " %s = array of %s, length %d", kstr, gretl_type_get_name(t), n); } break; default: break; } if (item->note != NULL) { pprintf(prn, " %s\n", item->note); } else { pputc(prn, '\n'); } }