LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/arrow_common - ograrrowdataset.hpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 26 26 100.0 %
Date: 2024-11-21 22:18:42 Functions: 7 7 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  Arrow generic code
       4             :  * Purpose:  Arrow generic code
       5             :  * Author:   Even Rouault, <even.rouault at spatialys.com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2022, Planet Labs
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef OGARROWDATASET_HPP_INCLUDED
      14             : #define OGARROWDATASET_HPP_INCLUDED
      15             : 
      16             : #include "ogr_arrow.h"
      17             : 
      18             : /************************************************************************/
      19             : /*                         OGRArrowDataset()                            */
      20             : /************************************************************************/
      21             : 
      22        1665 : inline OGRArrowDataset::OGRArrowDataset(
      23        1665 :     const std::shared_ptr<arrow::MemoryPool> &poMemoryPool)
      24        1665 :     : m_poMemoryPool(poMemoryPool)
      25             : {
      26        1665 : }
      27             : 
      28             : /************************************************************************/
      29             : /*                            SetLayer()                                */
      30             : /************************************************************************/
      31             : 
      32        1662 : inline void OGRArrowDataset::SetLayer(std::unique_ptr<OGRArrowLayer> &&poLayer)
      33             : {
      34        1662 :     m_poLayer = std::move(poLayer);
      35        1662 : }
      36             : 
      37             : /************************************************************************/
      38             : /*                          RegisterDomainName()                        */
      39             : /************************************************************************/
      40             : 
      41         406 : inline void OGRArrowDataset::RegisterDomainName(const std::string &osDomainName,
      42             :                                                 int iFieldIndex)
      43             : {
      44         406 :     m_aosDomainNames.push_back(osDomainName);
      45         406 :     m_oMapDomainNameToCol[osDomainName] = iFieldIndex;
      46         406 : }
      47             : 
      48             : /************************************************************************/
      49             : /*                          GetFieldDomainNames()                       */
      50             : /************************************************************************/
      51             : 
      52             : inline std::vector<std::string>
      53          15 : OGRArrowDataset::GetFieldDomainNames(CSLConstList) const
      54             : {
      55          15 :     return m_aosDomainNames;
      56             : }
      57             : 
      58             : /************************************************************************/
      59             : /*                          GetFieldDomain()                            */
      60             : /************************************************************************/
      61             : 
      62             : inline const OGRFieldDomain *
      63          74 : OGRArrowDataset::GetFieldDomain(const std::string &name) const
      64             : {
      65             :     {
      66          74 :         const auto iter = m_oMapFieldDomains.find(name);
      67          74 :         if (iter != m_oMapFieldDomains.end())
      68          25 :             return iter->second.get();
      69             :     }
      70          49 :     const auto iter = m_oMapDomainNameToCol.find(name);
      71          49 :     if (iter == m_oMapDomainNameToCol.end())
      72          15 :         return nullptr;
      73             :     return m_oMapFieldDomains
      74          68 :         .insert(std::pair(name, m_poLayer->BuildDomain(name, iter->second)))
      75          34 :         .first->second.get();
      76             : }
      77             : 
      78             : /************************************************************************/
      79             : /*                           GetLayerCount()                            */
      80             : /************************************************************************/
      81             : 
      82         580 : inline int OGRArrowDataset::GetLayerCount()
      83             : {
      84         580 :     return m_poLayer ? 1 : 0;
      85             : }
      86             : 
      87             : /************************************************************************/
      88             : /*                             GetLayer()                               */
      89             : /************************************************************************/
      90             : 
      91        1987 : inline OGRLayer *OGRArrowDataset::GetLayer(int idx)
      92             : {
      93        1987 :     return idx == 0 ? m_poLayer.get() : nullptr;
      94             : }
      95             : 
      96             : #endif /* OGARROWDATASET_HPP_INCLUDED */

Generated by: LCOV version 1.14