summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Lundborg <lundborg.magnus@gmail.com>2012-12-20 10:43:40 (GMT)
committerMagnus Lundborg <lundborg.magnus@gmail.com>2012-12-20 10:43:40 (GMT)
commitd56c6ffee560f1ddd3ec152cb9246c2f76cdeaf3 (patch)
tree1ed05b9dc7af5aba075afa8d2c7cd86c4837c343
parent6637159ac02cf4abe439a7ef1ee10f7e7b1a6054 (diff)
Removed frame set table of contents block
-rw-r--r--example_files/tng_example.tngbin2621 -> 2531 bytes
-rw-r--r--src/lib/tng_io.c237
-rw-r--r--src/lib/tng_io.h7
3 files changed, 2 insertions, 242 deletions
diff --git a/example_files/tng_example.tng b/example_files/tng_example.tng
index 10e9679..6635816 100644
--- a/example_files/tng_example.tng
+++ b/example_files/tng_example.tng
Binary files differ
diff --git a/src/lib/tng_io.c b/src/lib/tng_io.c
index 6b67d35..0f7baf6 100644
--- a/src/lib/tng_io.c
+++ b/src/lib/tng_io.c
@@ -121,13 +121,6 @@ struct tng_gen_block {
char *block_contents;
};
-struct tng_frame_set_toc {
- /** The number of blocks listed in this table of contents */
- int64_t n_blocks;
- /** A list of block names */
- char **block_names;
-};
-
struct tng_particle_mapping {
/** The index number of the first particle in this mapping block */
int64_t num_first_particle;
@@ -141,8 +134,6 @@ struct tng_particle_mapping {
};
struct tng_trajectory_frame_set {
- /** The table of contents of this frame set */
- struct tng_frame_set_toc contents;
/** The number of different particle mapping blocks present. */
int64_t n_mapping_blocks;
/** The atom mappings of this frame set */
@@ -2806,209 +2797,6 @@ static tng_function_status tng_frame_set_block_write
return(TNG_SUCCESS);
}
-static tng_function_status tng_trajectory_contents_block_read
- (tng_trajectory_t tng_data,
- tng_gen_block_t block,
- const tng_hash_mode hash_mode)
-{
- int64_t i, old_n_blocks;
- int offset = 0, len;
- tng_bool same_hash;
- tng_frame_set_toc_t toc =
- &tng_data->current_trajectory_frame_set.contents;
-
- if(tng_input_file_init(tng_data, FALSE) != TNG_SUCCESS)
- {
- return(TNG_CRITICAL);
- }
-
- if(block->block_contents)
- {
- free(block->block_contents);
- }
-
- block->block_contents = malloc(block->block_contents_size);
- if(!block->block_contents)
- {
- printf("Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
- block->block_contents_size, __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- /* Read the whole block into block_contents to be able to write it to disk
- * even if it cannot be interpreted. */
- if(fread(block->block_contents, block->block_contents_size, 1,
- tng_data->input_file) == 0)
- {
- printf("Cannot read block. %s: %d\n", __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- /* FIXME: Does not check if the size of the contents matches the expected
- * size or if the contents can be read. */
-
- if(hash_mode == TNG_USE_HASH)
- {
- if(hash_match_verify(block, &same_hash) != TNG_SUCCESS)
- {
- printf("Error comparing hashes. %s: %d\n", __FILE__, __LINE__);
- return(TNG_FAILURE);
- }
- if(same_hash != TRUE)
- {
- printf("Table of contents block contents corrupt. Hashes do not match. "
- "%s: %d\n",
- __FILE__, __LINE__);
- // return(TNG_FAILURE);
- }
- }
-
- old_n_blocks = toc->n_blocks;
-
- memcpy(&toc->n_blocks, block->block_contents,
- sizeof(toc->n_blocks));
- if(tng_data->endianness_64 != TNG_BIG_ENDIAN_64)
- {
- if(tng_swap_byte_order_64(tng_data, &toc->n_blocks) != TNG_SUCCESS)
- {
- printf("Cannot swap byte order to get big endian. %s: %d\n",
- __FILE__, __LINE__);
- }
- }
- offset += sizeof(toc->n_blocks);
-
- if(old_n_blocks != toc->n_blocks)
- {
- if(toc->block_names)
- {
- for(i = old_n_blocks; i--;)
- {
- if(toc->block_names[i])
- {
- free(toc->block_names[i]);
- }
- }
- free(toc->block_names);
- }
- toc->block_names = malloc(toc->n_blocks * sizeof(char *));
- if(!toc->block_names)
- {
- printf("Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
- toc->n_blocks * sizeof(int64_t), __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
- }
-
- for(i = 0; i < toc->n_blocks; i++)
- {
- len = min(strlen(block->block_contents+offset) + 1, TNG_MAX_STR_LEN);
-
- toc->block_names[i] = malloc(len);
- if(!toc->block_names[i])
- {
- printf("Cannot allocate memory (%d bytes). %s: %d\n",
- len, __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- strncpy(toc->block_names[i], block->block_contents+offset, len);
-
- offset += len;
- }
-
- return(TNG_SUCCESS);
-}
-
-static tng_function_status tng_trajectory_contents_block_write
- (tng_trajectory_t tng_data,
- tng_gen_block_t block,
- const tng_hash_mode hash_mode)
-{
- char *temp_name;
- int64_t i;
- int offset = 0, name_len;
- tng_frame_set_toc_t toc =
- &tng_data->current_trajectory_frame_set.contents;
-
- if(tng_output_file_init(tng_data, FALSE) != TNG_SUCCESS)
- {
- return(TNG_CRITICAL);
- }
-
-
- name_len = strlen("BLOCK TABLE OF CONTENTS");
-
- if(!block->name || strlen(block->name) < name_len)
- {
- temp_name = realloc(block->name, name_len + 1);
- if(!temp_name)
- {
- printf("Cannot allocate memory (%d bytes). %s: %d\n",
- name_len+1, __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
- block->name = temp_name;
- }
- strcpy(block->name, "BLOCK TABLE OF CONTENTS");
- block->id = TNG_BLOCK_TABLE_OF_CONTENTS;
-
- block->block_contents_size = sizeof(int64_t);
-
- for(i = toc->n_blocks; i--;)
- {
- block->block_contents_size += strlen(toc->block_names[i]) + 1;
- }
-
- if(block->block_contents)
- {
- free(block->block_contents);
- }
- block->block_contents = malloc(block->block_contents_size);
- if(!block->block_contents)
- {
- printf("Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
- block->block_contents_size, __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- memcpy(block->block_contents, &toc->n_blocks, sizeof(toc->n_blocks));
- if(tng_data->endianness_64 != TNG_BIG_ENDIAN_64)
- {
- if(tng_swap_byte_order_64(tng_data, (int64_t *)
- (block->block_contents)) !=
- TNG_SUCCESS)
- {
- printf("Cannot swap byte order to get big endian. %s: %d\n",
- __FILE__, __LINE__);
- }
- }
- offset += sizeof(toc->n_blocks);
-
- for(i = 0; i < toc->n_blocks; i++)
- {
- name_len = strlen(toc->block_names[i]) + 1;
- strncpy(block->block_contents+offset, toc->block_names[i], name_len);
- offset += name_len;
- }
-
-
- if(tng_block_header_write(tng_data, block, hash_mode) != TNG_SUCCESS)
- {
- printf("Cannot write header of file %s. %s: %d\n",
- tng_data->output_file_path, __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- if(fwrite(block->block_contents, block->block_contents_size, 1,
- tng_data->output_file) != 1)
- {
- printf("Could not write all block data. %s: %d\n",
- __FILE__, __LINE__);
- return(TNG_CRITICAL);
- }
-
- return(TNG_SUCCESS);
-}
static tng_function_status tng_trajectory_mapping_block_read
(tng_trajectory_t tng_data,
@@ -5943,8 +5731,6 @@ tng_function_status tng_trajectory_init(struct tng_trajectory **tng_data_p)
tng_data->non_tr_data = 0;
frame_set->first_frame = -1;
- frame_set->contents.n_blocks = 0;
- frame_set->contents.block_names = 0;
frame_set->n_mapping_blocks = 0;
frame_set->mappings = 0;
frame_set->molecule_cnt_list = 0;
@@ -6119,20 +5905,6 @@ tng_function_status tng_trajectory_destroy(struct tng_trajectory **tng_data_p)
tng_data->forcefield_name = 0;
}
- if(frame_set->contents.block_names)
- {
- for(i = frame_set->contents.n_blocks; i--;)
- {
- if(frame_set->contents.block_names[i])
- {
- free(frame_set->contents.block_names[i]);
- frame_set->contents.block_names[i] = 0;
- }
- }
- free(frame_set->contents.block_names);
- frame_set->contents.block_names = 0;
- }
-
if(frame_set->mappings)
{
for(i = frame_set->n_mapping_blocks; i--;)
@@ -7201,8 +6973,6 @@ tng_function_status tng_block_read_next(tng_trajectory_t tng_data,
{
case TNG_TRAJECTORY_FRAME_SET:
return(tng_frame_set_block_read(tng_data, block, hash_mode));
- case TNG_BLOCK_TABLE_OF_CONTENTS:
- return(tng_trajectory_contents_block_read(tng_data, block, hash_mode));
case TNG_PARTICLE_MAPPING:
return(tng_trajectory_mapping_block_read(tng_data, block, hash_mode));
case TNG_GENERAL_INFO:
@@ -7345,13 +7115,6 @@ tng_function_status tng_frame_set_write(tng_trajectory_t tng_data,
return(TNG_FAILURE);
}
- /* Write contents block */
- if(frame_set->contents.n_blocks > 0)
- {
- block->id = TNG_BLOCK_TABLE_OF_CONTENTS;
- tng_trajectory_contents_block_write(tng_data, block,
- hash_mode);
- }
/* Write non-particle data blocks */
for(i = 0; i<frame_set->n_data_blocks; i++)
{
diff --git a/src/lib/tng_io.h b/src/lib/tng_io.h
index 9999f7c..22891e4 100644
--- a/src/lib/tng_io.h
+++ b/src/lib/tng_io.h
@@ -105,7 +105,6 @@ typedef enum {TNG_ENDIANNESS_AND_STRING_LENGTH,
TNG_MOLECULES,
TNG_TRAJECTORY_IDS_AND_NAMES,
TNG_TRAJECTORY_FRAME_SET,
- TNG_BLOCK_TABLE_OF_CONTENTS,
TNG_PARTICLE_MAPPING} tng_non_trajectory_block_ids;
typedef enum {TNG_TRAJ_BOX_SHAPE = 10000,
@@ -144,7 +143,6 @@ struct tng_residue;
struct tng_atom;
struct tng_bond;
struct tng_gen_block;
-struct tng_frame_set_toc;
struct tng_particle_mapping;
struct tng_trajectory_frame_set;
struct tng_particle_data;
@@ -157,7 +155,6 @@ typedef struct tng_residue *tng_residue_t;
typedef struct tng_atom *tng_atom_t;
typedef struct tng_bond *tng_bond_t;
typedef struct tng_gen_block *tng_gen_block_t;
-typedef struct tng_frame_set_toc *tng_frame_set_toc_t;
typedef struct tng_particle_mapping *tng_particle_mapping_t;
typedef struct tng_trajectory_frame_set *tng_trajectory_frame_set_t;
typedef struct tng_particle_data *tng_particle_data_t;
@@ -701,7 +698,7 @@ tng_function_status tng_block_read_next(tng_trajectory_t tng_data,
/**
- * @brief Read one (the next) frame set, including toc, mapping and related data blocks
+ * @brief Read one (the next) frame set, including mapping and related data blocks
* from the input_file of tng_data.
* @param tng_data is a trajectory data container.
* @details tng_data->input_file_path specifies
@@ -717,7 +714,7 @@ tng_function_status tng_frame_set_read_next(tng_trajectory_t tng_data,
const tng_hash_mode hash_mode);
/**
- * @brief Write one frame set, including toc, mapping and related data blocks
+ * @brief Write one frame set, including mapping and related data blocks
* to the output_file of tng_data.
* @param tng_data is a trajectory data container.
* @details tng_data->output_file_path specifies
contact: Jan Huwald // Impressum