Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}