Coverage Report

Created: 2026-02-14 09:00

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/ogr/ogrsf_frmts/gmlas/ogrgmlasfeatureclass.cpp
Line
Count
Source
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
 * SPDX-License-Identifier: MIT
13
 ****************************************************************************/
14
15
#include "ogr_gmlas.h"
16
17
/************************************************************************/
18
/*                         GetTypeFromString()                          */
19
/************************************************************************/
20
21
GMLASFieldType GMLASField::GetTypeFromString(const CPLString &osType)
22
0
{
23
0
    if (osType == szXS_STRING || osType == szXS_TOKEN ||
24
0
        osType == szXS_NMTOKEN || osType == szXS_NCNAME ||
25
0
        osType == szXS_QNAME || osType == szXS_IDREF)
26
0
    {
27
        // token has special processing by XML processor: all leading/trailing
28
        // white space is removed
29
0
        return GMLAS_FT_STRING;
30
0
    }
31
0
    else if (osType == szXS_ID)
32
0
        return GMLAS_FT_ID;
33
0
    else if (osType == szXS_BOOLEAN)
34
0
        return GMLAS_FT_BOOLEAN;
35
0
    else if (osType == szXS_SHORT)
36
0
        return GMLAS_FT_SHORT;
37
0
    else if (osType == szXS_INT)
38
0
        return GMLAS_FT_INT32;
39
0
    else if (osType == szXS_BYTE || osType == szXS_INTEGER ||
40
0
             osType == szXS_NEGATIVE_INTEGER ||
41
0
             osType == szXS_NON_NEGATIVE_INTEGER ||
42
0
             osType == szXS_NON_POSITIVE_INTEGER ||
43
0
             osType == szXS_POSITIVE_INTEGER || osType == szXS_UNSIGNED_BYTE ||
44
0
             osType == szXS_UNSIGNED_SHORT ||
45
0
             osType == szXS_UNSIGNED_INT)  // FIXME ?
46
0
        return GMLAS_FT_INT32;
47
0
    else if (osType == szXS_LONG || osType == szXS_UNSIGNED_LONG)
48
0
        return GMLAS_FT_INT64;
49
0
    else if (osType == szXS_FLOAT)
50
0
        return GMLAS_FT_FLOAT;
51
0
    else if (osType == szXS_DOUBLE)
52
0
        return GMLAS_FT_DOUBLE;
53
0
    else if (osType == szXS_DECIMAL)
54
0
        return GMLAS_FT_DECIMAL;
55
0
    else if (osType == szXS_DATE)
56
0
        return GMLAS_FT_DATE;
57
0
    else if (osType == szXS_GYEAR)
58
0
        return GMLAS_FT_GYEAR;
59
0
    else if (osType == szXS_GYEAR_MONTH)
60
0
        return GMLAS_FT_GYEAR_MONTH;
61
0
    else if (osType == szXS_TIME)
62
0
        return GMLAS_FT_TIME;
63
0
    else if (osType == szXS_DATETIME)
64
0
        return GMLAS_FT_DATETIME;
65
0
    else if (osType == szXS_ANY_URI)
66
0
        return GMLAS_FT_ANYURI;
67
0
    else if (osType == szXS_ANY_TYPE)
68
0
        return GMLAS_FT_ANYTYPE;
69
0
    else if (osType == szXS_ANY_SIMPLE_TYPE)
70
0
        return GMLAS_FT_ANYSIMPLETYPE;
71
0
    else if (osType == szXS_DURATION)
72
0
        return GMLAS_FT_STRING;
73
0
    else if (osType == szXS_BASE64BINARY)
74
0
        return GMLAS_FT_BASE64BINARY;
75
0
    else if (osType == szXS_HEXBINARY)
76
0
        return GMLAS_FT_HEXBINARY;
77
0
    else
78
0
    {
79
0
        CPLError(CE_Warning, CPLE_AppDefined, "Unhandled type: %s",
80
0
                 osType.c_str());
81
0
        return GMLAS_FT_STRING;
82
0
    }
83
0
}
84
85
/************************************************************************/
86
/*                              SetType()                               */
87
/************************************************************************/
88
89
void GMLASField::SetType(GMLASFieldType eType, const char *pszTypeName)
90
0
{
91
0
    m_eType = eType;
92
0
    m_osTypeName = pszTypeName;
93
0
}
94
95
/************************************************************************/
96
/*                              SetName()                               */
97
/************************************************************************/
98
99
void GMLASFeatureClass::SetName(const CPLString &osName)
100
0
{
101
0
    m_osName = osName;
102
0
}
103
104
/************************************************************************/
105
/*                              SetXPath()                              */
106
/************************************************************************/
107
108
void GMLASFeatureClass::SetXPath(const CPLString &osXPath)
109
0
{
110
0
    m_osXPath = osXPath;
111
0
}
112
113
/************************************************************************/
114
/*                              AddField()                              */
115
/************************************************************************/
116
117
void GMLASFeatureClass::AddField(const GMLASField &oField)
118
0
{
119
0
    m_aoFields.push_back(oField);
120
0
}
121
122
/************************************************************************/
123
/*                           PrependFields()                            */
124
/************************************************************************/
125
126
void GMLASFeatureClass::PrependFields(const std::vector<GMLASField> &aoFields)
127
0
{
128
0
    m_aoFields.insert(m_aoFields.begin(), aoFields.begin(), aoFields.end());
129
0
}
130
131
/************************************************************************/
132
/*                            AppendFields()                            */
133
/************************************************************************/
134
135
void GMLASFeatureClass::AppendFields(const std::vector<GMLASField> &aoFields)
136
0
{
137
0
    m_aoFields.insert(m_aoFields.end(), aoFields.begin(), aoFields.end());
138
0
}
139
140
/************************************************************************/
141
/*                           AddNestedClass()                           */
142
/************************************************************************/
143
144
void GMLASFeatureClass::AddNestedClass(const GMLASFeatureClass &oNestedClass)
145
0
{
146
0
    m_aoNestedClasses.push_back(oNestedClass);
147
0
}