Line data Source code
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 9479 : OGRFeatureDefn *GetLayerDefn() override 56 : { 57 9479 : return poFeatureDefn; 58 : } 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 160 : int GetLayerCount() override 90 : { 91 160 : return nLayers; 92 : } 93 : 94 : OGRLayer *GetLayer(int) override; 95 : 96 : int TestCapability(const char *) override; 97 : 98 976 : IVFKReader *GetReader() const 99 : { 100 976 : return poReader; 101 : } 102 : }; 103 : 104 : #endif // GDAL_OGR_VFK_H_INCLUDED