@@ -1371,7 +1371,7 @@ ADFI_chase_link( ID, &LID, &file_index, &block_offset, &node, error_return ) ;
13711371CHECK_ADF_ABORT ( * error_return ) ;
13721372
13731373 /** Copy the blank-filled data-type into a C string **/
1374- ADFI_string_2_C_string ( node .data_type , ADF_DATA_TYPE_LENGTH , data_type ,
1374+ ADFI_string_2_C_string ( node .data_type , ADF_CGIO_DATA_TYPE_LENGTH , data_type ,
13751375 error_return ) ;
13761376CHECK_ADF_ABORT ( * error_return ) ;
13771377
@@ -2601,6 +2601,7 @@ output: int *error_return Error return.
26012601***********************************************************************/
26022602void ADF_Read_All_Data (
26032603 const double ID ,
2604+ const char * m_data_type ,
26042605 char * data ,
26052606 int * error_return )
26062607{
@@ -2629,7 +2630,16 @@ if( data == NULL ) {
26292630ADFI_chase_link ( ID , & LID , & file_index , & block_offset , & node , error_return ) ;
26302631CHECK_ADF_ABORT ( * error_return ) ;
26312632
2633+ /* if it was provided, check to make sure the data types match */
2634+ if ( m_data_type != NULL ) {
2635+ if (strncmp (m_data_type , node .data_type , 2 ) != 0 ){
2636+ * error_return = INVALID_DATA_TYPE ;
2637+ CHECK_ADF_ABORT ( * error_return );
2638+ }
2639+ }
2640+
26322641 /** Get datatype size **/
2642+
26332643ADFI_evaluate_datatype ( file_index , node .data_type , & file_bytes , & memory_bytes ,
26342644 tokenized_data_type , & file_format , & machine_format , error_return ) ;
26352645CHECK_ADF_ABORT ( * error_return ) ;
@@ -2916,6 +2926,7 @@ void ADF_Read_Data(
29162926 const cgsize_t m_start [],
29172927 const cgsize_t m_end [],
29182928 const cgsize_t m_stride [],
2929+ const char * m_data_type ,
29192930 char * data ,
29202931 int * error_return )
29212932{
@@ -2952,6 +2963,14 @@ if( (s_start == NULL) || (s_end == NULL) || (s_stride == NULL) ||
29522963ADFI_chase_link ( ID , & LID , & file_index , & block_offset , & node , error_return ) ;
29532964CHECK_ADF_ABORT ( * error_return ) ;
29542965
2966+ /* if it was provided, check to make sure the data types match */
2967+ if ( m_data_type != NULL ) {
2968+ if (strncmp (m_data_type , node .data_type , 2 ) != 0 ){
2969+ * error_return = INVALID_DATA_TYPE ;
2970+ CHECK_ADF_ABORT ( * error_return );
2971+ }
2972+ }
2973+
29552974 /** Get datatype length **/
29562975ADFI_evaluate_datatype ( file_index , node .data_type , & file_bytes , & memory_bytes ,
29572976 tokenized_data_type , & disk_format , & machine_format , error_return ) ;
0 commit comments