gretl_array *gretl_arrays_join (gretl_array *A, gretl_array *B, int *err) { gretl_array *C = NULL; if (A == NULL || B == NULL) { *err = E_DATA; } else if (A->type != B->type) { *err = E_TYPES; } else { int n = A->n + B->n; C = gretl_array_new(A->type, n, err); } if (!*err) { *err = gretl_array_copy_content(C, A, 0); } if (!*err) { *err = gretl_array_copy_content(C, B, A->n); } if (*err && C != NULL) { gretl_array_destroy(C); C = NULL; } return C; }
gretl_array *gretl_array_copy (const gretl_array *A, int *err) { gretl_array *Acpy = NULL; if (A != NULL) { Acpy = gretl_array_new(A->type, A->n, err); if (!*err) { *err = gretl_array_copy_content(Acpy, A, 0); } } return Acpy; }
static int model_add_minfo_array (MODEL *pmod, midas_info *minfo, int nmidas) { gretl_array *A; int err = 0; A = gretl_array_new(GRETL_TYPE_BUNDLES, nmidas, &err); if (A != NULL) { midas_info *m; gretl_bundle *b; int i; for (i=0; i<nmidas && !err; i++) { b = gretl_bundle_new(); if (b == NULL) { err = E_ALLOC; } else { m = &minfo[i]; gretl_bundle_set_string(b, "lname", m->lnam0); gretl_bundle_set_string(b, "mname", m->mname); gretl_bundle_set_int(b, "prelag", m->prelag); gretl_bundle_set_int(b, "minlag", m->minlag); gretl_bundle_set_int(b, "maxlag", m->maxlag); gretl_bundle_set_int(b, "type", m->type); gretl_bundle_set_int(b, "nparm", m->nparm); err = gretl_array_set_bundle(A, i, b, 0); } } if (err) { gretl_array_destroy(A); } else { gretl_model_set_array_as_data(pmod, "midas_info", A); } } return err; }
gretl_array *gretl_array_deserialize (void *p1, void *p2, int *err) { xmlNodePtr node = p1; xmlDocPtr doc = p2; GretlType type = 0; int n = 0; gretl_array *A = NULL; if (xmlStrcmp(node->name, (XUC) "gretl-array")) { fprintf(stderr, "deserialize array: node is not gretl-array!\n"); *err = E_DATA; } else { type = gretl_xml_get_type_property(node); if (type == 0) { fprintf(stderr, "deserialize array: couldn't get array type\n"); *err = E_DATA; } } if (!*err && !gretl_xml_get_prop_as_int(node, "length", &n)) { fprintf(stderr, "deserialize array: couldn't get length\n"); *err = E_DATA; } if (!*err) { A = gretl_array_new(type, n, err); } if (A != NULL && n > 0) { *err = deserialize_array_elements(A, node->xmlChildrenNode, doc); if (*err) { gretl_array_destroy(A); A = NULL; } } return A; }
gretl_array *gretl_array_from_strings (char **S, int n, int copy, int *err) { gretl_array *A; A = gretl_array_new(GRETL_TYPE_STRINGS, 0, err); if (A != NULL) { if (copy) { A->data = (void **) strings_array_dup(S, n); if (A->data == NULL) { *err = E_ALLOC; } } else { A->data = (void **) S; } if (!*err) { A->n = n; } } return A; }