///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2024 Equinor ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RifArrowTools.h" #include "cafAssert.h" #include // #include // #include // #include // #include // #include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RifArrowTools::convertChunkedArrayToStdVector( const std::shared_ptr& column ) { auto convertChunkToVector = []( const std::shared_ptr& array ) -> std::vector { std::vector result; auto double_array = std::static_pointer_cast( array ); result.resize( double_array->length() ); for ( int64_t i = 0; i < double_array->length(); ++i ) { result[i] = double_array->Value( i ); } return result; }; CAF_ASSERT( column->type()->id() == arrow::Type::DOUBLE ); std::vector result; // Iterate over each chunk in the column for ( int i = 0; i < column->num_chunks(); ++i ) { std::shared_ptr chunk = column->chunk( i ); std::vector chunk_vector = convertChunkToVector( chunk ); result.insert( result.end(), chunk_vector.begin(), chunk_vector.end() ); } return result; };