LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/ili - ogrili1driver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 42 42 100.0 %
Date: 2024-11-21 22:18:42 Functions: 3 3 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       26497 : static GDALDataset *OGRILI1DriverOpen(GDALOpenInfo *poOpenInfo)
      22             : 
      23             : {
      24       26497 :     if (poOpenInfo->eAccess == GA_Update ||
      25       25701 :         (!poOpenInfo->bStatOK &&
      26       21869 :          strchr(poOpenInfo->pszFilename, ',') == nullptr))
      27       22592 :         return nullptr;
      28             : 
      29        3905 :     if (poOpenInfo->pabyHeader != nullptr)
      30             :     {
      31        3334 :         if (strstr((const char *)poOpenInfo->pabyHeader, "SCNT") == nullptr)
      32             :         {
      33        3302 :             return nullptr;
      34             :         }
      35             :     }
      36         571 :     else if (poOpenInfo->bIsDirectory)
      37         495 :         return nullptr;
      38             : 
      39         108 :     OGRILI1DataSource *poDS = new OGRILI1DataSource();
      40             : 
      41         108 :     if (!poDS->Open(poOpenInfo->pszFilename, poOpenInfo->papszOpenOptions,
      42         156 :                     TRUE) ||
      43          48 :         poDS->GetLayerCount() == 0)
      44             :     {
      45          60 :         delete poDS;
      46          60 :         return nullptr;
      47             :     }
      48             : 
      49          48 :     return poDS;
      50             : }
      51             : 
      52             : /************************************************************************/
      53             : /*                               Create()                               */
      54             : /************************************************************************/
      55             : 
      56          22 : static GDALDataset *OGRILI1DriverCreate(const char *pszName, int /* nBands */,
      57             :                                         int /* nXSize */, int /* nYSize */,
      58             :                                         GDALDataType /* eDT */,
      59             :                                         char **papszOptions)
      60             : {
      61          22 :     OGRILI1DataSource *poDS = new OGRILI1DataSource();
      62             : 
      63          22 :     if (!poDS->Create(pszName, papszOptions))
      64             :     {
      65           1 :         delete poDS;
      66           1 :         return nullptr;
      67             :     }
      68             : 
      69          21 :     return poDS;
      70             : }
      71             : 
      72             : /************************************************************************/
      73             : /*                           RegisterOGRILI1()                           */
      74             : /************************************************************************/
      75             : 
      76        1595 : void RegisterOGRILI1()
      77             : {
      78        1595 :     if (GDALGetDriverByName("Interlis 1") != nullptr)
      79         302 :         return;
      80             : 
      81        1293 :     GDALDriver *poDriver = new GDALDriver();
      82             : 
      83        1293 :     poDriver->SetDescription("Interlis 1");
      84        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      85        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES");
      86        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_CURVE_GEOMETRIES, "YES");
      87        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      88        1293 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Interlis 1");
      89        1293 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/ili.html");
      90        1293 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSIONS, "itf ili");
      91        1293 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      92        1293 :     poDriver->SetMetadataItem(
      93             :         GDAL_DMD_OPENOPTIONLIST,
      94             :         "<OpenOptionList>"
      95             :         "  <Option name='MODEL' type='string' description='Filename of the "
      96             :         "model in IlisMeta format (.imd)'/>"
      97        1293 :         "</OpenOptionList>");
      98        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      99             : 
     100        1293 :     poDriver->pfnOpen = OGRILI1DriverOpen;
     101        1293 :     poDriver->pfnCreate = OGRILI1DriverCreate;
     102             : 
     103        1293 :     GetGDALDriverManager()->RegisterDriver(poDriver);
     104             : }

Generated by: LCOV version 1.14