Coverage Report

Created: 2026-02-14 09:00

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/ogr/ogrsf_frmts/carto/ogrcartodriver.cpp
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  Carto Translator
4
 * Purpose:  Implements OGRCARTODriver.
5
 * Author:   Even Rouault, even dot rouault at spatialys.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2013, Even Rouault <even dot rouault at spatialys.com>
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#include "ogr_carto.h"
14
#include "ogrcartodrivercore.h"
15
16
// g++ -g -Wall -fPIC -shared -o ogr_CARTO.so -Iport -Igcore -Iogr
17
// -Iogr/ogrsf_frmts -Iogr/ogrsf_frmts/carto ogr/ogrsf_frmts/carto/*.c* -L.
18
// -lgdal -Iogr/ogrsf_frmts/geojson/libjson
19
20
extern "C" void RegisterOGRCarto();
21
22
/************************************************************************/
23
/*                         OGRCartoDriverOpen()                         */
24
/************************************************************************/
25
26
static GDALDataset *OGRCartoDriverOpen(GDALOpenInfo *poOpenInfo)
27
28
316
{
29
316
    if (!OGRCartoDriverIdentify(poOpenInfo))
30
0
        return nullptr;
31
32
316
    OGRCARTODataSource *poDS = new OGRCARTODataSource();
33
34
316
    if (!poDS->Open(poOpenInfo->pszFilename, poOpenInfo->papszOpenOptions,
35
316
                    poOpenInfo->eAccess == GA_Update))
36
316
    {
37
316
        delete poDS;
38
316
        poDS = nullptr;
39
316
    }
40
41
316
    return poDS;
42
316
}
43
44
/************************************************************************/
45
/*                        OGRCartoDriverCreate()                        */
46
/************************************************************************/
47
48
static GDALDataset *OGRCartoDriverCreate(const char *pszName,
49
                                         CPL_UNUSED int nBands,
50
                                         CPL_UNUSED int nXSize,
51
                                         CPL_UNUSED int nYSize,
52
                                         CPL_UNUSED GDALDataType eDT,
53
                                         CPL_UNUSED CSLConstList papszOptions)
54
55
0
{
56
0
    OGRCARTODataSource *poDS = new OGRCARTODataSource();
57
58
0
    if (!poDS->Open(pszName, nullptr, TRUE))
59
0
    {
60
0
        delete poDS;
61
0
        CPLError(CE_Failure, CPLE_AppDefined,
62
0
                 "Carto driver doesn't support database creation.");
63
0
        return nullptr;
64
0
    }
65
66
0
    return poDS;
67
0
}
68
69
/************************************************************************/
70
/*                          RegisterOGRCARTO()                          */
71
/************************************************************************/
72
73
void RegisterOGRCarto()
74
75
22
{
76
22
    if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
77
0
        return;
78
79
22
    GDALDriver *poDriver = new GDALDriver();
80
22
    OGRCartoDriverSetCommonMetadata(poDriver);
81
22
    poDriver->pfnOpen = OGRCartoDriverOpen;
82
22
    poDriver->pfnCreate = OGRCartoDriverCreate;
83
84
22
    GetGDALDriverManager()->RegisterDriver(poDriver);
85
22
}