Coverage Report

Created: 2025-08-11 09:23

/src/gdal/frmts/wcs/wcsdrivercore.cpp
Line
Count
Source (jump to first uncovered line)
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
16
/************************************************************************/
17
/*                     WCSDriverIdentify()                              */
18
/************************************************************************/
19
20
int WCSDriverIdentify(GDALOpenInfo *poOpenInfo)
21
22
565k
{
23
    /* -------------------------------------------------------------------- */
24
    /*      Filename is WCS:URL                                             */
25
    /*                                                                      */
26
    /* -------------------------------------------------------------------- */
27
565k
    if (poOpenInfo->nHeaderBytes == 0 &&
28
565k
        STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "WCS:"))
29
794
        return TRUE;
30
31
    /* -------------------------------------------------------------------- */
32
    /*      Is this a WCS_GDAL service description file or "in url"         */
33
    /*      equivalent?                                                     */
34
    /* -------------------------------------------------------------------- */
35
564k
    if (poOpenInfo->nHeaderBytes == 0 &&
36
564k
        STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "<WCS_GDAL>"))
37
4
        return TRUE;
38
39
564k
    else if (poOpenInfo->nHeaderBytes >= 10 &&
40
564k
             STARTS_WITH_CI((const char *)poOpenInfo->pabyHeader, "<WCS_GDAL>"))
41
0
        return TRUE;
42
43
    /* -------------------------------------------------------------------- */
44
    /*      Is this apparently a WCS subdataset reference?                  */
45
    /* -------------------------------------------------------------------- */
46
564k
    else if (STARTS_WITH_CI((const char *)poOpenInfo->pszFilename,
47
564k
                            "WCS_SDS:") &&
48
564k
             poOpenInfo->nHeaderBytes == 0)
49
0
        return TRUE;
50
51
564k
    else
52
564k
        return FALSE;
53
564k
}
54
55
/************************************************************************/
56
/*                      WCSDriverSetCommonMetadata()                    */
57
/************************************************************************/
58
59
void WCSDriverSetCommonMetadata(GDALDriver *poDriver)
60
24
{
61
24
    poDriver->SetDescription(DRIVER_NAME);
62
24
    poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES");
63
24
    poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "OGC Web Coverage Service");
64
24
    poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/wcs.html");
65
24
    poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
66
24
    poDriver->SetMetadataItem(GDAL_DMD_SUBDATASETS, "YES");
67
68
24
    poDriver->pfnIdentify = WCSDriverIdentify;
69
24
    poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
70
24
}
71
72
/************************************************************************/
73
/*                     DeclareDeferredWCSPlugin()                       */
74
/************************************************************************/
75
76
#ifdef PLUGIN_FILENAME
77
void DeclareDeferredWCSPlugin()
78
{
79
    if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
80
    {
81
        return;
82
    }
83
    auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
84
#ifdef PLUGIN_INSTALLATION_MESSAGE
85
    poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
86
                              PLUGIN_INSTALLATION_MESSAGE);
87
#endif
88
    WCSDriverSetCommonMetadata(poDriver);
89
    GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
90
}
91
#endif