Example #1
0
static void gen_data_ecl_write_ASCII(const gen_data_type * gen_data , const char * file , gen_data_file_format_type export_format) {
  FILE * stream   = util_fopen(file , "w");
  char * template_buffer;
  int    template_data_offset, template_buffer_size , template_data_skip;

  if (export_format == ASCII_TEMPLATE) {
    gen_data_config_get_template_data( gen_data->config , &template_buffer , &template_data_offset , &template_buffer_size , &template_data_skip);
    util_fwrite( template_buffer , 1 , template_data_offset , stream , __func__);
  }

  {
    ecl_data_type internal_type = gen_data_config_get_internal_data_type(gen_data->config);
    const int size              = gen_data_config_get_data_size( gen_data->config , gen_data->current_report_step );
    int i;
    if (ecl_type_is_float(internal_type)) {
      float * float_data = (float *) gen_data->data;
      for (i=0; i < size; i++)
        fprintf(stream , "%g\n",float_data[i]);
    } else if (ecl_type_is_double(internal_type)) {
      double * double_data = (double *) gen_data->data;
      for (i=0; i < size; i++)
        fprintf(stream , "%lg\n",double_data[i]);
    } else
      util_abort("%s: internal error - wrong type \n",__func__);
  }

  if (export_format == ASCII_TEMPLATE) {
    int new_offset = template_data_offset + template_data_skip;
    util_fwrite( &template_buffer[new_offset] , 1 , template_buffer_size - new_offset , stream , __func__);
  }
  fclose(stream);
}
Example #2
0
void fortio_copy_record(fortio_type * src_stream , fortio_type * target_stream , int buffer_size , void * buffer , bool *at_eof) {
  int bytes_read;
  int record_size = fortio_init_read(src_stream); 
  fortio_init_write(target_stream , record_size);

  bytes_read = 0;
  while (bytes_read < record_size) {
    int bytes;
    if (record_size > buffer_size)
      bytes = buffer_size;
    else
      bytes = record_size - bytes_read;

    util_fread(buffer , 1 , bytes , src_stream->stream     , __func__);
    util_fwrite(buffer , 1 , bytes , target_stream->stream , __func__);
    
    bytes_read += bytes;
  }

  fortio_complete_read(src_stream);
  fortio_complete_write(target_stream);

  if (feof(src_stream->stream))
    *at_eof = true;
  else
    *at_eof = false;
}
Example #3
0
void matrix_fwrite(const matrix_type * matrix , FILE * stream) {
  util_fwrite_int( matrix->rows , stream );
  util_fwrite_int( matrix->columns , stream );

  if (matrix->column_stride == matrix->rows)
    util_fwrite( matrix->data , sizeof * matrix->data , matrix->columns * matrix->rows , stream , __func__);
  else {
    int column;
    for (column=0; column < matrix->columns; column++) {
      if (matrix->row_stride == 1) {
        const double * column_data = &matrix->data[ column * matrix->column_stride ];
        util_fwrite( column_data , sizeof * column_data , matrix->rows , stream , __func__);
      } else {
        int row;
        for (row=0; row < matrix->rows; row++)
          util_fwrite_double( matrix->data[ GET_INDEX( matrix , row , column )] , stream);
      }
    }
  }
}
Example #4
0
void test_fread_invalid_tail() {
  test_work_area_type * work_area = test_work_area_alloc("fortio_invalid" );
  int record_size = 10;
  void * buffer = util_malloc( record_size );
  {
    FILE * stream = util_fopen("PRESSURE" , "w");

    util_fwrite(&record_size , sizeof record_size , 1 , stream , __func__);
    util_fwrite(buffer       , 1                  , record_size , stream , __func__);
    util_fwrite(&record_size , sizeof record_size , 1 , stream , __func__);


    util_fwrite(&record_size , sizeof record_size , 1 , stream , __func__);
    util_fwrite(buffer       , 1 , record_size , stream , __func__);
    record_size += 1;
    util_fwrite(&record_size , sizeof record_size , 1 , stream , __func__);

    fclose(stream);
  }
  {
    fortio_type * fortio = fortio_open_reader( "PRESSURE" , false , false );
    record_size -= 1;
    test_assert_true( fortio_fread_buffer( fortio , buffer , record_size ));
    test_assert_false( fortio_fread_buffer( fortio , buffer , record_size ));
    fortio_fclose( fortio );
  }

  free( buffer );
  test_work_area_free( work_area );
}
Example #5
0
size_t buffer_stream_fwrite_n( const buffer_type * buffer , size_t offset , ssize_t write_size , FILE * stream ) {
  if (offset < 0 || offset > buffer->content_size)
    util_abort("%s: invalid offset:%ld - valid range: [0,%ld) \n",__func__ , offset , offset);
  {
    ssize_t len;

    if (write_size > 0)             /* Normal - write @write_size bytes from offset */
      len = write_size;   
    else if (write_size == 0)       /* Write everything from the offset */   
      len = buffer->content_size - offset;
    else                            /* @write_size < 0 - write everything excluding the last abs(write_size) bytes. */
      len = buffer->content_size - offset - abs( write_size );

    if (len < 0)
      util_abort("%s: invalid length spesifier - tried to write %ld bytes \n",__func__ , len);
    
    util_fwrite( &buffer->data[offset] , 1 , len , stream , __func__);
    return len;
  }
}
Example #6
0
void @TYPE@_vector_fwrite(const @TYPE@_vector_type * vector , FILE * stream) {
  util_fwrite_int( vector->size , stream );
  util_fwrite( &vector->default_value , sizeof vector->default_value , 1 , stream , __func__);
  @TYPE@_vector_fwrite_data( vector , stream );
}
Example #7
0
void @TYPE@_vector_fwrite_data( const @TYPE@_vector_type * vector , FILE * stream ) {
  util_fwrite(  vector->data , sizeof * vector->data , vector->size , stream , __func__);
}
Example #8
0
void fortio_fwrite_record(fortio_type *fortio, const char *buffer , int record_size) {
  fortio_init_write(fortio , record_size);
  util_fwrite( buffer , 1 , record_size , fortio->stream , __func__);
  fortio_complete_write(fortio);
}
Example #9
0
static void gen_data_ecl_write_binary(const gen_data_type * gen_data , const char * file , ecl_data_type export_type) {
  FILE * stream    = util_fopen(file , "w");
  int sizeof_ctype = ecl_type_get_sizeof_ctype( export_type );
  util_fwrite( gen_data->data , sizeof_ctype , gen_data_config_get_data_size( gen_data->config , gen_data->current_report_step) , stream , __func__);
  fclose(stream);
}