Coverage Report

Created: 2025-07-23 09:13

/src/gdal/ogr/ogrsf_frmts/vfk/ogr_vfk.h
Line
Count
Source
1
/******************************************************************************
2
 *
3
 * Project:  OpenGIS Simple Features Reference Implementation
4
 * Purpose:  Private definitions for OGR/VFK driver.
5
 * Author:   Martin Landa, landa.martin gmail.com
6
 *
7
 ******************************************************************************
8
 * Copyright (c) 2009-2010, Martin Landa <landa.martin gmail.com>
9
 *
10
 * SPDX-License-Identifier: MIT
11
 ****************************************************************************/
12
13
#ifndef GDAL_OGR_VFK_H_INCLUDED
14
#define GDAL_OGR_VFK_H_INCLUDED
15
16
#include <map>
17
#include <string>
18
19
#include "ogrsf_frmts.h"
20
#include "vfkreader.h"
21
22
class OGRVFKDataSource;
23
24
/************************************************************************/
25
/*                            OGRVFKLayer                               */
26
/************************************************************************/
27
28
class OGRVFKLayer : public OGRLayer
29
{
30
  private:
31
    /* spatial reference */
32
    OGRSpatialReference *poSRS;
33
34
    /* feature definition */
35
    OGRFeatureDefn *poFeatureDefn;
36
37
    /* VFK data block */
38
    IVFKDataBlock *poDataBlock;
39
40
    /* get next feature */
41
    int m_iNextFeature;
42
43
    /* private methods */
44
    static const OGRGeometry *GetGeometry(IVFKFeature *);
45
    OGRFeature *GetFeature(IVFKFeature *);
46
47
  public:
48
    OGRVFKLayer(const char *, OGRSpatialReference *, OGRwkbGeometryType,
49
                OGRVFKDataSource *);
50
    ~OGRVFKLayer();
51
52
    OGRFeature *GetNextFeature() override;
53
    OGRFeature *GetFeature(GIntBig) override;
54
55
    OGRFeatureDefn *GetLayerDefn() override
56
134k
    {
57
134k
        return poFeatureDefn;
58
134k
    }
59
60
    void ResetReading() override;
61
62
    int TestCapability(const char *) override;
63
64
    GIntBig GetFeatureCount(int = TRUE) override;
65
};
66
67
/************************************************************************/
68
/*                           OGRVFKDataSource                           */
69
/************************************************************************/
70
class OGRVFKDataSource : public GDALDataset
71
{
72
  private:
73
    /* list of available layers */
74
    OGRVFKLayer **papoLayers;
75
    int nLayers;
76
77
    /* input related parameters */
78
    IVFKReader *poReader;
79
80
    /* private methods */
81
    OGRVFKLayer *CreateLayerFromBlock(const IVFKDataBlock *);
82
83
  public:
84
    OGRVFKDataSource();
85
    ~OGRVFKDataSource();
86
87
    int Open(GDALOpenInfo *poOpenInfo);
88
89
    int GetLayerCount() override
90
5.13k
    {
91
5.13k
        return nLayers;
92
5.13k
    }
93
94
    OGRLayer *GetLayer(int) override;
95
96
    int TestCapability(const char *) override;
97
98
    IVFKReader *GetReader() const
99
11.0k
    {
100
11.0k
        return poReader;
101
11.0k
    }
102
};
103
104
#endif  // GDAL_OGR_VFK_H_INCLUDED