LCOV - code coverage report
Current view: top level - frmts/wcs - wcsdrivercore.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 21 25 84.0 %
Date: 2025-10-22 13:51:22 Functions: 2 2 100.0 %

          Line data    Source code
       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       60781 : int WCSDriverIdentify(GDALOpenInfo *poOpenInfo)
      23             : 
      24             : {
      25             :     /* -------------------------------------------------------------------- */
      26             :     /*      Filename is WCS:URL                                             */
      27             :     /*                                                                      */
      28             :     /* -------------------------------------------------------------------- */
      29       60781 :     if (poOpenInfo->nHeaderBytes == 0 &&
      30       55992 :         STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "WCS:"))
      31         192 :         return TRUE;
      32             : 
      33             :     /* -------------------------------------------------------------------- */
      34             :     /*      Is this a WCS_GDAL service description file or "in url"         */
      35             :     /*      equivalent?                                                     */
      36             :     /* -------------------------------------------------------------------- */
      37       60589 :     if (poOpenInfo->nHeaderBytes == 0 &&
      38       55799 :         STARTS_WITH_CI((const char *)poOpenInfo->pszFilename, "<WCS_GDAL>"))
      39           0 :         return TRUE;
      40             : 
      41       60589 :     else if (poOpenInfo->nHeaderBytes >= 10 &&
      42        4647 :              STARTS_WITH_CI((const char *)poOpenInfo->pabyHeader, "<WCS_GDAL>"))
      43           2 :         return TRUE;
      44             : 
      45             :     /* -------------------------------------------------------------------- */
      46             :     /*      Is this apparently a WCS subdataset reference?                  */
      47             :     /* -------------------------------------------------------------------- */
      48       60587 :     else if (STARTS_WITH_CI((const char *)poOpenInfo->pszFilename,
      49           0 :                             "WCS_SDS:") &&
      50           0 :              poOpenInfo->nHeaderBytes == 0)
      51           0 :         return TRUE;
      52             : 
      53             :     else
      54       60587 :         return FALSE;
      55             : }
      56             : 
      57             : /************************************************************************/
      58             : /*                      WCSDriverSetCommonMetadata()                    */
      59             : /************************************************************************/
      60             : 
      61        1755 : void WCSDriverSetCommonMetadata(GDALDriver *poDriver)
      62             : {
      63        1755 :     poDriver->SetDescription(DRIVER_NAME);
      64        1755 :     poDriver->SetMetadataItem(GDAL_DCAP_RASTER, "YES");
      65        1755 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "OGC Web Coverage Service");
      66        1755 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/raster/wcs.html");
      67        1755 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      68        1755 :     poDriver->SetMetadataItem(GDAL_DMD_SUBDATASETS, "YES");
      69             : 
      70        1755 :     poDriver->pfnIdentify = WCSDriverIdentify;
      71        1755 :     poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
      72        1755 : }
      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

Generated by: LCOV version 1.14