LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/avc - ogravcbindriver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 31 33 93.9 %
Date: 2025-01-18 12:42:00 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  OGR
       4             :  * Purpose:  OGRAVCBinDriver implementation (Arc/Info Binary Coverages)
       5             :  * Author:   Frank Warmerdam, warmerdam@pobox.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2002, Frank Warmerdam <warmerdam@pobox.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "ogr_avc.h"
      14             : 
      15             : /************************************************************************/
      16             : /*                                Open()                                */
      17             : /************************************************************************/
      18             : 
      19       22301 : static GDALDataset *OGRAVCBinDriverOpen(GDALOpenInfo *poOpenInfo)
      20             : 
      21             : {
      22       22301 :     if (poOpenInfo->eAccess == GA_Update)
      23         170 :         return nullptr;
      24       22131 :     if (!poOpenInfo->bStatOK)
      25       21100 :         return nullptr;
      26        1031 :     if (poOpenInfo->fpL != nullptr)
      27             :     {
      28         589 :         char **papszSiblingFiles = poOpenInfo->GetSiblingFiles();
      29         589 :         if (papszSiblingFiles != nullptr)
      30             :         {
      31         577 :             bool bFoundCandidateFile = false;
      32       20455 :             for (int i = 0; papszSiblingFiles[i] != nullptr; i++)
      33             :             {
      34       19878 :                 if (EQUAL(CPLGetExtensionSafe(papszSiblingFiles[i]).c_str(),
      35             :                           "ADF"))
      36             :                 {
      37           0 :                     bFoundCandidateFile = true;
      38           0 :                     break;
      39             :                 }
      40             :             }
      41         577 :             if (!bFoundCandidateFile)
      42         577 :                 return nullptr;
      43             :         }
      44             :     }
      45             : 
      46         454 :     OGRAVCBinDataSource *poDS = new OGRAVCBinDataSource();
      47             : 
      48         454 :     if (poDS->Open(poOpenInfo->pszFilename, TRUE) && poDS->GetLayerCount() > 0)
      49             :     {
      50           3 :         return poDS;
      51             :     }
      52         451 :     delete poDS;
      53             : 
      54         451 :     return nullptr;
      55             : }
      56             : 
      57             : /************************************************************************/
      58             : /*                           RegisterOGRAVC()                           */
      59             : /************************************************************************/
      60             : 
      61        1682 : void RegisterOGRAVCBin()
      62             : 
      63             : {
      64        1682 :     if (GDALGetDriverByName("AVCBin") != nullptr)
      65         301 :         return;
      66             : 
      67        1381 :     GDALDriver *poDriver = new GDALDriver();
      68             : 
      69        1381 :     poDriver->SetDescription("AVCBin");
      70        1381 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      71        1381 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Arc/Info Binary Coverage");
      72        1381 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/avcbin.html");
      73        1381 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      74        1381 :     poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES");
      75        1381 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      76             : 
      77        1381 :     poDriver->pfnOpen = OGRAVCBinDriverOpen;
      78             : 
      79        1381 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      80             : }

Generated by: LCOV version 1.14