Coverage Report

Created: 2026-09-26 08:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/ogr/ogrsf_frmts/edigeo/ogredigeodriver.cpp
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  EDIGEO Translator
4
 * Purpose:  Implements OGREDIGEODriver.
5
 * Author:   Even Rouault, even dot rouault at spatialys.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com>
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#include "ogr_edigeo.h"
14
#include "cpl_conv.h"
15
16
extern "C" void RegisterOGREDIGEO();
17
18
// g++ -fPIC -g -Wall ogr/ogrsf_frmts/edigeo/*.cpp -shared -o ogr_EDIGEO.so
19
// -Iport -Igcore -Iogr -Iogr/ogrsf_frmts -Iogr/ogrsf_frmts/generic
20
// -Iogr/ogrsf_frmts/edigeo -L. -lgdal
21
22
/************************************************************************/
23
/*                      OGREDIGEODriverIdentify()                       */
24
/************************************************************************/
25
26
static int OGREDIGEODriverIdentify(GDALOpenInfo *poOpenInfo)
27
28
113k
{
29
113k
    return poOpenInfo->fpL != nullptr &&
30
60.7k
           poOpenInfo->IsExtensionEqualToCI("thf");
31
113k
}
32
33
/************************************************************************/
34
/*                                Open()                                */
35
/************************************************************************/
36
37
static GDALDataset *OGREDIGEODriverOpen(GDALOpenInfo *poOpenInfo)
38
39
93
{
40
93
    if (poOpenInfo->eAccess == GA_Update ||
41
93
        !OGREDIGEODriverIdentify(poOpenInfo))
42
0
        return nullptr;
43
44
93
    OGREDIGEODataSource *poDS = new OGREDIGEODataSource();
45
46
93
    if (!poDS->Open(poOpenInfo->pszFilename))
47
93
    {
48
93
        delete poDS;
49
93
        poDS = nullptr;
50
93
    }
51
52
93
    return poDS;
53
93
}
54
55
/************************************************************************/
56
/*                         RegisterOGREDIGEO()                          */
57
/************************************************************************/
58
59
void RegisterOGREDIGEO()
60
61
24
{
62
24
    if (GDALGetDriverByName("EDIGEO") != nullptr)
63
0
        return;
64
65
24
    GDALDriver *poDriver = new GDALDriver();
66
67
24
    poDriver->SetDescription("EDIGEO");
68
24
    poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
69
24
    poDriver->SetMetadataItem(GDAL_DMD_LONGNAME,
70
24
                              "French EDIGEO exchange format");
71
24
    poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "thf");
72
24
    poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/edigeo.html");
73
74
24
    poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
75
24
    poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES, "YES");
76
24
    poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES_READ, "YES");
77
24
    poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES");
78
24
    poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
79
80
24
    poDriver->pfnOpen = OGREDIGEODriverOpen;
81
24
    poDriver->pfnIdentify = OGREDIGEODriverIdentify;
82
83
24
    GetGDALDriverManager()->RegisterDriver(poDriver);
84
24
}