LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/ili - ogrili1driver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 34 34 100.0 %
Date: 2025-02-20 10:14:44 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  Interlis 1 Translator
       4             :  * Purpose:  Implements OGRILI1Layer class.
       5             :  * Author:   Pirmin Kalberer, Sourcepole AG
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2004, Pirmin Kalberer, Sourcepole AG
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "cpl_conv.h"
      14             : #include "ogr_ili1.h"
      15             : #include "ogrsf_frmts.h"
      16             : 
      17             : /************************************************************************/
      18             : /*                                Open()                                */
      19             : /************************************************************************/
      20             : 
      21       27132 : static GDALDataset *OGRILI1DriverOpen(GDALOpenInfo *poOpenInfo)
      22             : 
      23             : {
      24       27132 :     if (poOpenInfo->eAccess == GA_Update ||
      25       26329 :         (!poOpenInfo->bStatOK &&
      26       22399 :          strchr(poOpenInfo->pszFilename, ',') == nullptr))
      27       23138 :         return nullptr;
      28             : 
      29        3994 :     if (poOpenInfo->pabyHeader != nullptr)
      30             :     {
      31        3439 :         if (strstr((const char *)poOpenInfo->pabyHeader, "SCNT") == nullptr)
      32             :         {
      33        3439 :             return nullptr;
      34             :         }
      35             :     }
      36         555 :     else if (poOpenInfo->bIsDirectory)
      37         488 :         return nullptr;
      38             : 
      39          67 :     OGRILI1DataSource *poDS = new OGRILI1DataSource();
      40             : 
      41          67 :     if (!poDS->Open(poOpenInfo->pszFilename, poOpenInfo->papszOpenOptions,
      42          80 :                     TRUE) ||
      43          13 :         poDS->GetLayerCount() == 0)
      44             :     {
      45          54 :         delete poDS;
      46          54 :         return nullptr;
      47             :     }
      48             : 
      49          13 :     return poDS;
      50             : }
      51             : 
      52             : /************************************************************************/
      53             : /*                           RegisterOGRILI1()                           */
      54             : /************************************************************************/
      55             : 
      56        1686 : void RegisterOGRILI1()
      57             : {
      58        1686 :     if (GDALGetDriverByName("Interlis 1") != nullptr)
      59         302 :         return;
      60             : 
      61        1384 :     GDALDriver *poDriver = new GDALDriver();
      62             : 
      63        1384 :     poDriver->SetDescription("Interlis 1");
      64        1384 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      65        1384 :     poDriver->SetMetadataItem(GDAL_DCAP_CURVE_GEOMETRIES, "YES");
      66        1384 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      67        1384 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Interlis 1");
      68        1384 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/ili.html");
      69        1384 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSIONS, "itf ili");
      70        1384 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      71        1384 :     poDriver->SetMetadataItem(
      72             :         GDAL_DMD_OPENOPTIONLIST,
      73             :         "<OpenOptionList>"
      74             :         "  <Option name='MODEL' type='string' description='Filename of the "
      75             :         "model in IlisMeta format (.imd)'/>"
      76        1384 :         "</OpenOptionList>");
      77        1384 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      78             : 
      79        1384 :     poDriver->pfnOpen = OGRILI1DriverOpen;
      80             : 
      81        1384 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      82             : }

Generated by: LCOV version 1.14