diff options
Diffstat (limited to 'src/lib/tng_io.c')
-rw-r--r-- | src/lib/tng_io.c | 1743 |
1 files changed, 1159 insertions, 584 deletions
diff --git a/src/lib/tng_io.c b/src/lib/tng_io.c index 4f9f768..f2a0e3f 100644 --- a/src/lib/tng_io.c +++ b/src/lib/tng_io.c @@ -236,10 +236,18 @@ struct tng_trajectory { char *output_file_path; /** A handle to the output file */ FILE *output_file; - /** The endianness of the input file */ - tng_file_endianness input_endianness; - /** The endianness of the output file */ - tng_file_endianness output_endianness; + /** Function to swap 32 bit values to and from the endianness of the + * input file */ + tng_function_status (*input_endianness_swap_func_32)(const tng_trajectory_t, int32_t *); + /** Function to swap 64 bit values to and from the endianness of the + * input file */ + tng_function_status (*input_endianness_swap_func_64)(const tng_trajectory_t, int64_t *); + /** Function to swap 32 bit values to and from the endianness of the + * input file */ + tng_function_status (*output_endianness_swap_func_32)(const tng_trajectory_t, int32_t *); + /** Function to swap 64 bit values to and from the endianness of the + * input file */ + tng_function_status (*output_endianness_swap_func_64)(const tng_trajectory_t, int64_t *); /** The endianness of 32 bit values of the current computer */ tng_endianness_32 endianness_32; /** The endianness of 64 bit values of the current computer */ @@ -335,7 +343,7 @@ struct tng_trajectory { * @return TNG_SUCCESS (0) if successful, TNG_FAILURE (1) if the current * byte order is not recognised. */ -static inline tng_function_status tng_byte_order_to_big_endian_32 +static tng_function_status tng_swap_byte_order_big_endian_32 (const tng_trajectory_t tng_data, int32_t *v) { switch(tng_data->endianness_32) @@ -373,7 +381,7 @@ static inline tng_function_status tng_byte_order_to_big_endian_32 * @return TNG_SUCCESS (0) if successful, TNG_FAILURE (1) if the current * byte order is not recognised. */ -static inline tng_function_status tng_byte_order_to_big_endian_64 +static tng_function_status tng_swap_byte_order_big_endian_64 (const tng_trajectory_t tng_data, int64_t *v) { switch(tng_data->endianness_64) @@ -425,7 +433,7 @@ static inline tng_function_status tng_byte_order_to_big_endian_64 * @return TNG_SUCCESS (0) if successful, TNG_FAILURE (1) if the current * byte order is not recognised. */ -static inline tng_function_status tng_byte_order_to_little_endian_32 +static tng_function_status tng_swap_byte_order_little_endian_32 (const tng_trajectory_t tng_data, int32_t *v) { switch(tng_data->endianness_32) @@ -463,7 +471,7 @@ static inline tng_function_status tng_byte_order_to_little_endian_32 * @return TNG_SUCCESS (0) if successful, TNG_FAILURE (1) if the current * byte order is not recognised. */ -static inline tng_function_status tng_byte_order_to_little_endian_64 +static tng_function_status tng_swap_byte_order_little_endian_64 (const tng_trajectory_t tng_data, int64_t *v) { switch(tng_data->endianness_64) @@ -739,11 +747,71 @@ static tng_function_status tng_block_header_read return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, - &block->header_contents_size) != TNG_SUCCESS) + /* If this was the size of the general info block check the endianness */ + if(ftell(tng_data->input_file) < 9) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + /* File is little endian */ + if ( *(const uint8_t*)&block->header_contents_size != 0x00 && + *(const uint8_t*)(&block->header_contents_size + 7) == 0x00) + { + /* If the architecture endianness is little endian no byte swap + * will be needed. Otherwise use the functions to swap to little + * endian */ + if(tng_data->endianness_32 == TNG_LITTLE_ENDIAN_32) + { + tng_data->input_endianness_swap_func_32 = 0; + } + else + { + tng_data->input_endianness_swap_func_32 = + &tng_swap_byte_order_little_endian_32; + } + if(tng_data->endianness_64 == TNG_LITTLE_ENDIAN_64) + { + tng_data->input_endianness_swap_func_64 = 0; + } + else + { + tng_data->input_endianness_swap_func_64 = + &tng_swap_byte_order_little_endian_64; + } + } + /* File is big endian */ + else + { + /* If the architecture endianness is big endian no byte swap + * will be needed. Otherwise use the functions to swap to big + * endian */ + if(tng_data->endianness_32 == TNG_BIG_ENDIAN_32) + { + tng_data->input_endianness_swap_func_32 = 0; + } + else + { + tng_data->input_endianness_swap_func_32 = + &tng_swap_byte_order_big_endian_32; + } + if(tng_data->endianness_64 == TNG_BIG_ENDIAN_64) + { + tng_data->input_endianness_swap_func_64 = 0; + } + else + { + tng_data->input_endianness_swap_func_64 = + &tng_swap_byte_order_big_endian_64; + } + } + } + + if(tng_data->input_endianness_swap_func_64) + { + if(tng_data->input_endianness_swap_func_64(tng_data, + &block->header_contents_size) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } /* Move the reading position to the beginning of the header. */ @@ -782,20 +850,31 @@ static tng_function_status tng_block_header_read /* Copy the respective parameters from the header contents block */ memcpy(&block->block_contents_size, block->header_contents+offset, sizeof(block->block_contents_size)); - if(tng_byte_order_to_big_endian_64(tng_data, &block->block_contents_size) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &block->block_contents_size) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } + offset += sizeof(block->block_contents_size); memcpy(&block->id, block->header_contents+offset, sizeof(block->id)); - if(tng_byte_order_to_big_endian_64(tng_data, &block->id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &block->id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } + offset += sizeof(block->id); memcpy(block->hash, block->header_contents+offset, TNG_HASH_LEN); @@ -822,11 +901,15 @@ static tng_function_status tng_block_header_read memcpy(&block->block_version, block->header_contents+offset, sizeof(block->block_version)); - if(tng_byte_order_to_big_endian_64(tng_data, &block->block_version) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &block->block_version) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block->block_version); @@ -938,33 +1021,42 @@ static tng_function_status tng_block_header_write * the whole block at once. */ memcpy(block->header_contents, &block->header_contents_size, sizeof(block->header_contents_size)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->header_contents)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block->header_contents_size); memcpy(block->header_contents+offset, &block->block_contents_size, sizeof(block->block_contents_size)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->header_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block->block_contents_size); memcpy(block->header_contents+offset, &block->id, sizeof(block->id)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->header_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block->id); @@ -976,12 +1068,15 @@ static tng_function_status tng_block_header_write memcpy(block->header_contents+offset, &block->block_version, sizeof(block->block_version)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->header_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block->block_version); @@ -1171,10 +1266,15 @@ static tng_function_status tng_general_info_block_read memcpy(&tng_data->time, block->block_contents+offset, sizeof(tng_data->time)); - if(tng_byte_order_to_big_endian_64(tng_data, &tng_data->time) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->time) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->time); @@ -1184,25 +1284,33 @@ static tng_function_status tng_general_info_block_read memcpy(&tng_data->frame_set_n_frames, block->block_contents+offset, sizeof(tng_data->frame_set_n_frames)); - if(tng_byte_order_to_big_endian_64(tng_data, &tng_data->frame_set_n_frames) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->frame_set_n_frames) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->frame_set_n_frames); memcpy(&tng_data->first_trajectory_frame_set_input_file_pos, block->block_contents+offset, sizeof(tng_data->first_trajectory_frame_set_input_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, - &tng_data->first_trajectory_frame_set_input_file_pos) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->first_trajectory_frame_set_input_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->first_trajectory_frame_set_input_file_pos); + tng_data->current_trajectory_frame_set.next_frame_set_file_pos = tng_data->first_trajectory_frame_set_input_file_pos; @@ -1210,32 +1318,43 @@ static tng_function_status tng_general_info_block_read memcpy(&tng_data->last_trajectory_frame_set_input_file_pos, block->block_contents+offset, sizeof(tng_data->last_trajectory_frame_set_input_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, - &tng_data->last_trajectory_frame_set_input_file_pos) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->last_trajectory_frame_set_input_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->last_trajectory_frame_set_input_file_pos); memcpy(&tng_data->medium_stride_length, block->block_contents+offset, sizeof(tng_data->medium_stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, &tng_data->medium_stride_length) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->medium_stride_length) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->medium_stride_length); memcpy(&tng_data->long_stride_length, block->block_contents+offset, sizeof(tng_data->long_stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, &tng_data->long_stride_length) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->long_stride_length) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } return(TNG_SUCCESS); @@ -1466,12 +1585,15 @@ static tng_function_status tng_general_info_block_write memcpy(block->block_contents+offset, &tng_data->time, sizeof(tng_data->time)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->time); @@ -1481,58 +1603,73 @@ static tng_function_status tng_general_info_block_write memcpy(block->block_contents+offset, &tng_data->frame_set_n_frames, sizeof(tng_data->frame_set_n_frames)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->frame_set_n_frames); memcpy(block->block_contents+offset, &tng_data->first_trajectory_frame_set_input_file_pos, sizeof(tng_data->first_trajectory_frame_set_input_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->first_trajectory_frame_set_input_file_pos); memcpy(block->block_contents+offset, &tng_data->last_trajectory_frame_set_input_file_pos, sizeof(tng_data->last_trajectory_frame_set_input_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->last_trajectory_frame_set_input_file_pos); memcpy(block->block_contents+offset, &tng_data->medium_stride_length, sizeof(tng_data->medium_stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->medium_stride_length); memcpy(block->block_contents+offset, &tng_data->long_stride_length, sizeof(tng_data->long_stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(tng_block_header_write(tng_data, block, hash_mode) != TNG_SUCCESS) @@ -1631,11 +1768,15 @@ static tng_function_status tng_molecules_block_read memcpy(&tng_data->n_molecules, block->block_contents, sizeof(tng_data->n_molecules)); - if(tng_byte_order_to_big_endian_64(tng_data, &tng_data->n_molecules) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->n_molecules) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->n_molecules); @@ -1680,10 +1821,15 @@ static tng_function_status tng_molecules_block_read memcpy(&molecule->id, block->block_contents+offset, sizeof(molecule->id)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->id); @@ -1695,10 +1841,15 @@ static tng_function_status tng_molecules_block_read memcpy(&molecule->quaternary_str, block->block_contents+offset, sizeof(molecule->quaternary_str)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->quaternary_str) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->quaternary_str) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->quaternary_str); @@ -1707,11 +1858,15 @@ static tng_function_status tng_molecules_block_read memcpy(&tng_data->molecule_cnt_list[i], block->block_contents+offset, sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, - &tng_data->molecule_cnt_list[i]) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &tng_data->molecule_cnt_list[i]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(int64_t); } @@ -1719,31 +1874,43 @@ static tng_function_status tng_molecules_block_read memcpy(&molecule->n_chains, block->block_contents+offset, sizeof(molecule->n_chains)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->n_chains) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->n_chains) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_chains); memcpy(&molecule->n_residues, block->block_contents+offset, sizeof(molecule->n_residues)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->n_residues) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->n_residues) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_residues); memcpy(&molecule->n_atoms, block->block_contents+offset, sizeof(molecule->n_atoms)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->n_atoms) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->n_atoms) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_atoms); @@ -1793,10 +1960,15 @@ static tng_function_status tng_molecules_block_read memcpy(&chain->id, block->block_contents+offset, sizeof(chain->id)); - if(tng_byte_order_to_big_endian_64(tng_data, &chain->id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &chain->id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(chain->id); @@ -1809,12 +1981,16 @@ static tng_function_status tng_molecules_block_read memcpy(&chain->n_residues, block->block_contents+offset, sizeof(chain->n_residues)); - if(tng_byte_order_to_big_endian_64(tng_data, &chain->n_residues) + if(tng_data->input_endianness_swap_func_64) + { + if(tng_data->input_endianness_swap_func_64(tng_data, + &chain->n_residues) != TNG_SUCCESS) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); } + } offset += sizeof(chain->n_residues); chain->residues = residue; @@ -1824,10 +2000,15 @@ static tng_function_status tng_molecules_block_read residue->chain = chain; memcpy(&residue->id, block->block_contents+offset, sizeof(residue->id)); - if(tng_byte_order_to_big_endian_64(tng_data, &residue->id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &residue->id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(residue->id); @@ -1839,12 +2020,16 @@ static tng_function_status tng_molecules_block_read offset += len; memcpy(&residue->n_atoms, block->block_contents+offset, - sizeof(residue->n_atoms)); - if(tng_byte_order_to_big_endian_64(tng_data, &residue->n_atoms) - != TNG_SUCCESS) + sizeof(residue->n_atoms)); + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &residue->n_atoms) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(residue->n_atoms); @@ -1856,10 +2041,15 @@ static tng_function_status tng_molecules_block_read memcpy(&atom->id, block->block_contents+offset, sizeof(atom->id)); - if(tng_byte_order_to_big_endian_64(tng_data, &atom->id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &atom->id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(atom->id); @@ -1886,11 +2076,15 @@ static tng_function_status tng_molecules_block_read memcpy(&molecule->n_bonds, block->block_contents+offset, sizeof(molecule->n_bonds)); - if(tng_byte_order_to_big_endian_64(tng_data, &molecule->n_bonds) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &molecule->n_bonds) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_bonds); @@ -1910,21 +2104,29 @@ static tng_function_status tng_molecules_block_read { memcpy(&bond->from_atom_id, block->block_contents+offset, sizeof(bond->from_atom_id)); - if(tng_byte_order_to_big_endian_64(tng_data, &bond->from_atom_id) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &bond->from_atom_id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(bond->from_atom_id); memcpy(&bond->to_atom_id, block->block_contents+offset, sizeof(bond->to_atom_id)); - if(tng_byte_order_to_big_endian_64(tng_data, &bond->to_atom_id) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &bond->to_atom_id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(bond->to_atom_id); @@ -2105,12 +2307,15 @@ static tng_function_status tng_molecules_block_write memcpy(block->block_contents+offset, &tng_data->n_molecules, sizeof(tng_data->n_molecules)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(tng_data->n_molecules); @@ -2120,12 +2325,15 @@ static tng_function_status tng_molecules_block_write // printf("i=%d\n", i); memcpy(block->block_contents+offset, &molecule->id, sizeof(molecule->id)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->id); @@ -2136,12 +2344,15 @@ static tng_function_status tng_molecules_block_write memcpy(block->block_contents+offset, &molecule->quaternary_str, sizeof(molecule->quaternary_str)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->quaternary_str); @@ -2149,46 +2360,58 @@ static tng_function_status tng_molecules_block_write { memcpy(block->block_contents+offset, &tng_data->molecule_cnt_list[i], sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(int64_t); } memcpy(block->block_contents+offset, &molecule->n_chains, sizeof(molecule->n_chains)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_chains); memcpy(block->block_contents+offset, &molecule->n_residues, sizeof(molecule->n_residues)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_residues); memcpy(block->block_contents+offset, &molecule->n_atoms, sizeof(molecule->n_atoms)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_atoms); @@ -2196,12 +2419,15 @@ static tng_function_status tng_molecules_block_write for(j = molecule->n_chains; j--;) { memcpy(block->block_contents+offset, &chain->id, sizeof(chain->id)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(chain->id); @@ -2211,12 +2437,15 @@ static tng_function_status tng_molecules_block_write memcpy(block->block_contents+offset, &chain->n_residues, sizeof(chain->n_residues)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(chain->n_residues); @@ -2224,12 +2453,15 @@ static tng_function_status tng_molecules_block_write for(k = chain->n_residues; k--;) { memcpy(block->block_contents+offset, &residue->id, sizeof(residue->id)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(residue->id); @@ -2239,12 +2471,15 @@ static tng_function_status tng_molecules_block_write memcpy(block->block_contents+offset, &residue->n_atoms, sizeof(residue->n_atoms)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(residue->n_atoms); @@ -2252,13 +2487,17 @@ static tng_function_status tng_molecules_block_write for(l = residue->n_atoms; l--;) { // printf("j=%d\n", j); - memcpy(block->block_contents+offset, &atom->id, sizeof(atom->id)); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)) - != TNG_SUCCESS) + memcpy(block->block_contents+offset, &atom->id, + sizeof(atom->id)); + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(atom->id); @@ -2279,12 +2518,15 @@ static tng_function_status tng_molecules_block_write memcpy(block->block_contents+offset, &molecule->n_bonds, sizeof(molecule->n_bonds)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(molecule->n_bonds); @@ -2293,22 +2535,29 @@ static tng_function_status tng_molecules_block_write { memcpy(block->block_contents+offset, &bond->from_atom_id, sizeof(bond->from_atom_id)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(bond->from_atom_id); memcpy(block->block_contents+offset, &bond->to_atom_id, sizeof(bond->to_atom_id)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(bond->to_atom_id); @@ -2435,21 +2684,29 @@ static tng_function_status tng_frame_set_block_read memcpy(&frame_set->first_frame, block->block_contents, sizeof(frame_set->first_frame)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set->first_frame) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->first_frame) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->first_frame); memcpy(&frame_set->n_frames, block->block_contents + offset, sizeof(frame_set->n_frames)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set->n_frames) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->n_frames) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->n_frames); @@ -2477,12 +2734,15 @@ static tng_function_status tng_frame_set_block_read memcpy(&frame_set->molecule_cnt_list[i], block->block_contents + offset, sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, - &frame_set->molecule_cnt_list[i]) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->molecule_cnt_list[i]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(int64_t); frame_set->n_particles += tng_data->molecules[i].n_atoms * @@ -2497,72 +2757,90 @@ static tng_function_status tng_frame_set_block_read memcpy(&frame_set->next_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, - &frame_set->next_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->next_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->next_frame_set_file_pos); memcpy(&frame_set->prev_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, - &frame_set->prev_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->prev_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->prev_frame_set_file_pos); memcpy(&frame_set->medium_stride_next_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->medium_stride_next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set-> - medium_stride_next_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->medium_stride_next_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->medium_stride_next_frame_set_file_pos); memcpy(&frame_set->medium_stride_prev_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->medium_stride_prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set-> - medium_stride_prev_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->medium_stride_prev_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->medium_stride_prev_frame_set_file_pos); memcpy(&frame_set->long_stride_next_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->long_stride_next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set-> - long_stride_next_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->long_stride_next_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->long_stride_next_frame_set_file_pos); memcpy(&frame_set->long_stride_prev_frame_set_file_pos, block->block_contents + offset, sizeof(frame_set->long_stride_prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, &frame_set-> - long_stride_prev_frame_set_file_pos) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->long_stride_prev_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->long_stride_prev_frame_set_file_pos); @@ -2630,23 +2908,29 @@ static tng_function_status tng_frame_set_block_write memcpy(block->block_contents, &frame_set->first_frame, sizeof(frame_set->first_frame)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->first_frame); memcpy(block->block_contents+offset, &frame_set->n_frames, sizeof(frame_set->n_frames)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->n_frames); @@ -2657,12 +2941,15 @@ static tng_function_status tng_frame_set_block_write memcpy(block->block_contents+offset, &frame_set->molecule_cnt_list[i], sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(int64_t); } @@ -2671,71 +2958,89 @@ static tng_function_status tng_frame_set_block_write memcpy(block->block_contents+offset, &frame_set->next_frame_set_file_pos, sizeof(frame_set->next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->next_frame_set_file_pos); memcpy(block->block_contents+offset, &frame_set->prev_frame_set_file_pos, sizeof(frame_set->prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->prev_frame_set_file_pos); memcpy(block->block_contents+offset, &frame_set->medium_stride_next_frame_set_file_pos, sizeof(frame_set->medium_stride_next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->medium_stride_next_frame_set_file_pos); memcpy(block->block_contents+offset, &frame_set->medium_stride_prev_frame_set_file_pos, sizeof(frame_set->medium_stride_prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->medium_stride_prev_frame_set_file_pos); memcpy(block->block_contents+offset, &frame_set->long_stride_next_frame_set_file_pos, sizeof(frame_set->long_stride_next_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->long_stride_next_frame_set_file_pos); memcpy(block->block_contents+offset, &frame_set->long_stride_prev_frame_set_file_pos, sizeof(frame_set->long_stride_prev_frame_set_file_pos)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(frame_set->long_stride_prev_frame_set_file_pos); @@ -2839,21 +3144,29 @@ static tng_function_status tng_trajectory_mapping_block_read memcpy(&mapping->num_first_particle, block->block_contents+offset, sizeof(mapping->num_first_particle)); - if(tng_byte_order_to_big_endian_64(tng_data, &mapping->num_first_particle) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &mapping->num_first_particle) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(mapping->num_first_particle); memcpy(&mapping->n_particles, block->block_contents+offset, sizeof(mapping->n_particles)); - if(tng_byte_order_to_big_endian_64(tng_data, &mapping->n_particles) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &mapping->n_particles) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(mapping->n_particles); @@ -2866,20 +3179,32 @@ static tng_function_status tng_trajectory_mapping_block_read return(TNG_CRITICAL); } - for(i = 0; i < mapping->n_particles; i++) + /* If the byte order needs to be swapped the data must be read one value at + * a time and swapped */ + if(tng_data->input_endianness_swap_func_64) { - memcpy(&mapping->real_particle_numbers[i], - block->block_contents + offset, - sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, - &mapping->real_particle_numbers[i]) != - TNG_SUCCESS) + for(i = 0; i < mapping->n_particles; i++) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + memcpy(&mapping->real_particle_numbers[i], + block->block_contents + offset, + sizeof(int64_t)); + if(tng_data->input_endianness_swap_func_64(tng_data, + &mapping->real_particle_numbers[i]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + offset += sizeof(int64_t); } - offset += sizeof(int64_t); } + /* Otherwise the data can be read all at once */ + else + { + memcpy(mapping->real_particle_numbers, block->block_contents + offset, + mapping->n_particles * sizeof(int64_t)); + } + return(TNG_SUCCESS); } @@ -2950,38 +3275,52 @@ static tng_function_status tng_trajectory_mapping_block_write memcpy(block->block_contents, &mapping->num_first_particle, sizeof(mapping->num_first_particle)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(mapping->num_first_particle); memcpy(block->block_contents+offset, &mapping->n_particles, sizeof(mapping->n_particles)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(mapping->n_particles); - for(i = 0; i < mapping->n_particles; i++) + if(tng_data->output_endianness_swap_func_64) { - memcpy(block->block_contents+offset, &mapping->real_particle_numbers[i], - sizeof(int64_t)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + for(i = 0; i < mapping->n_particles; i++) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + memcpy(block->block_contents+offset, &mapping->real_particle_numbers[i], + sizeof(int64_t)); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + offset += sizeof(int64_t); } - offset += sizeof(int64_t); + } + else + { + memcpy(block->block_contents+offset, mapping->real_particle_numbers, + mapping->n_particles * sizeof(int64_t)); } @@ -3310,6 +3649,8 @@ static tng_function_status tng_particle_data_read n_frames = max(1, n_frames / stride_length); + /* FIXME: If not using a union to store data a whole dimension + * or the whole block can be read at once if byte swapping is not needed */ switch(datatype) { case TNG_FLOAT_DATA: @@ -3323,14 +3664,17 @@ static tng_function_status tng_particle_data_read for(k = 0; k < n_values; k++) { memcpy(&second_dim_values[k].f, - block->block_contents+*offset, - size); - if(tng_byte_order_to_big_endian_32(tng_data, - (int32_t *) &second_dim_values[k]) != TNG_SUCCESS) + block->block_contents+*offset, + size); + if(tng_data->input_endianness_swap_func_32) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_32(tng_data, + (int32_t *)&second_dim_values[k]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -3350,12 +3694,15 @@ static tng_function_status tng_particle_data_read memcpy(&second_dim_values[k].i, block->block_contents+*offset, size); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *) &second_dim_values[k].i) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + (int64_t *)&second_dim_values[k]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -3406,12 +3753,15 @@ static tng_function_status tng_particle_data_read memcpy(&second_dim_values[k].d, block->block_contents+*offset, size); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *) &second_dim_values[k].d) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + (int64_t *)&second_dim_values[k]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -3621,23 +3971,29 @@ static tng_function_status tng_particle_data_block_write memcpy(block->block_contents+offset, &data->n_values_per_frame, sizeof(data->n_values_per_frame)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->n_values_per_frame); memcpy(block->block_contents+offset, &data->codec_id, sizeof(data->codec_id)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->codec_id); @@ -3645,12 +4001,15 @@ static tng_function_status tng_particle_data_block_write { memcpy(block->block_contents+offset, &data->compression_multiplier, sizeof(data->compression_multiplier)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->compression_multiplier); } @@ -3662,23 +4021,29 @@ static tng_function_status tng_particle_data_block_write data->first_frame_with_data = frame_set->first_frame; memcpy(block->block_contents+offset, &data->first_frame_with_data, sizeof(data->first_frame_with_data)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->first_frame_with_data); memcpy(block->block_contents+offset, &stride_length, sizeof(stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(stride_length); } @@ -3686,26 +4051,34 @@ static tng_function_status tng_particle_data_block_write memcpy(block->block_contents+offset, &num_first_particle, sizeof(num_first_particle)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(num_first_particle); memcpy(block->block_contents+offset, &n_particles, sizeof(n_particles)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents+offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(n_particles); + /* FIXME: If not using a union to store data a whole dimension or the + * whole block can be written at once if byte swapping is not needed */ switch(data->datatype) { case TNG_FLOAT_DATA: @@ -3721,8 +4094,16 @@ static tng_function_status tng_particle_data_block_write memcpy(block->block_contents+offset, &second_dim_values[k].f, size); - tng_byte_order_to_big_endian_32(tng_data, - (int32_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_32) + { + if(tng_data->output_endianness_swap_func_32(tng_data, + (int32_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -3742,8 +4123,16 @@ static tng_function_status tng_particle_data_block_write memcpy(block->block_contents+offset, &second_dim_values[k].i, size); - tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_64) + { + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -3781,8 +4170,16 @@ static tng_function_status tng_particle_data_block_write memcpy(block->block_contents+offset, &second_dim_values[k].d, size); - tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_64) + { + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -4084,6 +4481,8 @@ static tng_function_status tng_data_read(tng_trajectory_t tng_data, n_frames = max(1, n_frames / stride_length); + /* FIXME: If not using a union to store data a whole dimension + * or the whole block can be read at once if byte swapping is not needed */ switch(datatype) { case TNG_FLOAT_DATA: @@ -4093,12 +4492,15 @@ static tng_function_status tng_data_read(tng_trajectory_t tng_data, { memcpy(&data->values[i][j].f, block->block_contents+*offset, size); - if(tng_byte_order_to_big_endian_32(tng_data, - (int32_t *) &data->values[i][j]) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_32) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_32(tng_data, + (int32_t *)&data->values[i][j]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -4111,12 +4513,15 @@ static tng_function_status tng_data_read(tng_trajectory_t tng_data, { memcpy(&data->values[i][j].i, block->block_contents+*offset, size); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *) &data->values[i][j].i) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + (int64_t *)&data->values[i][j]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -4154,12 +4559,15 @@ static tng_function_status tng_data_read(tng_trajectory_t tng_data, { memcpy(&data->values[i][j].d, block->block_contents+*offset, size); - if(tng_byte_order_to_big_endian_64(tng_data, - (int64_t *) &data->values[i][j].d) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + (int64_t *)&data->values[i][j]) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } *offset += size; } @@ -4337,25 +4745,29 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, memcpy(block->block_contents+offset, &data->n_values_per_frame, sizeof(data->n_values_per_frame)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->n_values_per_frame); memcpy(block->block_contents+offset, &data->codec_id, sizeof(data->codec_id)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->codec_id); @@ -4363,13 +4775,15 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, { memcpy(block->block_contents+offset, &data->compression_multiplier, sizeof(data->compression_multiplier)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->compression_multiplier); } @@ -4381,29 +4795,35 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, data->first_frame_with_data = frame_set->first_frame; memcpy(block->block_contents+offset, &data->first_frame_with_data, sizeof(data->first_frame_with_data)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->first_frame_with_data); memcpy(block->block_contents+offset, &stride_length, sizeof(data->stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - (block->block_contents + offset)) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. " - "%s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(data->stride_length); } + /* FIXME: If not using a union to store data a whole dimension or the + * whole block can be written at once if byte swapping is not needed */ switch(data->datatype) { case TNG_FLOAT_DATA: @@ -4413,8 +4833,16 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, { memcpy(block->block_contents+offset, &data->values[i][j].f, size); - tng_byte_order_to_big_endian_32(tng_data, - (int32_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_32) + { + if(tng_data->output_endianness_swap_func_32(tng_data, + (int32_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -4426,8 +4854,16 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, { memcpy(block->block_contents+offset, &data->values[i][j].i, size); - tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_64) + { + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -4452,8 +4888,16 @@ static tng_function_status tng_data_block_write(tng_trajectory_t tng_data, { memcpy(block->block_contents+offset, &data->values[i][j].d, size); - tng_byte_order_to_big_endian_64(tng_data, - (int64_t *)(block->block_contents+offset)); + if(tng_data->output_endianness_swap_func_64) + { + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)block->header_contents+offset) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } + } offset += size; } } @@ -4558,19 +5002,29 @@ static tng_function_status tng_data_block_contents_read memcpy(&n_values, block->block_contents+offset, sizeof(n_values)); - if(tng_byte_order_to_big_endian_64(tng_data, &n_values) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &n_values) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(n_values); memcpy(&codec_id, block->block_contents+offset, sizeof(codec_id)); - if(tng_byte_order_to_big_endian_64(tng_data, &codec_id) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &codec_id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(codec_id); @@ -4578,11 +5032,15 @@ static tng_function_status tng_data_block_contents_read { memcpy(&multiplier, block->block_contents+offset, sizeof(multiplier)); - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *)&multiplier) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + (int64_t *) &multiplier) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(multiplier); } @@ -4597,21 +5055,29 @@ static tng_function_status tng_data_block_contents_read { memcpy(&first_frame_with_data, block->block_contents+offset, sizeof(first_frame_with_data)); - if(tng_byte_order_to_big_endian_64(tng_data, &first_frame_with_data) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &first_frame_with_data) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(first_frame_with_data); memcpy(&stride_length, block->block_contents+offset, sizeof(stride_length)); - if(tng_byte_order_to_big_endian_64(tng_data, &stride_length) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &stride_length) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(stride_length); } @@ -4632,22 +5098,30 @@ static tng_function_status tng_data_block_contents_read if (dependency & TNG_PARTICLE_DEPENDENT) { memcpy(&num_first_particle, block->block_contents+offset, - sizeof(num_first_particle)); - if(tng_byte_order_to_big_endian_64(tng_data, &num_first_particle) != - TNG_SUCCESS) + sizeof(num_first_particle)); + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &num_first_particle) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(num_first_particle); memcpy(&block_n_particles, block->block_contents+offset, sizeof(block_n_particles)); - if(tng_byte_order_to_big_endian_64(tng_data, &block_n_particles) != - TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &block_n_particles) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } offset += sizeof(block_n_particles); } @@ -4758,10 +5232,15 @@ static tng_function_status tng_header_pointers_update pos = tng_data->first_trajectory_frame_set_output_file_pos; - if(tng_byte_order_to_big_endian_64(tng_data, &pos) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fwrite(&pos, sizeof(int64_t), 1, tng_data->output_file) != 1) @@ -4772,10 +5251,15 @@ static tng_function_status tng_header_pointers_update pos = tng_data->last_trajectory_frame_set_output_file_pos; - if(tng_byte_order_to_big_endian_64(tng_data, &pos) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fwrite(&pos, @@ -4852,10 +5336,15 @@ static tng_function_status tng_frame_set_pointers_update pos = tng_data->current_trajectory_frame_set_output_file_pos; - if(tng_byte_order_to_big_endian_64(tng_data, &pos) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fwrite(&pos, sizeof(int64_t), 1, tng_data->output_file) != 1) @@ -4898,10 +5387,15 @@ static tng_function_status tng_frame_set_pointers_update pos = tng_data->current_trajectory_frame_set_output_file_pos; - if(tng_byte_order_to_big_endian_64(tng_data, &pos) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fwrite(&pos, sizeof(int64_t), 1, tng_data->output_file) != 1) @@ -4943,10 +5437,15 @@ static tng_function_status tng_frame_set_pointers_update pos = tng_data->current_trajectory_frame_set_output_file_pos; - if(tng_byte_order_to_big_endian_64(tng_data, &pos) != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fwrite(&pos, sizeof(int64_t), 1, tng_data->output_file) != 1) @@ -6060,17 +6559,14 @@ tng_function_status tng_trajectory_init(tng_trajectory_t *tng_data_p) tng_data->endianness_64 = TNG_BYTE_SWAP_64; } - if(tng_data->endianness_32 == TNG_LITTLE_ENDIAN_32 || - tng_data->endianness_64 == TNG_LITTLE_ENDIAN_64) - { - tng_data->input_endianness = TNG_LITTLE_ENDIAN; - tng_data->output_endianness = TNG_LITTLE_ENDIAN; - } - else - { - tng_data->input_endianness = TNG_BIG_ENDIAN; - tng_data->output_endianness = TNG_BIG_ENDIAN; - } + /* By default do not swap the byte order, i.e. keep the byte order of the + * architecture. The input file endianness will be set when reading the + * header. The output endianness can be changed - before the file is + * written. */ + tng_data->input_endianness_swap_func_32 = 0; + tng_data->input_endianness_swap_func_64 = 0; + tng_data->output_endianness_swap_func_32 = 0; + tng_data->output_endianness_swap_func_64 = 0; tng_data->current_trajectory_frame_set.next_frame_set_file_pos = -1; tng_data->current_trajectory_frame_set.prev_frame_set_file_pos = -1; @@ -6421,8 +6917,10 @@ tng_function_status tng_trajectory_init_from_src(tng_trajectory_t src, dest->endianness_32 = src->endianness_32; dest->endianness_64 = src->endianness_64; - dest->input_endianness = src->input_endianness; - dest->output_endianness = src->output_endianness; + dest->input_endianness_swap_func_32 = src->input_endianness_swap_func_32; + dest->input_endianness_swap_func_64 = src->input_endianness_swap_func_64; + dest->output_endianness_swap_func_32 = src->output_endianness_swap_func_32; + dest->output_endianness_swap_func_64 = src->output_endianness_swap_func_64; dest->current_trajectory_frame_set.next_frame_set_file_pos = -1; dest->current_trajectory_frame_set.prev_frame_set_file_pos = -1; @@ -8258,13 +8756,15 @@ tng_function_status tng_frame_set_new(tng_trajectory_t tng_data, return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, - &frame_set-> - medium_stride_prev_frame_set_file_pos) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->medium_stride_prev_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } tng_block_destroy(&block); @@ -8314,13 +8814,15 @@ tng_function_status tng_frame_set_new(tng_trajectory_t tng_data, return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, - &frame_set-> - long_stride_prev_frame_set_file_pos) - != TNG_SUCCESS) + if(tng_data->input_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->input_endianness_swap_func_64(tng_data, + &frame_set->long_stride_prev_frame_set_file_pos) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } } @@ -8955,10 +9457,15 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.n_values_per_frame) != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.n_values_per_frame) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fread(&data.codec_id, sizeof(data.codec_id), 1, @@ -8968,10 +9475,15 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.codec_id) != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.codec_id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(data.codec_id != TNG_UNCOMPRESSED) @@ -8984,12 +9496,15 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - &data.compression_multiplier) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)&data.compression_multiplier) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } } else @@ -9006,11 +9521,15 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.first_frame_with_data) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.first_frame_with_data) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fread(&data.stride_length, sizeof(data.stride_length), @@ -9020,11 +9539,15 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.stride_length) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.stride_length) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } } else @@ -9078,26 +9601,38 @@ tng_function_status tng_frame_data_write(tng_trajectory_t tng_data, /* If the endianness is not big endian the data needs to be swapped */ if((data.datatype == TNG_INT_DATA || data.datatype == TNG_DOUBLE_DATA) && - tng_data->endianness_64 != TNG_BIG_ENDIAN_64) + tng_data->output_endianness_swap_func_64) { copy = malloc(n_values_per_frame * size); memcpy(copy, values, n_values_per_frame * size); for(i = 0; i < n_values_per_frame; i++) { - tng_byte_order_to_big_endian_64(tng_data, (int64_t *)copy+i); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)copy+i) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } fwrite(copy, n_values_per_frame, size, tng_data->output_file); free(copy); } else if(data.datatype == TNG_FLOAT_DATA && - tng_data->endianness_32 != TNG_BIG_ENDIAN_32) + tng_data->output_endianness_swap_func_32) { copy = malloc(n_values_per_frame * size); memcpy(copy, values, n_values_per_frame * size); for(i = 0; i < n_values_per_frame; i++) { - tng_byte_order_to_big_endian_32(tng_data, (int32_t *)copy+i); + if(tng_data->output_endianness_swap_func_32(tng_data, + (int32_t *)copy+i) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } fwrite(copy, n_values_per_frame, size, tng_data->output_file); @@ -9401,11 +9936,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.n_values_per_frame) - != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.n_values_per_frame) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fread(&data.codec_id, sizeof(data.codec_id), 1, @@ -9415,10 +9954,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.codec_id) != TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.codec_id) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(data.codec_id != TNG_UNCOMPRESSED) @@ -9432,12 +9976,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, (int64_t *) - &data.compression_multiplier) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *)&data.compression_multiplier) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } } else @@ -9455,11 +10002,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.first_frame_with_data) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.first_frame_with_data) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fread(&data.stride_length, sizeof(data.stride_length), @@ -9469,11 +10020,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &data.stride_length) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &data.stride_length) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } } else @@ -9490,11 +10045,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &num_first_particle) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &num_first_particle) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } if(fread(&block_n_particles, sizeof(block_n_particles), 1, @@ -9504,11 +10063,15 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, tng_block_destroy(&block); return(TNG_CRITICAL); } - if(tng_byte_order_to_big_endian_64(tng_data, &block_n_particles) != - TNG_SUCCESS) + if(tng_data->output_endianness_swap_func_64) { - printf("Cannot swap byte order to get big endian. %s: %d\n", - __FILE__, __LINE__); + if(tng_data->output_endianness_swap_func_64(tng_data, + &block_n_particles) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } @@ -9557,26 +10120,38 @@ tng_function_status tng_frame_particle_data_write(tng_trajectory_t tng_data, /* If the endianness is not big endian the data needs to be swapped */ if((data.datatype == TNG_INT_DATA || data.datatype == TNG_DOUBLE_DATA) && - tng_data->endianness_64 != TNG_BIG_ENDIAN_64) + tng_data->output_endianness_swap_func_64) { copy = malloc(val_n_particles * n_values_per_frame * size); memcpy(copy, values, val_n_particles * n_values_per_frame * size); for(i = 0; i < val_n_particles * n_values_per_frame; i++) { - tng_byte_order_to_big_endian_64(tng_data, (int64_t *)copy+i); + if(tng_data->output_endianness_swap_func_64(tng_data, + (int64_t *) copy+i) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } fwrite(copy, val_n_particles * n_values_per_frame, size, tng_data->output_file); free(copy); } else if(data.datatype == TNG_FLOAT_DATA && - tng_data->endianness_32 != TNG_BIG_ENDIAN_32) + tng_data->output_endianness_swap_func_32) { copy = malloc(val_n_particles * n_values_per_frame * size); memcpy(copy, values, val_n_particles * n_values_per_frame * size); for(i = 0; i < val_n_particles * n_values_per_frame; i++) { - tng_byte_order_to_big_endian_32(tng_data, (int32_t *)copy+i); + if(tng_data->output_endianness_swap_func_32(tng_data, + (int32_t *) copy+i) + != TNG_SUCCESS) + { + printf("Cannot swap byte order. %s: %d\n", + __FILE__, __LINE__); + } } fwrite(copy, val_n_particles * n_values_per_frame, size, tng_data->output_file); |