diff options
Diffstat (limited to 'src/lib/tng_io.c')
-rw-r--r-- | src/lib/tng_io.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/lib/tng_io.c b/src/lib/tng_io.c index b313c83..5abce04 100644 --- a/src/lib/tng_io.c +++ b/src/lib/tng_io.c @@ -12850,6 +12850,80 @@ tng_function_status DECLSPECDLLEXPORT tng_data_block_name_get return(TNG_FAILURE); } +tng_function_status DECLSPECDLLEXPORT tng_data_block_dependency_get + (tng_trajectory_t tng_data, + int64_t block_id, + int *block_dependency) +{ + int64_t i; + tng_function_status stat; + tng_particle_data_t p_data; + tng_non_particle_data_t np_data; + + TNG_ASSERT(tng_data, "TNG library: Trajectory container not properly setup."); + TNG_ASSERT(block_dependency, "TNG library: block_dependency must not be a NULL pointer."); + + for(i = 0; i < tng_data->n_particle_data_blocks; i++) + { + p_data = &tng_data->non_tr_particle_data[i]; + if(p_data->block_id == block_id) + { + *block_dependency = TNG_PARTICLE_DEPENDENT; + return(TNG_SUCCESS); + } + } + for(i = 0; i < tng_data->n_data_blocks; i++) + { + np_data = &tng_data->non_tr_data[i]; + if(np_data->block_id == block_id) + { + *block_dependency = 0; + return(TNG_SUCCESS); + } + } + + stat = tng_particle_data_find(tng_data, block_id, &p_data); + if(stat == TNG_SUCCESS) + { + *block_dependency = TNG_PARTICLE_DEPENDENT & TNG_FRAME_DEPENDENT; + return(TNG_SUCCESS); + } + else + { + stat = tng_data_find(tng_data, block_id, &np_data); + if(stat == TNG_SUCCESS) + { + *block_dependency = TNG_FRAME_DEPENDENT; + return(TNG_SUCCESS); + } + else + { + stat = tng_frame_set_read_current_only_data_from_block_id(tng_data, TNG_USE_HASH, block_id); + if(stat != TNG_SUCCESS) + { + return(stat); + } + stat = tng_particle_data_find(tng_data, block_id, &p_data); + if(stat == TNG_SUCCESS) + { + *block_dependency = TNG_PARTICLE_DEPENDENT & TNG_FRAME_DEPENDENT; + return(TNG_SUCCESS); + } + else + { + stat = tng_data_find(tng_data, block_id, &np_data); + if(stat == TNG_SUCCESS) + { + *block_dependency = TNG_FRAME_DEPENDENT; + return(TNG_SUCCESS); + } + } + } + } + + return(TNG_FAILURE); +} + tng_function_status DECLSPECDLLEXPORT tng_frame_data_write (tng_trajectory_t tng_data, const int64_t frame_nr, |