LCOV - code coverage report
Current view: top level - frmts/postgisraster - postgisrastertools.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 0 74 0.0 %
Date: 2025-01-18 12:42:00 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /***********************************************************************
       2             :  * File :    postgisrastertools.cpp
       3             :  * Project:  PostGIS Raster driver
       4             :  * Purpose:  Tools for PostGIS Raster driver
       5             :  * Author:   Jorge Arevalo, jorge.arevalo@deimos-space.com
       6             :  *                          jorgearevalo@libregis.org
       7             :  *
       8             :  * Author:       David Zwarg, dzwarg@azavea.com
       9             :  *
      10             :  *
      11             :  ***********************************************************************
      12             :  * Copyright (c) 2009 - 2013, Jorge Arevalo, David Zwarg
      13             :  *
      14             :  * SPDX-License-Identifier: MIT
      15             :  **********************************************************************/
      16             : #include "postgisraster.h"
      17             : 
      18             : /**********************************************************************
      19             :  * \brief Replace the quotes by single quotes in the input string
      20             :  *
      21             :  * Needed in the 'where' part of the input string
      22             :  **********************************************************************/
      23           0 : char *ReplaceQuotes(const char *pszInput, int nLength)
      24             : {
      25             :     int i;
      26           0 :     char *pszOutput = nullptr;
      27             : 
      28           0 :     if (nLength == -1)
      29           0 :         nLength = static_cast<int>(strlen(pszInput));
      30             : 
      31           0 :     pszOutput = static_cast<char *>(CPLCalloc(nLength + 1, sizeof(char)));
      32             : 
      33           0 :     for (i = 0; i < nLength; i++)
      34             :     {
      35           0 :         if (pszInput[i] == '"')
      36           0 :             pszOutput[i] = '\'';
      37             :         else
      38           0 :             pszOutput[i] = pszInput[i];
      39             :     }
      40             : 
      41           0 :     return pszOutput;
      42             : }
      43             : 
      44             : /***********************************************************************
      45             :  * \brief Translate a PostGIS Raster datatype string in a valid
      46             :  * GDALDataType object.
      47             :  **********************************************************************/
      48           0 : GBool TranslateDataType(const char *pszDataType,
      49             :                         GDALDataType *poDataType = nullptr,
      50             :                         int *pnBitsDepth = nullptr)
      51             : {
      52           0 :     if (!pszDataType)
      53           0 :         return false;
      54             : 
      55           0 :     if (EQUAL(pszDataType, "1BB"))
      56             :     {
      57           0 :         if (pnBitsDepth)
      58           0 :             *pnBitsDepth = 1;
      59           0 :         if (poDataType)
      60           0 :             *poDataType = GDT_Byte;
      61             :     }
      62             : 
      63           0 :     else if (EQUAL(pszDataType, "2BUI"))
      64             :     {
      65           0 :         if (pnBitsDepth)
      66           0 :             *pnBitsDepth = 2;
      67           0 :         if (poDataType)
      68           0 :             *poDataType = GDT_Byte;
      69             :     }
      70             : 
      71           0 :     else if (EQUAL(pszDataType, "4BUI"))
      72             :     {
      73           0 :         if (pnBitsDepth)
      74           0 :             *pnBitsDepth = 4;
      75           0 :         if (poDataType)
      76           0 :             *poDataType = GDT_Byte;
      77             :     }
      78             : 
      79           0 :     else if (EQUAL(pszDataType, "8BUI"))
      80             :     {
      81           0 :         if (pnBitsDepth)
      82           0 :             *pnBitsDepth = 8;
      83           0 :         if (poDataType)
      84           0 :             *poDataType = GDT_Byte;
      85             :     }
      86             : 
      87           0 :     else if (EQUAL(pszDataType, "8BSI"))
      88             :     {
      89           0 :         if (pnBitsDepth)
      90           0 :             *pnBitsDepth = 8;
      91           0 :         if (poDataType)
      92           0 :             *poDataType = GDT_Int8;
      93             :     }
      94           0 :     else if (EQUAL(pszDataType, "16BSI"))
      95             :     {
      96           0 :         if (pnBitsDepth)
      97           0 :             *pnBitsDepth = 16;
      98           0 :         if (poDataType)
      99           0 :             *poDataType = GDT_Int16;
     100             :     }
     101             : 
     102           0 :     else if (EQUAL(pszDataType, "16BUI"))
     103             :     {
     104           0 :         if (pnBitsDepth)
     105           0 :             *pnBitsDepth = 16;
     106           0 :         if (poDataType)
     107           0 :             *poDataType = GDT_UInt16;
     108             :     }
     109             : 
     110           0 :     else if (EQUAL(pszDataType, "32BSI"))
     111             :     {
     112           0 :         if (pnBitsDepth)
     113           0 :             *pnBitsDepth = 32;
     114           0 :         if (poDataType)
     115           0 :             *poDataType = GDT_Int32;
     116             :     }
     117             : 
     118           0 :     else if (EQUAL(pszDataType, "32BUI"))
     119             :     {
     120           0 :         if (pnBitsDepth)
     121           0 :             *pnBitsDepth = 32;
     122           0 :         if (poDataType)
     123           0 :             *poDataType = GDT_UInt32;
     124             :     }
     125             : 
     126           0 :     else if (EQUAL(pszDataType, "32BF"))
     127             :     {
     128           0 :         if (pnBitsDepth)
     129           0 :             *pnBitsDepth = 32;
     130           0 :         if (poDataType)
     131           0 :             *poDataType = GDT_Float32;
     132             :     }
     133             : 
     134           0 :     else if (EQUAL(pszDataType, "64BF"))
     135             :     {
     136           0 :         if (pnBitsDepth)
     137           0 :             *pnBitsDepth = 64;
     138           0 :         if (poDataType)
     139           0 :             *poDataType = GDT_Float64;
     140             :     }
     141             : 
     142             :     else
     143             :     {
     144           0 :         if (pnBitsDepth)
     145           0 :             *pnBitsDepth = -1;
     146           0 :         if (poDataType)
     147           0 :             *poDataType = GDT_Unknown;
     148             : 
     149           0 :         return false;
     150             :     }
     151             : 
     152           0 :     return true;
     153             : }

Generated by: LCOV version 1.14