LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/tiger - ogrtigerdriver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 32 35 91.4 %
Date: 2024-11-21 22:18:42 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  TIGER/Line Translator
       4             :  * Purpose:  Implements OGRTigerDriver
       5             :  * Author:   Frank Warmerdam, warmerdam@pobox.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 1999, Frank Warmerdam
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "ogr_tiger.h"
      14             : #include "cpl_conv.h"
      15             : 
      16             : /************************************************************************/
      17             : /*                                Open()                                */
      18             : /************************************************************************/
      19             : 
      20       22048 : static GDALDataset *OGRTigerDriverOpen(GDALOpenInfo *poOpenInfo)
      21             : 
      22             : {
      23       22048 :     if (!poOpenInfo->bStatOK)
      24       20946 :         return nullptr;
      25        1102 :     char **papszSiblingFiles = poOpenInfo->GetSiblingFiles();
      26        1102 :     if (papszSiblingFiles != nullptr)
      27             :     {
      28         604 :         bool bFoundCompatibleFile = false;
      29       20393 :         for (int i = 0; papszSiblingFiles[i] != nullptr; i++)
      30             :         {
      31       19801 :             int nLen = (int)strlen(papszSiblingFiles[i]);
      32       19801 :             if (nLen > 4 && papszSiblingFiles[i][nLen - 4] == '.' &&
      33       14648 :                 papszSiblingFiles[i][nLen - 1] == '1')
      34             :             {
      35          12 :                 bFoundCompatibleFile = true;
      36          12 :                 break;
      37             :             }
      38             :         }
      39         604 :         if (!bFoundCompatibleFile)
      40         592 :             return nullptr;
      41             :     }
      42             : 
      43         510 :     OGRTigerDataSource *poDS = new OGRTigerDataSource;
      44             : 
      45         510 :     if (!poDS->Open(poOpenInfo->pszFilename, TRUE))
      46             :     {
      47         510 :         delete poDS;
      48         510 :         poDS = nullptr;
      49             :     }
      50             : 
      51         510 :     if (poDS != nullptr && poOpenInfo->eAccess == GA_Update)
      52             :     {
      53           0 :         CPLError(CE_Failure, CPLE_OpenFailed,
      54             :                  "Tiger Driver doesn't support update.");
      55           0 :         delete poDS;
      56           0 :         poDS = nullptr;
      57             :     }
      58             : 
      59         510 :     return poDS;
      60             : }
      61             : 
      62             : /************************************************************************/
      63             : /*                           RegisterOGRTiger()                         */
      64             : /************************************************************************/
      65             : 
      66        1595 : void RegisterOGRTiger()
      67             : 
      68             : {
      69        1595 :     if (GDALGetDriverByName("TIGER") != nullptr)
      70         302 :         return;
      71             : 
      72        1293 :     GDALDriver *poDriver = new GDALDriver();
      73             : 
      74        1293 :     poDriver->SetDescription("TIGER");
      75        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      76        1293 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "U.S. Census TIGER/Line");
      77        1293 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/tiger.html");
      78        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      79        1293 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      80             : 
      81        1293 :     poDriver->pfnOpen = OGRTigerDriverOpen;
      82             : 
      83        1293 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      84             : }

Generated by: LCOV version 1.14