From 275e951a0ca88bf7acfcc29838ba33194004e7d3 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Thu, 7 Sep 2023 09:41:06 -0600 Subject: [PATCH] Per #2609, implement MetGrib2DataFile::data_planes() function --- src/libcode/vx_data2d_grib2/data2d_grib2.cc | 34 +++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/libcode/vx_data2d_grib2/data2d_grib2.cc b/src/libcode/vx_data2d_grib2/data2d_grib2.cc index 7a0dfef4fc..fe2cd59cf5 100644 --- a/src/libcode/vx_data2d_grib2/data2d_grib2.cc +++ b/src/libcode/vx_data2d_grib2/data2d_grib2.cc @@ -239,8 +239,8 @@ bool MetGrib2DataFile::data_plane(VarInfo &vinfo, DataPlane &plane) { //////////////////////////////////////////////////////////////////////// -int MetGrib2DataFile::data_plane_array( VarInfo &vinfo, - DataPlaneArray &plane_array ){ +int MetGrib2DataFile::data_plane_array(VarInfo &vinfo, + DataPlaneArray &plane_array) { // Initialize plane_array.clear(); @@ -357,10 +357,9 @@ int MetGrib2DataFile::data_plane_array( VarInfo &vinfo, //////////////////////////////////////////////////////////////////////// -void MetGrib2DataFile::find_record_matches( VarInfoGrib2* vinfo, - vector &listMatchExact, - vector &listMatchRange - ){ +void MetGrib2DataFile::find_record_matches(VarInfoGrib2* vinfo, + vector &listMatchExact, + vector &listMatchRange) { const char *method_name = "MetGrib2DataFile::find_record_matches() -> "; @@ -955,7 +954,7 @@ void MetGrib2DataFile::read_grib2_record_list() { //////////////////////////////////////////////////////////////////////// -void MetGrib2DataFile::read_grib2_grid( gribfield *gfld) { +void MetGrib2DataFile::read_grib2_grid(gribfield *gfld) { double d, r_km; int ResCompFlag; @@ -1416,7 +1415,7 @@ void MetGrib2DataFile::read_grib2_grid( gribfield *gfld) { //////////////////////////////////////////////////////////////////////// bool MetGrib2DataFile::read_grib2_record_data_plane(Grib2Record *rec, - DataPlane &plane) { + DataPlane &plane) { // attempt to read the record gribfield *gfld; @@ -1615,13 +1614,24 @@ int MetGrib2DataFile::index( VarInfo &vinfo ){ int MetGrib2DataFile::data_planes(vector &vi_list, vector &dp_list) { + int n_valid = 0; + DataPlane cur_dp; - // TODO implement this + // Loop over requested VarInfo objects + for(int i=0; i " - << "not yet implemented!\n\n"; - exit(1); + // Initialize + cur_dp.clear(); + + // Read the current DataPlane + if(data_plane(*vi_list[i], cur_dp)) n_valid++; + else cur_dp.clear(); + + // Store the result + dp_list.push_back(cur_dp); + } + return(n_valid); } ////////////////////////////////////////////////////////////////////////