summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/tng_io.c1743
-rw-r--r--src/lib/tng_io.h2
2 files changed, 1160 insertions, 585 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);
diff --git a/src/lib/tng_io.h b/src/lib/tng_io.h
index b2d07ff..9fa13b2 100644
--- a/src/lib/tng_io.h
+++ b/src/lib/tng_io.h
@@ -228,7 +228,7 @@
#include <inttypes.h>
/** The version of this TNG build */
-#define TNG_VERSION 1
+#define TNG_VERSION 2
/** Flag to indicate frame dependent data. */
#define TNG_FRAME_DEPENDENT 1
contact: Jan Huwald // Impressum