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