Coverage Report

Created: 2025-12-03 08:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/ogr/ogrsf_frmts/gmt/ogr_gmt.h
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  OpenGIS Simple Features Reference Implementation
4
 * Purpose:  Private definitions within the OGR GMT driver.
5
 * Author:   Frank Warmerdam, warmerdam@pobox.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2007, Frank Warmerdam <warmerdam@pobox.com>
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#ifndef OGRGMT_H_INCLUDED
14
#define OGRGMT_H_INCLUDED
15
16
#include "ogrsf_frmts.h"
17
#include "ogr_api.h"
18
#include "cpl_string.h"
19
20
/************************************************************************/
21
/*                             OGRGmtLayer                              */
22
/************************************************************************/
23
24
class OGRGmtLayer final : public OGRLayer,
25
                          public OGRGetNextFeatureThroughRaw<OGRGmtLayer>
26
{
27
    GDALDataset *m_poDS = nullptr;
28
    OGRSpatialReference *m_poSRS = nullptr;
29
    OGRFeatureDefn *poFeatureDefn{};
30
31
    int iNextFID{};
32
33
    bool bUpdate{};
34
    bool bHeaderComplete{};
35
36
    bool bRegionComplete{};
37
    OGREnvelope sRegion{};
38
    vsi_l_offset nRegionOffset{};
39
40
    VSILFILE *m_fp = nullptr;
41
42
    bool ReadLine();
43
    CPLString osLine{};
44
    char **papszKeyedValues{};
45
46
    bool ScanAheadForHole();
47
    bool NextIsFeature();
48
49
    OGRFeature *GetNextRawFeature();
50
51
    OGRErr WriteGeometry(OGRGeometryH hGeom, bool bHaveAngle);
52
    OGRErr CompleteHeader(OGRGeometry *);
53
54
    CPL_DISALLOW_COPY_ASSIGN(OGRGmtLayer)
55
56
  public:
57
    bool bValidFile;
58
59
    OGRGmtLayer(GDALDataset *poDS, const char *pszFilename, VSILFILE *fp,
60
                const OGRSpatialReference *poSRS, int bUpdate);
61
    ~OGRGmtLayer() override;
62
63
    void ResetReading() override;
64
    DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(OGRGmtLayer)
65
66
    const OGRFeatureDefn *GetLayerDefn() const override
67
69.2k
    {
68
69.2k
        return poFeatureDefn;
69
69.2k
    }
70
71
    OGRErr IGetExtent(int iGeomField, OGREnvelope *psExtent,
72
                      bool bForce) override;
73
74
    OGRErr ICreateFeature(OGRFeature *poFeature) override;
75
76
    virtual OGRErr CreateField(const OGRFieldDefn *poField,
77
                               int bApproxOK = TRUE) override;
78
79
    int TestCapability(const char *) const override;
80
81
    GDALDataset *GetDataset() override
82
0
    {
83
0
        return m_poDS;
84
0
    }
85
};
86
87
/************************************************************************/
88
/*                           OGRGmtDataSource                           */
89
/************************************************************************/
90
91
class OGRGmtDataSource final : public GDALDataset
92
{
93
    OGRGmtLayer **papoLayers;
94
    int nLayers;
95
96
    bool bUpdate;
97
98
    CPL_DISALLOW_COPY_ASSIGN(OGRGmtDataSource)
99
100
  public:
101
    OGRGmtDataSource();
102
    ~OGRGmtDataSource() override;
103
104
    int Open(const char *pszFilename, VSILFILE *fp,
105
             const OGRSpatialReference *poSRS, int bUpdate);
106
107
    int GetLayerCount() const override
108
10.9k
    {
109
10.9k
        return nLayers;
110
10.9k
    }
111
112
    const OGRLayer *GetLayer(int) const override;
113
114
    OGRLayer *ICreateLayer(const char *pszName,
115
                           const OGRGeomFieldDefn *poGeomFieldDefn,
116
                           CSLConstList papszOptions) override;
117
    int TestCapability(const char *) const override;
118
};
119
120
#endif /* ndef OGRGMT_H_INCLUDED */