Coverage Report

Created: 2025-07-23 09:13

/src/gdal/ogr/ogrsf_frmts/pds/ogrpdsdriver.cpp
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 *
3
 * Project:  PDS Translator
4
 * Purpose:  Implements OGRPDSDriver.
5
 * Author:   Even Rouault, even dot rouault at spatialys.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2010, Even Rouault <even dot rouault at spatialys.com>
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#include "cpl_conv.h"
14
#include "ogr_pds.h"
15
16
extern "C" void RegisterOGRPDS();
17
18
using namespace OGRPDS;
19
20
/************************************************************************/
21
/*                                Open()                                */
22
/************************************************************************/
23
24
static GDALDataset *OGRPDSDriverOpen(GDALOpenInfo *poOpenInfo)
25
26
87.2k
{
27
87.2k
    if (poOpenInfo->eAccess == GA_Update || poOpenInfo->fpL == nullptr)
28
34.1k
        return nullptr;
29
30
53.0k
    if (strstr((const char *)poOpenInfo->pabyHeader, "PDS_VERSION_ID") ==
31
53.0k
        nullptr)
32
48.1k
        return nullptr;
33
34
4.93k
    OGRPDSDataSource *poDS = new OGRPDSDataSource();
35
36
4.93k
    if (!poDS->Open(poOpenInfo->pszFilename))
37
4.62k
    {
38
4.62k
        delete poDS;
39
4.62k
        poDS = nullptr;
40
4.62k
    }
41
42
4.93k
    return poDS;
43
53.0k
}
44
45
/************************************************************************/
46
/*                           RegisterOGRPDS()                           */
47
/************************************************************************/
48
49
void RegisterOGRPDS()
50
51
22
{
52
22
    if (GDALGetDriverByName("OGR_PDS") != nullptr)
53
0
        return;
54
55
22
    GDALDriver *poDriver = new GDALDriver();
56
57
22
    poDriver->SetDescription("OGR_PDS");
58
22
    poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
59
22
    poDriver->SetMetadataItem(GDAL_DMD_LONGNAME,
60
22
                              "Planetary Data Systems TABLE");
61
22
    poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/pds.html");
62
22
    poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
63
22
    poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
64
65
22
    poDriver->pfnOpen = OGRPDSDriverOpen;
66
67
22
    GetGDALDriverManager()->RegisterDriver(poDriver);
68
22
}