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: 2024-11-21 22:18:42 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       22048 : static GDALDataset *OGRAVCBinDriverOpen(GDALOpenInfo *poOpenInfo)
      20             : 
      21             : {
      22       22048 :     if (poOpenInfo->eAccess == GA_Update)
      23         173 :         return nullptr;
      24       21875 :     if (!poOpenInfo->bStatOK)
      25       20846 :         return nullptr;
      26        1029 :     if (poOpenInfo->fpL != nullptr)
      27             :     {
      28         588 :         char **papszSiblingFiles = poOpenInfo->GetSiblingFiles();
      29         588 :         if (papszSiblingFiles != nullptr)
      30             :         {
      31         576 :             bool bFoundCandidateFile = false;
      32       20396 :             for (int i = 0; papszSiblingFiles[i] != nullptr; i++)
      33             :             {
      34       19820 :                 if (EQUAL(CPLGetExtension(papszSiblingFiles[i]), "ADF"))
      35             :                 {
      36           0 :                     bFoundCandidateFile = true;
      37           0 :                     break;
      38             :                 }
      39             :             }
      40         576 :             if (!bFoundCandidateFile)
      41         576 :                 return nullptr;
      42             :         }
      43             :     }
      44             : 
      45         453 :     OGRAVCBinDataSource *poDS = new OGRAVCBinDataSource();
      46             : 
      47         453 :     if (poDS->Open(poOpenInfo->pszFilename, TRUE) && poDS->GetLayerCount() > 0)
      48             :     {
      49           3 :         return poDS;
      50             :     }
      51         450 :     delete poDS;
      52             : 
      53         450 :     return nullptr;
      54             : }
      55             : 
      56             : /************************************************************************/
      57             : /*                           RegisterOGRAVC()                           */
      58             : /************************************************************************/
      59             : 
      60        1595 : void RegisterOGRAVCBin()
      61             : 
      62             : {
      63        1595 :     if (GDALGetDriverByName("AVCBin") != nullptr)
      64         302 :         return;
      65             : 
      66        1293 :     GDALDriver *poDriver = new GDALDriver();
      67             : 
      68        1293 :     poDriver->SetDescription("AVCBin");
      69        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      70        1293 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Arc/Info Binary Coverage");
      71        1293 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/avcbin.html");
      72        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      73        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES");
      74        1293 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      75             : 
      76        1293 :     poDriver->pfnOpen = OGRAVCBinDriverOpen;
      77             : 
      78        1293 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      79             : }

Generated by: LCOV version 1.14