Coverage Report

Created: 2026-08-14 09:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/frmts/wcs/wcsdrivercore.cpp
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  WCS Client Driver
4
 * Purpose:  Implementation of Dataset and RasterBand classes for WCS.
5
 * Author:   Frank Warmerdam, warmerdam@pobox.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2006, Frank Warmerdam
9
 * Copyright (c) 2008-2013, Even Rouault <even dot rouault at spatialys.com>
10
 *
11
 * SPDX-License-Identifier: MIT
12
 ****************************************************************************/
13
14
#include "wcsdrivercore.h"
15
#include "gdal_frmts.h"
16
#include "gdalplugindriverproxy.h"
17
18
/************************************************************************/
19
/*                         WCSDriverIdentify()                          */
20
/************************************************************************/
21
22
int WCSDriverIdentify(GDALOpenInfo *poOpenInfo)
23
24
570k
{
25
    /* -------------------------------------------------------------------- */
26
    /*      Filename is WCS:URL                                             */
27
    /*                                                                      */
28
    /* -------------------------------------------------------------------- */
29
570k
    if (poOpenInfo->nHeaderBytes == 0 &&
30
470k
        STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "WCS:"))
31
1.05k
        return TRUE;
32
33
    /* -------------------------------------------------------------------- */
34
    /*      Is this a WCS_GDAL service description file or "in url"         */
35
    /*      equivalent?                                                     */
36
    /* -------------------------------------------------------------------- */
37
569k
    if (poOpenInfo->nHeaderBytes == 0 &&
38
469k
        STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "<WCS_GDAL>"))
39
4
        return TRUE;
40
41
569k
    else if (poOpenInfo->nHeaderBytes >= 10 &&
42
99.4k
             STARTS_WITH_CI((const char *)poOpenInfo->pabyHeader, "<WCS_GDAL>"))
43
32
        return TRUE;
44
45
    /* -------------------------------------------------------------------- */
46
    /*      Is this apparently a WCS subdataset reference?                  */
47
    /* -------------------------------------------------------------------- */
48
569k
    else if (STARTS_WITH_CI((const char *)poOpenInfo->pszFilename,
49
0
                            "WCS_SDS:") &&
50
0
             poOpenInfo->nHeaderBytes == 0)
51
0
        return TRUE;
52
53
569k
    else
54
569k
        return FALSE;
55
569k
}
56
57
/************************************************************************/
58
/*                     WCSDriverSetCommonMetadata()                     */
59
/************************************************************************/
60
61
void WCSDriverSetCommonMetadata(GDALDriver *poDriver)
62
22
{
63
22
    poDriver->SetDescription(DRIVER_NAME);
64
22
    poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES");
65
22
    poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "OGC Web Coverage Service");
66
22
    poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/wcs.html");
67
22
    poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
68
22
    poDriver->SetMetadataItem(GDAL_DMD_SUBDATASETS, "YES");
69
70
22
    poDriver->pfnIdentify = WCSDriverIdentify;
71
22
    poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
72
22
}
73
74
/************************************************************************/
75
/*                      DeclareDeferredWCSPlugin()                      */
76
/************************************************************************/
77
78
#ifdef PLUGIN_FILENAME
79
void DeclareDeferredWCSPlugin()
80
{
81
    if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
82
    {
83
        return;
84
    }
85
    auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
86
#ifdef PLUGIN_INSTALLATION_MESSAGE
87
    poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
88
                              PLUGIN_INSTALLATION_MESSAGE);
89
#endif
90
    WCSDriverSetCommonMetadata(poDriver);
91
    GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
92
}
93
#endif