LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/generic - ogrmutexedlayer.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 119 149 79.9 %
Date: 2024-11-21 22:18:42 Functions: 39 48 81.2 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  OpenGIS Simple Features Reference Implementation
       4             :  * Purpose:  Implements OGRMutexedLayer class
       5             :  * Author:   Even Rouault, even dot rouault at spatialys.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2013, Even Rouault <even dot rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef DOXYGEN_SKIP
      14             : 
      15             : #include "ogrmutexedlayer.h"
      16             : #include "cpl_multiproc.h"
      17             : 
      18         391 : OGRMutexedLayer::OGRMutexedLayer(OGRLayer *poDecoratedLayer, int bTakeOwnership,
      19         391 :                                  CPLMutex *hMutex)
      20         391 :     : OGRLayerDecorator(poDecoratedLayer, bTakeOwnership), m_hMutex(hMutex)
      21             : {
      22         391 :     SetDescription(poDecoratedLayer->GetDescription());
      23         391 : }
      24             : 
      25         782 : OGRMutexedLayer::~OGRMutexedLayer()
      26             : {
      27         782 : }
      28             : 
      29          18 : OGRGeometry *OGRMutexedLayer::GetSpatialFilter()
      30             : {
      31          36 :     CPLMutexHolderOptionalLockD(m_hMutex);
      32          36 :     return OGRLayerDecorator::GetSpatialFilter();
      33             : }
      34             : 
      35         136 : void OGRMutexedLayer::SetSpatialFilter(OGRGeometry *poGeom)
      36             : {
      37         272 :     CPLMutexHolderOptionalLockD(m_hMutex);
      38         136 :     OGRLayerDecorator::SetSpatialFilter(poGeom);
      39         136 : }
      40             : 
      41           0 : void OGRMutexedLayer::SetSpatialFilterRect(double dfMinX, double dfMinY,
      42             :                                            double dfMaxX, double dfMaxY)
      43             : {
      44           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
      45           0 :     OGRLayerDecorator::SetSpatialFilterRect(dfMinX, dfMinY, dfMaxX, dfMaxY);
      46           0 : }
      47             : 
      48          94 : void OGRMutexedLayer::SetSpatialFilter(int iGeomField, OGRGeometry *poGeom)
      49             : {
      50         188 :     CPLMutexHolderOptionalLockD(m_hMutex);
      51          94 :     OGRLayerDecorator::SetSpatialFilter(iGeomField, poGeom);
      52          94 : }
      53             : 
      54           0 : void OGRMutexedLayer::SetSpatialFilterRect(int iGeomField, double dfMinX,
      55             :                                            double dfMinY, double dfMaxX,
      56             :                                            double dfMaxY)
      57             : {
      58           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
      59           0 :     OGRLayerDecorator::SetSpatialFilterRect(iGeomField, dfMinX, dfMinY, dfMaxX,
      60             :                                             dfMaxY);
      61           0 : }
      62             : 
      63         312 : OGRErr OGRMutexedLayer::SetAttributeFilter(const char *poAttrFilter)
      64             : {
      65         624 :     CPLMutexHolderOptionalLockD(m_hMutex);
      66         624 :     return OGRLayerDecorator::SetAttributeFilter(poAttrFilter);
      67             : }
      68             : 
      69         495 : void OGRMutexedLayer::ResetReading()
      70             : {
      71         990 :     CPLMutexHolderOptionalLockD(m_hMutex);
      72         495 :     OGRLayerDecorator::ResetReading();
      73         495 : }
      74             : 
      75        1700 : OGRFeature *OGRMutexedLayer::GetNextFeature()
      76             : {
      77        3400 :     CPLMutexHolderOptionalLockD(m_hMutex);
      78        3400 :     return OGRLayerDecorator::GetNextFeature();
      79             : }
      80             : 
      81          38 : GDALDataset *OGRMutexedLayer::GetDataset()
      82             : {
      83          76 :     CPLMutexHolderOptionalLockD(m_hMutex);
      84          76 :     return OGRLayerDecorator::GetDataset();
      85             : }
      86             : 
      87         105 : bool OGRMutexedLayer::GetArrowStream(struct ArrowArrayStream *out_stream,
      88             :                                      CSLConstList papszOptions)
      89             : {
      90         210 :     CPLMutexHolderOptionalLockD(m_hMutex);
      91         210 :     return OGRLayerDecorator::GetArrowStream(out_stream, papszOptions);
      92             : }
      93             : 
      94          73 : OGRErr OGRMutexedLayer::SetNextByIndex(GIntBig nIndex)
      95             : {
      96         146 :     CPLMutexHolderOptionalLockD(m_hMutex);
      97         146 :     return OGRLayerDecorator::SetNextByIndex(nIndex);
      98             : }
      99             : 
     100         152 : OGRFeature *OGRMutexedLayer::GetFeature(GIntBig nFID)
     101             : {
     102         304 :     CPLMutexHolderOptionalLockD(m_hMutex);
     103         304 :     return OGRLayerDecorator::GetFeature(nFID);
     104             : }
     105             : 
     106          24 : OGRErr OGRMutexedLayer::ISetFeature(OGRFeature *poFeature)
     107             : {
     108          48 :     CPLMutexHolderOptionalLockD(m_hMutex);
     109          48 :     return OGRLayerDecorator::ISetFeature(poFeature);
     110             : }
     111             : 
     112        1568 : OGRErr OGRMutexedLayer::ICreateFeature(OGRFeature *poFeature)
     113             : {
     114        3136 :     CPLMutexHolderOptionalLockD(m_hMutex);
     115        3136 :     return OGRLayerDecorator::ICreateFeature(poFeature);
     116             : }
     117             : 
     118           0 : OGRErr OGRMutexedLayer::IUpsertFeature(OGRFeature *poFeature)
     119             : {
     120           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     121           0 :     return OGRLayerDecorator::IUpsertFeature(poFeature);
     122             : }
     123             : 
     124           2 : OGRErr OGRMutexedLayer::IUpdateFeature(OGRFeature *poFeature,
     125             :                                        int nUpdatedFieldsCount,
     126             :                                        const int *panUpdatedFieldsIdx,
     127             :                                        int nUpdatedGeomFieldsCount,
     128             :                                        const int *panUpdatedGeomFieldsIdx,
     129             :                                        bool bUpdateStyleString)
     130             : {
     131           4 :     CPLMutexHolderOptionalLockD(m_hMutex);
     132           2 :     return OGRLayerDecorator::IUpdateFeature(
     133             :         poFeature, nUpdatedFieldsCount, panUpdatedFieldsIdx,
     134           4 :         nUpdatedGeomFieldsCount, panUpdatedGeomFieldsIdx, bUpdateStyleString);
     135             : }
     136             : 
     137          38 : OGRErr OGRMutexedLayer::DeleteFeature(GIntBig nFID)
     138             : {
     139          76 :     CPLMutexHolderOptionalLockD(m_hMutex);
     140          76 :     return OGRLayerDecorator::DeleteFeature(nFID);
     141             : }
     142             : 
     143         533 : const char *OGRMutexedLayer::GetName()
     144             : {
     145        1066 :     CPLMutexHolderOptionalLockD(m_hMutex);
     146        1066 :     return OGRLayerDecorator::GetName();
     147             : }
     148             : 
     149         318 : OGRwkbGeometryType OGRMutexedLayer::GetGeomType()
     150             : {
     151         636 :     CPLMutexHolderOptionalLockD(m_hMutex);
     152         636 :     return OGRLayerDecorator::GetGeomType();
     153             : }
     154             : 
     155        4908 : OGRFeatureDefn *OGRMutexedLayer::GetLayerDefn()
     156             : {
     157        9816 :     CPLMutexHolderOptionalLockD(m_hMutex);
     158        9816 :     return OGRLayerDecorator::GetLayerDefn();
     159             : }
     160             : 
     161          55 : OGRSpatialReference *OGRMutexedLayer::GetSpatialRef()
     162             : {
     163         110 :     CPLMutexHolderOptionalLockD(m_hMutex);
     164         110 :     return OGRLayerDecorator::GetSpatialRef();
     165             : }
     166             : 
     167         212 : GIntBig OGRMutexedLayer::GetFeatureCount(int bForce)
     168             : {
     169         424 :     CPLMutexHolderOptionalLockD(m_hMutex);
     170         424 :     return OGRLayerDecorator::GetFeatureCount(bForce);
     171             : }
     172             : 
     173          68 : OGRErr OGRMutexedLayer::GetExtent(int iGeomField, OGREnvelope *psExtent,
     174             :                                   int bForce)
     175             : {
     176         136 :     CPLMutexHolderOptionalLockD(m_hMutex);
     177         136 :     return OGRLayerDecorator::GetExtent(iGeomField, psExtent, bForce);
     178             : }
     179             : 
     180          32 : OGRErr OGRMutexedLayer::GetExtent(OGREnvelope *psExtent, int bForce)
     181             : {
     182          64 :     CPLMutexHolderOptionalLockD(m_hMutex);
     183          64 :     return OGRLayerDecorator::GetExtent(psExtent, bForce);
     184             : }
     185             : 
     186         949 : int OGRMutexedLayer::TestCapability(const char *pszCapability)
     187             : {
     188        1898 :     CPLMutexHolderOptionalLockD(m_hMutex);
     189        1898 :     return OGRLayerDecorator::TestCapability(pszCapability);
     190             : }
     191             : 
     192        1369 : OGRErr OGRMutexedLayer::CreateField(const OGRFieldDefn *poField, int bApproxOK)
     193             : {
     194        2738 :     CPLMutexHolderOptionalLockD(m_hMutex);
     195        2738 :     return OGRLayerDecorator::CreateField(poField, bApproxOK);
     196             : }
     197             : 
     198           1 : OGRErr OGRMutexedLayer::DeleteField(int iField)
     199             : {
     200           2 :     CPLMutexHolderOptionalLockD(m_hMutex);
     201           2 :     return OGRLayerDecorator::DeleteField(iField);
     202             : }
     203             : 
     204           0 : OGRErr OGRMutexedLayer::ReorderFields(int *panMap)
     205             : {
     206           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     207           0 :     return OGRLayerDecorator::ReorderFields(panMap);
     208             : }
     209             : 
     210           0 : OGRErr OGRMutexedLayer::AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn,
     211             :                                        int nFlagsIn)
     212             : {
     213           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     214           0 :     return OGRLayerDecorator::AlterFieldDefn(iField, poNewFieldDefn, nFlagsIn);
     215             : }
     216             : 
     217           0 : OGRErr OGRMutexedLayer::AlterGeomFieldDefn(
     218             :     int iGeomField, const OGRGeomFieldDefn *poNewGeomFieldDefn, int nFlagsIn)
     219             : {
     220           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     221           0 :     return OGRLayerDecorator::AlterGeomFieldDefn(iGeomField, poNewGeomFieldDefn,
     222           0 :                                                  nFlagsIn);
     223             : }
     224             : 
     225           0 : OGRErr OGRMutexedLayer::SyncToDisk()
     226             : {
     227           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     228           0 :     return OGRLayerDecorator::SyncToDisk();
     229             : }
     230             : 
     231           2 : OGRStyleTable *OGRMutexedLayer::GetStyleTable()
     232             : {
     233           4 :     CPLMutexHolderOptionalLockD(m_hMutex);
     234           4 :     return OGRLayerDecorator::GetStyleTable();
     235             : }
     236             : 
     237           0 : void OGRMutexedLayer::SetStyleTableDirectly(OGRStyleTable *poStyleTable)
     238             : {
     239           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     240           0 :     return OGRLayerDecorator::SetStyleTableDirectly(poStyleTable);
     241             : }
     242             : 
     243           7 : void OGRMutexedLayer::SetStyleTable(OGRStyleTable *poStyleTable)
     244             : {
     245          14 :     CPLMutexHolderOptionalLockD(m_hMutex);
     246          14 :     return OGRLayerDecorator::SetStyleTable(poStyleTable);
     247             : }
     248             : 
     249           8 : OGRErr OGRMutexedLayer::StartTransaction()
     250             : {
     251          16 :     CPLMutexHolderOptionalLockD(m_hMutex);
     252          16 :     return OGRLayerDecorator::StartTransaction();
     253             : }
     254             : 
     255           7 : OGRErr OGRMutexedLayer::CommitTransaction()
     256             : {
     257          14 :     CPLMutexHolderOptionalLockD(m_hMutex);
     258          14 :     return OGRLayerDecorator::CommitTransaction();
     259             : }
     260             : 
     261           1 : OGRErr OGRMutexedLayer::RollbackTransaction()
     262             : {
     263           2 :     CPLMutexHolderOptionalLockD(m_hMutex);
     264           2 :     return OGRLayerDecorator::RollbackTransaction();
     265             : }
     266             : 
     267         116 : const char *OGRMutexedLayer::GetFIDColumn()
     268             : {
     269         232 :     CPLMutexHolderOptionalLockD(m_hMutex);
     270         232 :     return OGRLayerDecorator::GetFIDColumn();
     271             : }
     272             : 
     273          35 : const char *OGRMutexedLayer::GetGeometryColumn()
     274             : {
     275          70 :     CPLMutexHolderOptionalLockD(m_hMutex);
     276          70 :     return OGRLayerDecorator::GetGeometryColumn();
     277             : }
     278             : 
     279          36 : OGRErr OGRMutexedLayer::SetIgnoredFields(CSLConstList papszFields)
     280             : {
     281          72 :     CPLMutexHolderOptionalLockD(m_hMutex);
     282          72 :     return OGRLayerDecorator::SetIgnoredFields(papszFields);
     283             : }
     284             : 
     285          18 : char **OGRMutexedLayer::GetMetadata(const char *pszDomain)
     286             : {
     287          36 :     CPLMutexHolderOptionalLockD(m_hMutex);
     288          36 :     return OGRLayerDecorator::GetMetadata(pszDomain);
     289             : }
     290             : 
     291           8 : CPLErr OGRMutexedLayer::SetMetadata(char **papszMetadata, const char *pszDomain)
     292             : {
     293          16 :     CPLMutexHolderOptionalLockD(m_hMutex);
     294          16 :     return OGRLayerDecorator::SetMetadata(papszMetadata, pszDomain);
     295             : }
     296             : 
     297          22 : const char *OGRMutexedLayer::GetMetadataItem(const char *pszName,
     298             :                                              const char *pszDomain)
     299             : {
     300          44 :     CPLMutexHolderOptionalLockD(m_hMutex);
     301          44 :     return OGRLayerDecorator::GetMetadataItem(pszName, pszDomain);
     302             : }
     303             : 
     304           0 : CPLErr OGRMutexedLayer::SetMetadataItem(const char *pszName,
     305             :                                         const char *pszValue,
     306             :                                         const char *pszDomain)
     307             : {
     308           0 :     CPLMutexHolderOptionalLockD(m_hMutex);
     309           0 :     return OGRLayerDecorator::SetMetadataItem(pszName, pszValue, pszDomain);
     310             : }
     311             : 
     312           8 : OGRErr OGRMutexedLayer::Rename(const char *pszNewName)
     313             : {
     314          16 :     CPLMutexHolderOptionalLockD(m_hMutex);
     315          16 :     return OGRLayerDecorator::Rename(pszNewName);
     316             : }
     317             : 
     318             : #endif /* #ifndef DOXYGEN_SKIP */

Generated by: LCOV version 1.14