LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/wasp - ogrwaspdriver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 38 38 100.0 %
Date: 2024-11-21 22:18:42 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  WAsP Translator
       4             :  * Purpose:  Implements OGRWAsPDriver.
       5             :  * Author:   Vincent Mora, vincent dot mora at oslandia dot com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2014, Oslandia <info at oslandia dot com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "ogrwasp.h"
      14             : #include "cpl_conv.h"
      15             : #include <cassert>
      16             : 
      17             : /************************************************************************/
      18             : /*                                Open()                                */
      19             : /************************************************************************/
      20             : 
      21       25580 : static GDALDataset *OGRWAsPDriverOpen(GDALOpenInfo *poOpenInfo)
      22             : 
      23             : {
      24       25580 :     if (poOpenInfo->eAccess == GA_Update)
      25             :     {
      26         526 :         return nullptr;
      27             :     }
      28             : 
      29       25054 :     if (!EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "map"))
      30             :     {
      31       25009 :         return nullptr;
      32             :     }
      33             : 
      34          45 :     VSILFILE *fh = VSIFOpenL(poOpenInfo->pszFilename, "r");
      35          45 :     if (!fh)
      36             :     {
      37             :         /*CPLError( CE_Failure, CPLE_FileIO, "cannot open file %s", pszFilename
      38             :          * );*/
      39          36 :         return nullptr;
      40             :     }
      41             :     auto pDataSource =
      42          18 :         std::make_unique<OGRWAsPDataSource>(poOpenInfo->pszFilename, fh);
      43             : 
      44           9 :     if (pDataSource->Load(true) != OGRERR_NONE)
      45             :     {
      46           6 :         return nullptr;
      47             :     }
      48           3 :     return pDataSource.release();
      49             : }
      50             : 
      51             : /************************************************************************/
      52             : /*                         OGRWAsPDriverCreate()                        */
      53             : /************************************************************************/
      54             : 
      55          34 : static GDALDataset *OGRWAsPDriverCreate(const char *pszName, int, int, int,
      56             :                                         GDALDataType, char **)
      57             : 
      58             : {
      59          34 :     VSILFILE *fh = VSIFOpenL(pszName, "w");
      60          34 :     if (!fh)
      61             :     {
      62           1 :         CPLError(CE_Failure, CPLE_FileIO, "cannot open file %s", pszName);
      63           1 :         return nullptr;
      64             :     }
      65          33 :     return new OGRWAsPDataSource(pszName, fh);
      66             : }
      67             : 
      68             : /************************************************************************/
      69             : /*                         OGRWAsPDriverDelete()                        */
      70             : /************************************************************************/
      71             : 
      72          34 : static CPLErr OGRWAsPDriverDelete(const char *pszName)
      73             : 
      74             : {
      75          34 :     return VSIUnlink(pszName) == 0 ? CE_None : CE_Failure;
      76             : }
      77             : 
      78             : /************************************************************************/
      79             : /*                           RegisterOGRWAsP()                          */
      80             : /************************************************************************/
      81             : 
      82        1595 : void RegisterOGRWAsP()
      83             : 
      84             : {
      85        1595 :     if (GDALGetDriverByName("WAsP"))
      86         302 :         return;
      87             : 
      88        1293 :     auto poDriver = new GDALDriver();
      89        1293 :     poDriver->SetDescription("WAsP");
      90             : 
      91        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      92        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES");
      93        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES");
      94        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      95        1293 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      96             : 
      97        1293 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "WAsP .map format");
      98        1293 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "map");
      99        1293 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/wasp.html");
     100        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
     101             : 
     102        1293 :     poDriver->pfnOpen = OGRWAsPDriverOpen;
     103        1293 :     poDriver->pfnCreate = OGRWAsPDriverCreate;
     104        1293 :     poDriver->pfnDelete = OGRWAsPDriverDelete;
     105             : 
     106        1293 :     GetGDALDriverManager()->RegisterDriver(poDriver);
     107             : }

Generated by: LCOV version 1.14