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

Generated by: LCOV version 1.14