Coverage Report

Created: 2025-06-13 06:18

/src/gdal/gnm/gnmnetwork.cpp
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 *
3
 * Project:  GDAL/OGR Geography Network support (Geographic Network Model)
4
 * Purpose:  GNM network class.
5
 * Authors:  Mikhail Gusev (gusevmihs at gmail dot com)
6
 *           Dmitry Baryshnikov, polimax@mail.ru
7
 *
8
 ******************************************************************************
9
 * Copyright (c) 2014, Mikhail Gusev
10
 * Copyright (c) 2014-2015, NextGIS <info@nextgis.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 "gnm_api.h"
32
#include "ogrsf_frmts.h"
33
34
0
GNMNetwork::GNMNetwork() : GDALDataset()
35
0
{
36
0
}
37
38
GNMNetwork::~GNMNetwork()
39
0
{
40
0
}
41
42
const char *GNMNetwork::GetName() const
43
0
{
44
0
    return m_soName;
45
0
}
46
47
const OGRSpatialReference *GNMNetwork::GetSpatialRef() const
48
0
{
49
0
    return m_oSRS.IsEmpty() ? nullptr : &m_oSRS;
50
0
}
51
52
char **GNMNetwork::GetFileList()
53
0
{
54
0
    return nullptr;
55
0
}
56
57
//--- C API --------------------------------------------------------------------
58
59
const char *CPL_STDCALL GNMGetName(GNMNetworkH hNet)
60
0
{
61
0
    VALIDATE_POINTER1(hNet, "GNMGetVersion", nullptr);
62
63
0
    return GNMNetwork::FromHandle(hNet)->GetName();
64
0
}
65
66
int CPL_STDCALL GNMGetVersion(GNMNetworkH hNet)
67
0
{
68
0
    VALIDATE_POINTER1(hNet, "GNMGetVersion", 0);
69
70
0
    return GNMNetwork::FromHandle(hNet)->GetVersion();
71
0
}
72
73
CPLErr CPL_STDCALL GNMDisconnectAll(GNMNetworkH hNet)
74
0
{
75
0
    VALIDATE_POINTER1(hNet, "GNMDisconnectAll", CE_Failure);
76
77
0
    return GNMNetwork::FromHandle(hNet)->DisconnectAll();
78
0
}
79
80
OGRFeatureH CPL_STDCALL GNMGetFeatureByGlobalFID(GNMNetworkH hNet,
81
                                                 GNMGFID nGFID)
82
0
{
83
0
    VALIDATE_POINTER1(hNet, "GNMGetFeatureByGlobalFID", nullptr);
84
85
0
    return OGRFeature::ToHandle(
86
0
        GNMNetwork::FromHandle(hNet)->GetFeatureByGlobalFID(nGFID));
87
0
}
88
89
OGRLayerH CPL_STDCALL GNMGetPath(GNMNetworkH hNet, GNMGFID nStartFID,
90
                                 GNMGFID nEndFID,
91
                                 GNMGraphAlgorithmType eAlgorithm,
92
                                 char **papszOptions)
93
0
{
94
0
    VALIDATE_POINTER1(hNet, "GNMGetPath", nullptr);
95
96
0
    return OGRLayer::ToHandle(GNMNetwork::FromHandle(hNet)->GetPath(
97
0
        nStartFID, nEndFID, eAlgorithm, papszOptions));
98
0
}
99
100
GNMNetworkH CPL_STDCALL GNMCastToNetwork(GDALMajorObjectH hBase)
101
0
{
102
0
    return GNMNetwork::ToHandle(
103
0
        dynamic_cast<GNMNetwork *>(GDALMajorObject::FromHandle(hBase)));
104
0
}
105
106
GNMGenericNetworkH CPL_STDCALL GNMCastToGenericNetwork(GDALMajorObjectH hBase)
107
0
{
108
0
    return GNMGenericNetwork::ToHandle(
109
0
        dynamic_cast<GNMGenericNetwork *>(GDALMajorObject::FromHandle(hBase)));
110
0
}