Coverage Report

Created: 2025-11-15 08:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gdal/ogr/ogrsf_frmts/ili/ogr_ili2.h
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  Interlis 2 Translator
4
 * Purpose:   Definition of classes for OGR Interlis 2 driver.
5
 * Author:   Markus Schnider, Sourcepole AG
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2004, Pirmin Kalberer, Sourcepole AG
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#ifndef OGR_ILI2_H_INCLUDED
14
#define OGR_ILI2_H_INCLUDED
15
16
#include "ogrsf_frmts.h"
17
#include "imdreader.h"
18
#include "ili2reader.h"
19
20
#include <string>
21
#include <list>
22
23
class OGRILI2DataSource;
24
25
/************************************************************************/
26
/*                           OGRILI2Layer                               */
27
/************************************************************************/
28
29
class OGRILI2Layer final : public OGRLayer
30
{
31
  private:
32
    OGRFeatureDefn *poFeatureDefn;
33
    GeomFieldInfos oGeomFieldInfos;
34
    std::list<OGRFeature *> listFeature;
35
    std::list<OGRFeature *>::const_iterator listFeatureIt;
36
37
    OGRILI2DataSource *poDS;
38
39
  public:
40
    OGRILI2Layer(OGRFeatureDefn *poFeatureDefn,
41
                 const GeomFieldInfos &oGeomFieldInfos,
42
                 OGRILI2DataSource *poDS);
43
44
    ~OGRILI2Layer() override;
45
46
    void AddFeature(OGRFeature *poFeature);
47
48
    void ResetReading() override;
49
    OGRFeature *GetNextFeature() override;
50
51
    GIntBig GetFeatureCount(int bForce = TRUE) override;
52
53
    using OGRLayer::GetLayerDefn;
54
55
    const OGRFeatureDefn *GetLayerDefn() const override
56
180k
    {
57
180k
        return poFeatureDefn;
58
180k
    }
59
60
    CPLString GetIliGeomType(const char *cFieldName)
61
0
    {
62
0
        return oGeomFieldInfos[cFieldName].iliGeomType;
63
0
    }
64
65
    int TestCapability(const char *) const override;
66
67
    GDALDataset *GetDataset() override;
68
};
69
70
/************************************************************************/
71
/*                          OGRILI2DataSource                           */
72
/************************************************************************/
73
74
class OGRILI2DataSource final : public GDALDataset
75
{
76
  private:
77
    char *pszName;
78
    ImdReader *poImdReader;
79
    IILI2Reader *poReader;
80
81
    int nLayers;
82
    OGRILI2Layer **papoLayers;
83
84
    CPL_DISALLOW_COPY_ASSIGN(OGRILI2DataSource)
85
86
  public:
87
    OGRILI2DataSource();
88
    ~OGRILI2DataSource() override;
89
90
    int Open(const char *, char **papszOpenOptions, int bTestOpen);
91
92
    int GetLayerCount() const override
93
677
    {
94
677
        return poReader->GetLayerCount();
95
677
    }
96
97
    using GDALDataset::GetLayer;
98
    const OGRLayer *GetLayer(int) const override;
99
100
    int TestCapability(const char *) const override;
101
};
102
103
#endif /* OGR_ILI2_H_INCLUDED */