int32_t SDDS_TransferAllArrayDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, uint32_t mode) { SDDS_LAYOUT *target, *source; int32_t i; if (!SDDS_CheckDataset(SDDS_target, "SDDS_TransferAllArrayDefinitions")) return(0); if (!SDDS_CheckDataset(SDDS_source, "SDDS_TransferAllArrayDefinitions")) return(0); if (mode) { /* haven't done this one yet */ SDDS_SetError("Nonzero mode not supported for arrays (SDDS_TransferAllArrayDefinitions)"); return 0; } target = &SDDS_target->layout; source = &SDDS_source->layout; SDDS_DeferSavingLayout(1); for (i=0; i<source->n_arrays; i++) if (SDDS_DefineArray(SDDS_target, source->array_definition[i].name, source->array_definition[i].symbol, source->array_definition[i].units, source->array_definition[i].description, source->array_definition[i].format_string, source->array_definition[i].type, source->array_definition[i].field_length, source->array_definition[i].dimensions, source->array_definition[i].group_name)<0) { SDDS_SetError("Unable to define parameter (SDDS_TransferAllArrayDefinitions)"); SDDS_DeferSavingLayout(0); return 0; } SDDS_DeferSavingLayout(0); return 1; }
int32_t SDDS_TransferArrayDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName) { ARRAY_DEFINITION *ardef; if (!name || SDDS_StringIsBlank(name)) { SDDS_SetError("Unable to transfer array definition--NULL or blank name passed (SDDS_TransferArrayDefinition)"); return 0; } if (!newName) newName = name; if (!(ardef = SDDS_GetArrayDefinition(source, name))) { SDDS_SetError("Unable to transfer array definition--unknown array named (SDDS_TransferArrayDefinition)"); return 0; } if (SDDS_GetArrayIndex(target, newName)>=0) { SDDS_SetError("Unable to transfer array definition--array already present (SDDS_TransferArrayDefinition)"); return 0; } if (SDDS_DefineArray(target, newName, ardef->symbol, ardef->units, ardef->description, ardef->format_string, ardef->type, ardef->field_length, ardef->dimensions, ardef->group_name)<0) { SDDS_FreeArrayDefinition(ardef); SDDS_SetError("Unable to transfer array definition--call to define array failed (SDDS_TransferArrayDefinition)"); return 0; } SDDS_FreeArrayDefinition(ardef); return 1; }
int32_t SDDS_CopyLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source) { SDDS_LAYOUT *target, *source; int32_t i; if (!SDDS_CheckDataset(SDDS_target, "SDDS_CopyLayout")) return(0); if (!SDDS_CheckDataset(SDDS_source, "SDDS_CopyLayout")) return(0); target = &SDDS_target->layout; source = &SDDS_source->layout; target->version = source->version; target->data_mode = source->data_mode; target->data_mode.no_row_counts = 0; target->data_mode.fixed_row_count = 0; target->layout_written = 0; target->byteOrderDeclared = 0; if (source->description) SDDS_CopyString(&target->description, source->description); if (source->contents) SDDS_CopyString(&target->contents, source->contents); SDDS_DeferSavingLayout(1); for (i=0; i<source->n_columns; i++) if (SDDS_DefineColumn(SDDS_target, source->column_definition[i].name, source->column_definition[i].symbol, source->column_definition[i].units, source->column_definition[i].description, source->column_definition[i].format_string, source->column_definition[i].type, source->column_definition[i].field_length)<0) { SDDS_SetError("Unable to define column (SDDS_CopyLayout)"); return(0); } for (i=0; i<source->n_parameters; i++) if (SDDS_DefineParameter(SDDS_target, source->parameter_definition[i].name, source->parameter_definition[i].symbol, source->parameter_definition[i].units, source->parameter_definition[i].description, source->parameter_definition[i].format_string, source->parameter_definition[i].type, source->parameter_definition[i].fixed_value)<0) { SDDS_SetError("Unable to define parameter (SDDS_CopyLayout)"); return(0); } for (i=0; i<source->n_associates; i++) if (SDDS_DefineAssociate(SDDS_target, source->associate_definition[i].name, source->associate_definition[i].filename, source->associate_definition[i].path, source->associate_definition[i].description, source->associate_definition[i].contents, source->associate_definition[i].sdds)<0) { SDDS_SetError("Unable to define associate (SDDS_CopyLayout)"); return(0); } for (i=0; i<source->n_arrays; i++) if (SDDS_DefineArray(SDDS_target, source->array_definition[i].name, source->array_definition[i].symbol, source->array_definition[i].units, source->array_definition[i].description, source->array_definition[i].format_string, source->array_definition[i].type, source->array_definition[i].field_length, source->array_definition[i].dimensions, source->array_definition[i].group_name)<0) { SDDS_SetError("Unable to define array (SDDS_CopyLayout)"); return(0); } SDDS_DeferSavingLayout(0); if (!SDDS_SaveLayout(SDDS_target)) { SDDS_SetError("Unable to save layout (SDDS_CopyLayout)"); return(0); } return(1); }
int32_t SDDS_AppendLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, uint32_t mode) { SDDS_LAYOUT *source; int32_t i; if (!SDDS_CheckDataset(SDDS_target, "SDDS_AppendLayout")) return(0); if (!SDDS_CheckDataset(SDDS_source, "SDDS_AppendLayout")) return(0); source = &SDDS_source->layout; SDDS_DeferSavingLayout(1); for (i=0; i<source->n_columns; i++) if (SDDS_GetColumnIndex(SDDS_target, source->column_definition[i].name)<0 && SDDS_DefineColumn(SDDS_target, source->column_definition[i].name, source->column_definition[i].symbol, source->column_definition[i].units, source->column_definition[i].description, source->column_definition[i].format_string, source->column_definition[i].type, source->column_definition[i].field_length)<0) { SDDS_DeferSavingLayout(0); SDDS_SetError("Unable to define column (SDDS_AppendLayout)"); return(0); } for (i=0; i<source->n_parameters; i++) if (SDDS_GetParameterIndex(SDDS_target, source->parameter_definition[i].name)<0 && SDDS_DefineParameter(SDDS_target, source->parameter_definition[i].name, source->parameter_definition[i].symbol, source->parameter_definition[i].units, source->parameter_definition[i].description, source->parameter_definition[i].format_string, source->parameter_definition[i].type, source->parameter_definition[i].fixed_value)<0) { SDDS_DeferSavingLayout(0); SDDS_SetError("Unable to define parameter (SDDS_AppendLayout)"); return(0); } for (i=0; i<source->n_associates; i++) if (SDDS_GetAssociateIndex(SDDS_target,source->associate_definition[i].name)<0 && SDDS_DefineAssociate(SDDS_target, source->associate_definition[i].name, source->associate_definition[i].filename, source->associate_definition[i].path, source->associate_definition[i].description, source->associate_definition[i].contents, source->associate_definition[i].sdds)<0) { SDDS_DeferSavingLayout(0); SDDS_SetError("Unable to define associate (SDDS_AppendLayout)"); return(0); } for (i=0; i<source->n_arrays; i++) if (SDDS_GetArrayIndex(SDDS_target, source->array_definition[i].name)<0 && SDDS_DefineArray(SDDS_target, source->array_definition[i].name, source->array_definition[i].symbol, source->array_definition[i].units, source->array_definition[i].description, source->array_definition[i].format_string, source->array_definition[i].type, source->array_definition[i].field_length, source->array_definition[i].dimensions, source->array_definition[i].group_name)<0) { SDDS_DeferSavingLayout(0); SDDS_SetError("Unable to define array (SDDS_AppendLayout)"); return(0); } SDDS_DeferSavingLayout(0); if (!SDDS_SaveLayout(SDDS_target)) { SDDS_SetError("Unable to save layout (SDDS_AppendLayout)"); return(0); } return(1); }