LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/gmlas - ogrgmlasfeatureclass.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 71 75 94.7 %
Date: 2024-05-06 18:28:20 Functions: 8 8 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  * Project:  OGR
       3             :  * Purpose:  OGRGMLASDriver implementation
       4             :  * Author:   Even Rouault, <even dot rouault at spatialys dot com>
       5             :  *
       6             :  * Initial development funded by the European Earth observation programme
       7             :  * Copernicus
       8             :  *
       9             :  ******************************************************************************
      10             :  * Copyright (c) 2016, Even Rouault, <even dot rouault at spatialys dot com>
      11             :  *
      12             :  * Permission is hereby granted, free of charge, to any person obtaining a
      13             :  * copy of this software and associated documentation files (the "Software"),
      14             :  * to deal in the Software without restriction, including without limitation
      15             :  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      16             :  * and/or sell copies of the Software, and to permit persons to whom the
      17             :  * Software is furnished to do so, subject to the following conditions:
      18             :  *
      19             :  * The above copyright notice and this permission notice shall be included
      20             :  * in all copies or substantial portions of the Software.
      21             :  *
      22             :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
      23             :  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      24             :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
      25             :  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      26             :  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
      27             :  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
      28             :  * DEALINGS IN THE SOFTWARE.
      29             :  ****************************************************************************/
      30             : 
      31             : #include "ogr_gmlas.h"
      32             : 
      33             : /************************************************************************/
      34             : /*                             GetTypeFromString()                      */
      35             : /************************************************************************/
      36             : 
      37      195559 : GMLASFieldType GMLASField::GetTypeFromString(const CPLString &osType)
      38             : {
      39      405277 :     if (osType == szXS_STRING || osType == szXS_TOKEN ||
      40      204814 :         osType == szXS_NMTOKEN || osType == szXS_NCNAME ||
      41      405250 :         osType == szXS_QNAME || osType == szXS_IDREF)
      42             :     {
      43             :         // token has special processing by XML processor: all leading/trailing
      44             :         // white space is removed
      45      127332 :         return GMLAS_FT_STRING;
      46             :     }
      47       68227 :     else if (osType == szXS_ID)
      48        6826 :         return GMLAS_FT_ID;
      49       61401 :     else if (osType == szXS_BOOLEAN)
      50         973 :         return GMLAS_FT_BOOLEAN;
      51       60428 :     else if (osType == szXS_SHORT)
      52          50 :         return GMLAS_FT_SHORT;
      53       60378 :     else if (osType == szXS_INT)
      54         801 :         return GMLAS_FT_INT32;
      55      177479 :     else if (osType == szXS_BYTE || osType == szXS_INTEGER ||
      56      116750 :              osType == szXS_NEGATIVE_INTEGER ||
      57      116668 :              osType == szXS_NON_NEGATIVE_INTEGER ||
      58      116586 :              osType == szXS_NON_POSITIVE_INTEGER ||
      59      174773 :              osType == szXS_POSITIVE_INTEGER || osType == szXS_UNSIGNED_BYTE ||
      60      177344 :              osType == szXS_UNSIGNED_SHORT ||
      61       58240 :              osType == szXS_UNSIGNED_INT)  // FIXME ?
      62        1337 :         return GMLAS_FT_INT32;
      63       58240 :     else if (osType == szXS_LONG || osType == szXS_UNSIGNED_LONG)
      64       22297 :         return GMLAS_FT_INT64;
      65       35943 :     else if (osType == szXS_FLOAT)
      66         100 :         return GMLAS_FT_FLOAT;
      67       35843 :     else if (osType == szXS_DOUBLE)
      68       29662 :         return GMLAS_FT_DOUBLE;
      69        6181 :     else if (osType == szXS_DECIMAL)
      70          55 :         return GMLAS_FT_DECIMAL;
      71        6126 :     else if (osType == szXS_DATE)
      72          56 :         return GMLAS_FT_DATE;
      73        6070 :     else if (osType == szXS_GYEAR)
      74           0 :         return GMLAS_FT_GYEAR;
      75        6070 :     else if (osType == szXS_GYEAR_MONTH)
      76           0 :         return GMLAS_FT_GYEAR_MONTH;
      77        6070 :     else if (osType == szXS_TIME)
      78          50 :         return GMLAS_FT_TIME;
      79        6020 :     else if (osType == szXS_DATETIME)
      80         422 :         return GMLAS_FT_DATETIME;
      81        5598 :     else if (osType == szXS_ANY_URI)
      82        2375 :         return GMLAS_FT_ANYURI;
      83        3223 :     else if (osType == szXS_ANY_TYPE)
      84          16 :         return GMLAS_FT_ANYTYPE;
      85        3207 :     else if (osType == szXS_ANY_SIMPLE_TYPE)
      86        3105 :         return GMLAS_FT_ANYSIMPLETYPE;
      87         102 :     else if (osType == szXS_DURATION)
      88           2 :         return GMLAS_FT_STRING;
      89         100 :     else if (osType == szXS_BASE64BINARY)
      90          50 :         return GMLAS_FT_BASE64BINARY;
      91          50 :     else if (osType == szXS_HEXBINARY)
      92          50 :         return GMLAS_FT_HEXBINARY;
      93             :     else
      94             :     {
      95           0 :         CPLError(CE_Warning, CPLE_AppDefined, "Unhandled type: %s",
      96             :                  osType.c_str());
      97           0 :         return GMLAS_FT_STRING;
      98             :     }
      99             : }
     100             : 
     101             : /************************************************************************/
     102             : /*                               SetType()                              */
     103             : /************************************************************************/
     104             : 
     105      204615 : void GMLASField::SetType(GMLASFieldType eType, const char *pszTypeName)
     106             : {
     107      204615 :     m_eType = eType;
     108      204615 :     m_osTypeName = pszTypeName;
     109      204615 : }
     110             : 
     111             : /************************************************************************/
     112             : /*                                 SetName()                            */
     113             : /************************************************************************/
     114             : 
     115       57778 : void GMLASFeatureClass::SetName(const CPLString &osName)
     116             : {
     117       57778 :     m_osName = osName;
     118       57778 : }
     119             : 
     120             : /************************************************************************/
     121             : /*                                SetXPath()                            */
     122             : /************************************************************************/
     123             : 
     124       41429 : void GMLASFeatureClass::SetXPath(const CPLString &osXPath)
     125             : {
     126       41429 :     m_osXPath = osXPath;
     127       41429 : }
     128             : 
     129             : /************************************************************************/
     130             : /*                                AddField()                            */
     131             : /************************************************************************/
     132             : 
     133      313617 : void GMLASFeatureClass::AddField(const GMLASField &oField)
     134             : {
     135      313617 :     m_aoFields.push_back(oField);
     136      313617 : }
     137             : 
     138             : /************************************************************************/
     139             : /*                            PrependFields()                           */
     140             : /************************************************************************/
     141             : 
     142        3913 : void GMLASFeatureClass::PrependFields(const std::vector<GMLASField> &aoFields)
     143             : {
     144        3913 :     m_aoFields.insert(m_aoFields.begin(), aoFields.begin(), aoFields.end());
     145        3913 : }
     146             : 
     147             : /************************************************************************/
     148             : /*                             AppendFields()                           */
     149             : /************************************************************************/
     150             : 
     151       40163 : void GMLASFeatureClass::AppendFields(const std::vector<GMLASField> &aoFields)
     152             : {
     153       40163 :     m_aoFields.insert(m_aoFields.end(), aoFields.begin(), aoFields.end());
     154       40163 : }
     155             : 
     156             : /************************************************************************/
     157             : /*                             AddNestedClass()                         */
     158             : /************************************************************************/
     159             : 
     160        7541 : void GMLASFeatureClass::AddNestedClass(const GMLASFeatureClass &oNestedClass)
     161             : {
     162        7541 :     m_aoNestedClasses.push_back(oNestedClass);
     163        7541 : }

Generated by: LCOV version 1.14