LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/generic - ogrdatasource.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 38 102 37.3 %
Date: 2024-11-21 22:18:42 Functions: 8 22 36.4 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  OpenGIS Simple Features Reference Implementation
       4             :  * Purpose:  The generic portions of the GDALDataset class.
       5             :  * Author:   Frank Warmerdam, warmerdam@pobox.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 1999,  Les Technologies SoftMap Inc.
       9             :  * Copyright (c) 2008-2014, Even Rouault <even dot rouault at spatialys.com>
      10             :  *
      11             :  * SPDX-License-Identifier: MIT
      12             :  ****************************************************************************/
      13             : 
      14             : #include "ogrsf_frmts.h"
      15             : #include "ogr_api.h"
      16             : #include "ograpispy.h"
      17             : 
      18             : /************************************************************************/
      19             : /*                           ~OGRDataSource()                           */
      20             : /************************************************************************/
      21             : 
      22           0 : OGRDataSource::OGRDataSource()
      23             : {
      24           0 : }
      25             : 
      26             : /************************************************************************/
      27             : /*                         DestroyDataSource()                          */
      28             : /************************************************************************/
      29             : 
      30             : //! @cond Doxygen_Suppress
      31           0 : void OGRDataSource::DestroyDataSource(OGRDataSource *poDS)
      32             : 
      33             : {
      34           0 :     delete poDS;
      35           0 : }
      36             : 
      37             : //! @endcond
      38             : 
      39             : /************************************************************************/
      40             : /*                           OGR_DS_Destroy()                           */
      41             : /************************************************************************/
      42             : 
      43          25 : void OGR_DS_Destroy(OGRDataSourceH hDS)
      44             : 
      45             : {
      46          25 :     if (hDS == nullptr)
      47           0 :         return;
      48          25 :     GDALClose(reinterpret_cast<GDALDatasetH>(hDS));
      49             :     // VALIDATE_POINTER0( hDS, "OGR_DS_Destroy" );
      50             : }
      51             : 
      52             : /************************************************************************/
      53             : /*                          OGR_DS_Reference()                          */
      54             : /************************************************************************/
      55             : 
      56           0 : int OGR_DS_Reference(OGRDataSourceH hDataSource)
      57             : 
      58             : {
      59           0 :     VALIDATE_POINTER1(hDataSource, "OGR_DS_Reference", 0);
      60             : 
      61           0 :     return GDALDataset::FromHandle(hDataSource)->Reference();
      62             : }
      63             : 
      64             : /************************************************************************/
      65             : /*                         OGR_DS_Dereference()                         */
      66             : /************************************************************************/
      67             : 
      68           0 : int OGR_DS_Dereference(OGRDataSourceH hDataSource)
      69             : 
      70             : {
      71           0 :     VALIDATE_POINTER1(hDataSource, "OGR_DS_Dereference", 0);
      72             : 
      73           0 :     return GDALDataset::FromHandle(hDataSource)->Dereference();
      74             : }
      75             : 
      76             : /************************************************************************/
      77             : /*                         OGR_DS_GetRefCount()                         */
      78             : /************************************************************************/
      79             : 
      80          12 : int OGR_DS_GetRefCount(OGRDataSourceH hDataSource)
      81             : 
      82             : {
      83          12 :     VALIDATE_POINTER1(hDataSource, "OGR_DS_GetRefCount", 0);
      84             : 
      85          12 :     return GDALDataset::FromHandle(hDataSource)->GetRefCount();
      86             : }
      87             : 
      88             : /************************************************************************/
      89             : /*                     OGR_DS_GetSummaryRefCount()                      */
      90             : /************************************************************************/
      91             : 
      92           0 : int OGR_DS_GetSummaryRefCount(OGRDataSourceH hDataSource)
      93             : 
      94             : {
      95           0 :     VALIDATE_POINTER1(hDataSource, "OGR_DS_GetSummaryRefCount", 0);
      96             : 
      97           0 :     return GDALDataset::FromHandle(hDataSource)->GetSummaryRefCount();
      98             : }
      99             : 
     100             : /************************************************************************/
     101             : /*                         OGR_DS_CreateLayer()                         */
     102             : /************************************************************************/
     103             : 
     104          26 : OGRLayerH OGR_DS_CreateLayer(OGRDataSourceH hDS, const char *pszName,
     105             :                              OGRSpatialReferenceH hSpatialRef,
     106             :                              OGRwkbGeometryType eType, char **papszOptions)
     107             : 
     108             : {
     109          26 :     VALIDATE_POINTER1(hDS, "OGR_DS_CreateLayer", nullptr);
     110             : 
     111          26 :     if (pszName == nullptr)
     112             :     {
     113           0 :         CPLError(CE_Failure, CPLE_ObjectNull,
     114             :                  "Name was NULL in OGR_DS_CreateLayer");
     115           0 :         return nullptr;
     116             :     }
     117             :     OGRLayerH hLayer =
     118          52 :         OGRLayer::ToHandle(GDALDataset::FromHandle(hDS)->CreateLayer(
     119          26 :             pszName, OGRSpatialReference::FromHandle(hSpatialRef), eType,
     120             :             papszOptions));
     121             : 
     122             : #ifdef OGRAPISPY_ENABLED
     123          26 :     if (bOGRAPISpyEnabled)
     124           0 :         OGRAPISpy_DS_CreateLayer(hDS, pszName, hSpatialRef, eType, papszOptions,
     125             :                                  hLayer);
     126             : #endif
     127             : 
     128          26 :     return hLayer;
     129             : }
     130             : 
     131             : /************************************************************************/
     132             : /*                          OGR_DS_CopyLayer()                          */
     133             : /************************************************************************/
     134             : 
     135           0 : OGRLayerH OGR_DS_CopyLayer(OGRDataSourceH hDS, OGRLayerH hSrcLayer,
     136             :                            const char *pszNewName, char **papszOptions)
     137             : 
     138             : {
     139           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_CopyLayer", nullptr);
     140           0 :     VALIDATE_POINTER1(hSrcLayer, "OGR_DS_CopyLayer", nullptr);
     141           0 :     VALIDATE_POINTER1(pszNewName, "OGR_DS_CopyLayer", nullptr);
     142             : 
     143           0 :     return OGRLayer::ToHandle(GDALDataset::FromHandle(hDS)->CopyLayer(
     144           0 :         OGRLayer::FromHandle(hSrcLayer), pszNewName, papszOptions));
     145             : }
     146             : 
     147             : /************************************************************************/
     148             : /*                         OGR_DS_DeleteLayer()                         */
     149             : /************************************************************************/
     150             : 
     151           7 : OGRErr OGR_DS_DeleteLayer(OGRDataSourceH hDS, int iLayer)
     152             : 
     153             : {
     154           7 :     VALIDATE_POINTER1(hDS, "OGR_DS_DeleteLayer", OGRERR_INVALID_HANDLE);
     155             : 
     156             : #ifdef OGRAPISPY_ENABLED
     157           7 :     if (bOGRAPISpyEnabled)
     158           0 :         OGRAPISpy_DS_DeleteLayer(reinterpret_cast<GDALDatasetH>(hDS), iLayer);
     159             : #endif
     160             : 
     161           7 :     OGRErr eErr = GDALDataset::FromHandle(hDS)->DeleteLayer(iLayer);
     162             : 
     163           7 :     return eErr;
     164             : }
     165             : 
     166             : /************************************************************************/
     167             : /*                       OGR_DS_GetLayerByName()                        */
     168             : /************************************************************************/
     169             : 
     170           0 : OGRLayerH OGR_DS_GetLayerByName(OGRDataSourceH hDS, const char *pszLayerName)
     171             : 
     172             : {
     173           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetLayerByName", nullptr);
     174             : 
     175           0 :     OGRLayerH hLayer = OGRLayer::ToHandle(
     176           0 :         GDALDataset::FromHandle(hDS)->GetLayerByName(pszLayerName));
     177             : 
     178             : #ifdef OGRAPISPY_ENABLED
     179           0 :     if (bOGRAPISpyEnabled)
     180           0 :         OGRAPISpy_DS_GetLayerByName(reinterpret_cast<GDALDatasetH>(hDS),
     181             :                                     pszLayerName, hLayer);
     182             : #endif
     183             : 
     184           0 :     return hLayer;
     185             : }
     186             : 
     187             : /************************************************************************/
     188             : /*                         OGR_DS_ExecuteSQL()                          */
     189             : /************************************************************************/
     190             : 
     191           2 : OGRLayerH OGR_DS_ExecuteSQL(OGRDataSourceH hDS, const char *pszStatement,
     192             :                             OGRGeometryH hSpatialFilter, const char *pszDialect)
     193             : 
     194             : {
     195           2 :     VALIDATE_POINTER1(hDS, "OGR_DS_ExecuteSQL", nullptr);
     196             : 
     197             :     OGRLayerH hLayer =
     198           4 :         OGRLayer::ToHandle(GDALDataset::FromHandle(hDS)->ExecuteSQL(
     199           2 :             pszStatement, OGRGeometry::FromHandle(hSpatialFilter), pszDialect));
     200             : 
     201             : #ifdef OGRAPISPY_ENABLED
     202           2 :     if (bOGRAPISpyEnabled)
     203           0 :         OGRAPISpy_DS_ExecuteSQL(reinterpret_cast<GDALDatasetH>(hDS),
     204             :                                 pszStatement, hSpatialFilter, pszDialect,
     205             :                                 hLayer);
     206             : #endif
     207             : 
     208           2 :     return hLayer;
     209             : }
     210             : 
     211             : /************************************************************************/
     212             : /*                      OGR_DS_ReleaseResultSet()                       */
     213             : /************************************************************************/
     214             : 
     215           2 : void OGR_DS_ReleaseResultSet(OGRDataSourceH hDS, OGRLayerH hLayer)
     216             : 
     217             : {
     218           2 :     VALIDATE_POINTER0(hDS, "OGR_DS_ReleaseResultSet");
     219             : 
     220             : #ifdef OGRAPISPY_ENABLED
     221           2 :     if (bOGRAPISpyEnabled)
     222           0 :         OGRAPISpy_DS_ReleaseResultSet(reinterpret_cast<GDALDatasetH>(hDS),
     223             :                                       hLayer);
     224             : #endif
     225             : 
     226           4 :     GDALDataset::FromHandle(hDS)->ReleaseResultSet(
     227           2 :         OGRLayer::FromHandle(hLayer));
     228             : }
     229             : 
     230             : /************************************************************************/
     231             : /*                       OGR_DS_TestCapability()                        */
     232             : /************************************************************************/
     233             : 
     234           0 : int OGR_DS_TestCapability(OGRDataSourceH hDS, const char *pszCapability)
     235             : 
     236             : {
     237           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_TestCapability", 0);
     238           0 :     VALIDATE_POINTER1(pszCapability, "OGR_DS_TestCapability", 0);
     239             : 
     240           0 :     return GDALDataset::FromHandle(hDS)->TestCapability(pszCapability);
     241             : }
     242             : 
     243             : /************************************************************************/
     244             : /*                        OGR_DS_GetLayerCount()                        */
     245             : /************************************************************************/
     246             : 
     247           8 : int OGR_DS_GetLayerCount(OGRDataSourceH hDS)
     248             : 
     249             : {
     250           8 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetLayerCount", 0);
     251             : 
     252             : #ifdef OGRAPISPY_ENABLED
     253           8 :     if (bOGRAPISpyEnabled)
     254           0 :         OGRAPISpy_DS_GetLayerCount(reinterpret_cast<GDALDatasetH>(hDS));
     255             : #endif
     256             : 
     257           8 :     return GDALDataset::FromHandle(hDS)->GetLayerCount();
     258             : }
     259             : 
     260             : /************************************************************************/
     261             : /*                          OGR_DS_GetLayer()                           */
     262             : /************************************************************************/
     263             : 
     264          21 : OGRLayerH OGR_DS_GetLayer(OGRDataSourceH hDS, int iLayer)
     265             : 
     266             : {
     267          21 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetLayer", nullptr);
     268             : 
     269             :     OGRLayerH hLayer =
     270          21 :         OGRLayer::ToHandle(GDALDataset::FromHandle(hDS)->GetLayer(iLayer));
     271             : 
     272             : #ifdef OGRAPISPY_ENABLED
     273          21 :     if (bOGRAPISpyEnabled)
     274           0 :         OGRAPISpy_DS_GetLayer(reinterpret_cast<GDALDatasetH>(hDS), iLayer,
     275             :                               hLayer);
     276             : #endif
     277             : 
     278          21 :     return hLayer;
     279             : }
     280             : 
     281             : /************************************************************************/
     282             : /*                           OGR_DS_GetName()                           */
     283             : /************************************************************************/
     284             : 
     285           0 : const char *OGR_DS_GetName(OGRDataSourceH hDS)
     286             : 
     287             : {
     288           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetName", nullptr);
     289             : 
     290           0 :     return GDALDataset::FromHandle(hDS)->GetDescription();
     291             : }
     292             : 
     293             : /************************************************************************/
     294             : /*                         OGR_DS_SyncToDisk()                          */
     295             : /************************************************************************/
     296             : 
     297           0 : OGRErr OGR_DS_SyncToDisk(OGRDataSourceH hDS)
     298             : 
     299             : {
     300           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_SyncToDisk", OGRERR_INVALID_HANDLE);
     301             : 
     302           0 :     GDALDataset::FromHandle(hDS)->FlushCache(false);
     303           0 :     if (CPLGetLastErrorType() != 0)
     304           0 :         return OGRERR_FAILURE;
     305             :     else
     306           0 :         return OGRERR_NONE;
     307             : }
     308             : 
     309             : /************************************************************************/
     310             : /*                          OGR_DS_GetDriver()                          */
     311             : /************************************************************************/
     312             : 
     313           0 : OGRSFDriverH OGR_DS_GetDriver(OGRDataSourceH hDS)
     314             : 
     315             : {
     316           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetDriver", nullptr);
     317             : 
     318             :     return reinterpret_cast<OGRSFDriverH>(
     319           0 :         reinterpret_cast<OGRDataSource *>(hDS)->GetDriver());
     320             : }
     321             : 
     322             : /************************************************************************/
     323             : /*                         OGR_DS_GetStyleTable()                       */
     324             : /************************************************************************/
     325             : 
     326           0 : OGRStyleTableH OGR_DS_GetStyleTable(OGRDataSourceH hDS)
     327             : 
     328             : {
     329           0 :     VALIDATE_POINTER1(hDS, "OGR_DS_GetStyleTable", nullptr);
     330             : 
     331             :     return reinterpret_cast<OGRStyleTableH>(
     332           0 :         GDALDataset::FromHandle(hDS)->GetStyleTable());
     333             : }
     334             : 
     335             : /************************************************************************/
     336             : /*                         OGR_DS_SetStyleTableDirectly()               */
     337             : /************************************************************************/
     338             : 
     339           0 : void OGR_DS_SetStyleTableDirectly(OGRDataSourceH hDS,
     340             :                                   OGRStyleTableH hStyleTable)
     341             : 
     342             : {
     343           0 :     VALIDATE_POINTER0(hDS, "OGR_DS_SetStyleTableDirectly");
     344             : 
     345           0 :     GDALDataset::FromHandle(hDS)->SetStyleTableDirectly(
     346           0 :         reinterpret_cast<OGRStyleTable *>(hStyleTable));
     347             : }
     348             : 
     349             : /************************************************************************/
     350             : /*                         OGR_DS_SetStyleTable()                       */
     351             : /************************************************************************/
     352             : 
     353           0 : void OGR_DS_SetStyleTable(OGRDataSourceH hDS, OGRStyleTableH hStyleTable)
     354             : 
     355             : {
     356           0 :     VALIDATE_POINTER0(hDS, "OGR_DS_SetStyleTable");
     357           0 :     VALIDATE_POINTER0(hStyleTable, "OGR_DS_SetStyleTable");
     358             : 
     359           0 :     GDALDataset::FromHandle(hDS)->SetStyleTable(
     360           0 :         reinterpret_cast<OGRStyleTable *>(hStyleTable));
     361             : }

Generated by: LCOV version 1.14