LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/ili - ogrili2driver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 34 34 100.0 %
Date: 2025-11-12 21:50:40 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  Interlis 2 Translator
       4             :  * Purpose:  Implements OGRILI2Layer class.
       5             :  * Author:   Markus Schnider, Sourcepole AG
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2004, Pirmin Kalberer, Sourcepole AG
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "xercesc_headers.h"
      14             : 
      15             : #include "cpl_conv.h"
      16             : #include "ogr_ili2.h"
      17             : #include "ogrsf_frmts.h"
      18             : 
      19             : /************************************************************************/
      20             : /*                                Open()                                */
      21             : /************************************************************************/
      22             : 
      23       30958 : static GDALDataset *OGRILI2DriverOpen(GDALOpenInfo *poOpenInfo)
      24             : 
      25             : {
      26       30958 :     if (poOpenInfo->pabyHeader != nullptr)
      27             :     {
      28        4257 :         if (poOpenInfo->pabyHeader[0] != '<' ||
      29         276 :             (strstr(reinterpret_cast<char *>(poOpenInfo->pabyHeader),
      30         275 :                     "interlis.ch/INTERLIS2") == nullptr &&
      31         275 :              strstr(reinterpret_cast<char *>(poOpenInfo->pabyHeader),
      32             :                     "//www.interlis.ch/xtf/") == nullptr))
      33             :         {
      34        4255 :             return nullptr;
      35             :         }
      36             :     }
      37       26701 :     else if (poOpenInfo->bIsDirectory)
      38         634 :         return nullptr;
      39             : 
      40       26069 :     OGRILI2DataSource *poDS = new OGRILI2DataSource();
      41             : 
      42       26069 :     const bool bTestOpen = (poOpenInfo->pabyHeader == nullptr);
      43       26069 :     if (!poDS->Open(poOpenInfo->pszFilename, poOpenInfo->papszOpenOptions,
      44       26073 :                     bTestOpen) ||
      45           4 :         poDS->GetLayerCount() == 0)
      46             :     {
      47       26065 :         delete poDS;
      48       26065 :         return nullptr;
      49             :     }
      50             : 
      51           4 :     return poDS;
      52             : }
      53             : 
      54             : /************************************************************************/
      55             : /*                           RegisterOGRILI2()                           */
      56             : /************************************************************************/
      57             : 
      58        2040 : void RegisterOGRILI2()
      59             : {
      60        2040 :     if (GDALGetDriverByName("Interlis 2") != nullptr)
      61         283 :         return;
      62             : 
      63        1757 :     GDALDriver *poDriver = new GDALDriver();
      64             : 
      65        1757 :     poDriver->SetDescription("Interlis 2");
      66        1757 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      67        1757 :     poDriver->SetMetadataItem(GDAL_DCAP_CURVE_GEOMETRIES, "YES");
      68        1757 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      69        1757 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Interlis 2");
      70        1757 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/ili.html");
      71        1757 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSIONS, "xtf xml ili");
      72        1757 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      73        1757 :     poDriver->SetMetadataItem(
      74             :         GDAL_DMD_OPENOPTIONLIST,
      75             :         "<OpenOptionList>"
      76             :         "  <Option name='MODEL' type='string' description='Filename of the "
      77             :         "model in IlisMeta format (.imd)'/>"
      78        1757 :         "</OpenOptionList>");
      79        1757 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      80             : 
      81        1757 :     poDriver->pfnOpen = OGRILI2DriverOpen;
      82             : 
      83        1757 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      84             : }

Generated by: LCOV version 1.14